blob: 48ca4ff4c4ec648dee60af29d37ff9c81dc1e8c8 [file] [log] [blame]
Bin Meng117a4332018-09-26 06:55:06 -07001menu "RISC-V architecture"
Rick Chenf94c44e2017-12-26 13:55:52 +08002 depends on RISCV
3
4config SYS_ARCH
5 default "riscv"
6
7choice
8 prompt "Target select"
9 optional
10
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080011config TARGET_AE350
12 bool "Support ae350"
Rick Chenf94c44e2017-12-26 13:55:52 +080013
Padmarao Begari39494822019-05-28 15:47:51 +053014config TARGET_MICROCHIP_ICICLE
15 bool "Support Microchip PolarFire-SoC Icicle Board"
16
Bin Meng510e3792018-09-26 06:55:21 -070017config TARGET_QEMU_VIRT
18 bool "Support QEMU Virt Board"
19
Bin Mengae2d9502021-03-17 11:10:58 +080020config TARGET_SIFIVE_UNLEASHED
21 bool "Support SiFive Unleashed Board"
Anup Patel3fda0262019-02-25 08:15:19 +000022
Green Wan70415e12021-05-27 06:52:13 -070023config TARGET_SIFIVE_UNMATCHED
24 bool "Support SiFive Unmatched Board"
Tom Riniab92b382021-08-26 11:47:59 -040025 select SYS_CACHE_SHIFT_6
Green Wan70415e12021-05-27 06:52:13 -070026
Sean Andersona7c81fc2020-06-24 06:41:25 -040027config TARGET_SIPEED_MAIX
28 bool "Support Sipeed Maix Board"
Tom Riniab92b382021-08-26 11:47:59 -040029 select SYS_CACHE_SHIFT_6
Sean Andersona7c81fc2020-06-24 06:41:25 -040030
Tianrui Wei8a44fe62021-07-01 12:54:19 +080031config TARGET_OPENPITON_RISCV64
32 bool "Support RISC-V cores on OpenPiton SoC"
33
Rick Chenf94c44e2017-12-26 13:55:52 +080034endchoice
35
Trevor Woernera0aba8a2019-05-03 09:40:59 -040036config SYS_ICACHE_OFF
37 bool "Do not enable icache"
Trevor Woernera0aba8a2019-05-03 09:40:59 -040038 help
39 Do not enable instruction cache in U-Boot.
40
Trevor Woerner10015022019-05-03 09:41:00 -040041config SPL_SYS_ICACHE_OFF
42 bool "Do not enable icache in SPL"
43 depends on SPL
44 default SYS_ICACHE_OFF
45 help
46 Do not enable instruction cache in SPL.
47
Trevor Woernera0aba8a2019-05-03 09:40:59 -040048config SYS_DCACHE_OFF
49 bool "Do not enable dcache"
Trevor Woernera0aba8a2019-05-03 09:40:59 -040050 help
51 Do not enable data cache in U-Boot.
52
Trevor Woerner10015022019-05-03 09:41:00 -040053config SPL_SYS_DCACHE_OFF
54 bool "Do not enable dcache in SPL"
55 depends on SPL
56 default SYS_DCACHE_OFF
57 help
58 Do not enable data cache in SPL.
59
Rick Chen52923c62018-11-07 09:34:06 +080060# board-specific options below
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080061source "board/AndesTech/ae350/Kconfig"
Bin Meng510e3792018-09-26 06:55:21 -070062source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari39494822019-05-28 15:47:51 +053063source "board/microchip/mpfs_icicle/Kconfig"
Bin Mengae2d9502021-03-17 11:10:58 +080064source "board/sifive/unleashed/Kconfig"
Green Wan70415e12021-05-27 06:52:13 -070065source "board/sifive/unmatched/Kconfig"
Tianrui Wei8a44fe62021-07-01 12:54:19 +080066source "board/openpiton/riscv64/Kconfig"
Sean Andersona7c81fc2020-06-24 06:41:25 -040067source "board/sipeed/maix/Kconfig"
Rick Chenf94c44e2017-12-26 13:55:52 +080068
Rick Chen52923c62018-11-07 09:34:06 +080069# platform-specific options below
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080070source "arch/riscv/cpu/andesv5/Kconfig"
Pragnesh Patel7c45fc92020-05-29 11:33:34 +053071source "arch/riscv/cpu/fu540/Kconfig"
Green Wana74e9d82021-05-27 06:52:07 -070072source "arch/riscv/cpu/fu740/Kconfig"
Anup Patelfdff1f92019-02-25 08:14:10 +000073source "arch/riscv/cpu/generic/Kconfig"
Rick Chen52923c62018-11-07 09:34:06 +080074
75# architecture-specific options below
76
Rick Chenf94c44e2017-12-26 13:55:52 +080077choice
Lukas Auer862e2e72018-11-22 11:26:12 +010078 prompt "Base ISA"
79 default ARCH_RV32I
Rick Chenf94c44e2017-12-26 13:55:52 +080080
Lukas Auer862e2e72018-11-22 11:26:12 +010081config ARCH_RV32I
82 bool "RV32I"
Rick Chenf94c44e2017-12-26 13:55:52 +080083 select 32BIT
84 help
Lukas Auer862e2e72018-11-22 11:26:12 +010085 Choose this option to target the RV32I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080086
Lukas Auer862e2e72018-11-22 11:26:12 +010087config ARCH_RV64I
88 bool "RV64I"
Rick Chenf94c44e2017-12-26 13:55:52 +080089 select 64BIT
Lukas Auer71158562018-11-22 11:26:13 +010090 select PHYS_64BIT
Rick Chenf94c44e2017-12-26 13:55:52 +080091 help
Lukas Auer862e2e72018-11-22 11:26:12 +010092 Choose this option to target the RV64I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080093
94endchoice
95
Lukas Auer8176ea42018-12-12 06:12:23 -080096choice
97 prompt "Code Model"
98 default CMODEL_MEDLOW
99
100config CMODEL_MEDLOW
101 bool "medium low code model"
102 help
103 U-Boot and its statically defined symbols must lie within a single 2 GiB
104 address range and must lie between absolute addresses -2 GiB and +2 GiB.
105
106config CMODEL_MEDANY
107 bool "medium any code model"
108 help
109 U-Boot and its statically defined symbols must be within any single 2 GiB
110 address range.
111
112endchoice
113
Anup Patel3cfc8252018-12-12 06:12:29 -0800114choice
115 prompt "Run Mode"
116 default RISCV_MMODE
117
118config RISCV_MMODE
119 bool "Machine"
120 help
121 Choose this option to build U-Boot for RISC-V M-Mode.
122
123config RISCV_SMODE
124 bool "Supervisor"
125 help
126 Choose this option to build U-Boot for RISC-V S-Mode.
127
128endchoice
129
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200130choice
131 prompt "SPL Run Mode"
132 default SPL_RISCV_MMODE
133 depends on SPL
134
135config SPL_RISCV_MMODE
136 bool "Machine"
137 help
138 Choose this option to build U-Boot SPL for RISC-V M-Mode.
139
140config SPL_RISCV_SMODE
141 bool "Supervisor"
142 help
143 Choose this option to build U-Boot SPL for RISC-V S-Mode.
144
145endchoice
146
Lukas Auerd57ffa62018-11-22 11:26:14 +0100147config RISCV_ISA_C
148 bool "Emit compressed instructions"
149 default y
150 help
151 Adds "C" to the ISA subsets that the toolchain is allowed to emit
152 when building U-Boot, which results in compressed instructions in the
153 U-Boot binary.
154
Heinrich Schuchardte67f34f2022-10-12 14:59:51 +0200155config RISCV_ISA_F
156 bool "Standard extension for Single-Precision Floating Point"
157 default y
158 help
159 Adds "F" to the ISA string passed to the compiler.
160
161config RISCV_ISA_D
162 bool "Standard extension for Double-Precision Floating Point"
163 depends on RISCV_ISA_F
164 default y
165 help
166 Adds "D" to the ISA string passed to the compiler and changes the
167 riscv32 ABI from ilp32 to ilp32d and the riscv64 ABI from lp64 to
168 lp64d.
169
Lukas Auerd57ffa62018-11-22 11:26:14 +0100170config RISCV_ISA_A
171 def_bool y
172
Rick Chenf94c44e2017-12-26 13:55:52 +0800173config 32BIT
174 bool
175
176config 64BIT
177 bool
178
Padmarao Begari5af35742021-01-15 08:20:35 +0530179config DMA_ADDR_T_64BIT
180 bool
181 default y if 64BIT
182
Bin Meng644a3cd2018-12-12 06:12:30 -0800183config SIFIVE_CLINT
184 bool
Bin Menga6d7e8c2021-05-11 20:04:12 +0800185 depends on RISCV_MMODE
186 help
187 The SiFive CLINT block holds memory-mapped control and status registers
188 associated with software and timer interrupts.
189
190config SPL_SIFIVE_CLINT
191 bool
192 depends on SPL_RISCV_MMODE
Bin Meng644a3cd2018-12-12 06:12:30 -0800193 help
194 The SiFive CLINT block holds memory-mapped control and status registers
195 associated with software and timer interrupts.
196
Zong Li213ed172021-09-01 15:01:41 +0800197config SIFIVE_CACHE
198 bool
199 help
200 This enables the operations to configure SiFive cache
201
Yu Chien Peter Lina5dfa3b2022-10-25 23:03:50 +0800202config ANDES_PLICSW
Rick Chen0d389462019-04-02 15:56:39 +0800203 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200204 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen0d389462019-04-02 15:56:39 +0800205 select REGMAP
206 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200207 select SPL_REGMAP if SPL
208 select SPL_SYSCON if SPL
Rick Chen0d389462019-04-02 15:56:39 +0800209 help
Yu Chien Peter Lina5dfa3b2022-10-25 23:03:50 +0800210 The Andes PLICSW block holds memory-mapped claim and pending
211 registers associated with software interrupt.
Rick Chen0d389462019-04-02 15:56:39 +0800212
Lukas Auerfa33f082019-03-17 19:28:32 +0100213config SMP
214 bool "Symmetric Multi-Processing"
Bin Meng6fa022e2020-04-16 08:09:31 -0700215 depends on SBI_V01 || !RISCV_SMODE
Lukas Auerfa33f082019-03-17 19:28:32 +0100216 help
217 This enables support for systems with more than one CPU. If
218 you say N here, U-Boot will run on single and multiprocessor
219 machines, but will use only one CPU of a multiprocessor
220 machine. If you say Y here, U-Boot will run on many, but not
221 all, single processor machines.
222
Bin Meng191636e2020-04-16 08:09:30 -0700223config SPL_SMP
224 bool "Symmetric Multi-Processing in SPL"
225 depends on SPL && SPL_RISCV_MMODE
226 default y
227 help
228 This enables support for systems with more than one CPU in SPL.
229 If you say N here, U-Boot SPL will run on single and multiprocessor
230 machines, but will use only one CPU of a multiprocessor
231 machine. If you say Y here, U-Boot SPL will run on many, but not
232 all, single processor machines.
233
Lukas Auerfa33f082019-03-17 19:28:32 +0100234config NR_CPUS
235 int "Maximum number of CPUs (2-32)"
236 range 2 32
Bin Meng191636e2020-04-16 08:09:30 -0700237 depends on SMP || SPL_SMP
Lukas Auerfa33f082019-03-17 19:28:32 +0100238 default 8
239 help
240 On multiprocessor machines, U-Boot sets up a stack for each CPU.
241 Stack memory is pre-allocated. U-Boot must therefore know the
242 maximum number of CPUs that may be present.
243
Bin Mengf58fc342020-03-09 19:35:28 -0700244config SBI
245 bool
246 default y if RISCV_SMODE || SPL_RISCV_SMODE
247
Bin Mengff0fa6c2020-04-16 08:09:32 -0700248choice
249 prompt "SBI support"
Bin Mengfa16ec22020-04-16 08:09:33 -0700250 default SBI_V02
Bin Mengff0fa6c2020-04-16 08:09:32 -0700251
Bin Meng1b3c8d62020-03-09 19:35:30 -0700252config SBI_V01
253 bool "SBI v0.1 support"
Bin Meng1b3c8d62020-03-09 19:35:30 -0700254 depends on SBI
255 help
256 This config allows kernel to use SBI v0.1 APIs. This will be
257 deprecated in future once legacy M-mode software are no longer in use.
258
Bin Mengff0fa6c2020-04-16 08:09:32 -0700259config SBI_V02
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100260 bool "SBI v0.2 or later support"
Bin Mengff0fa6c2020-04-16 08:09:32 -0700261 depends on SBI
262 help
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100263 The SBI specification introduced the concept of extensions in version
264 v0.2. With this configuration option U-Boot can detect and use SBI
265 extensions. With the HSM extension introduced in SBI 0.2, only a
266 single hart needs to boot and enter the operating system. The booting
267 hart can bring up secondary harts one by one afterwards.
Bin Mengff0fa6c2020-04-16 08:09:32 -0700268
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100269 Choose this option if OpenSBI release v0.7 or above is used together
Bin Mengff0fa6c2020-04-16 08:09:32 -0700270 with U-Boot.
271
272endchoice
273
Lukas Auerf152feb2019-03-17 19:28:34 +0100274config SBI_IPI
275 bool
Bin Mengf58fc342020-03-09 19:35:28 -0700276 depends on SBI
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200277 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auerf152feb2019-03-17 19:28:34 +0100278 depends on SMP
279
Rick Chenbdce3892019-04-30 13:49:33 +0800280config XIP
281 bool "XIP mode"
282 help
283 XIP (eXecute In Place) is a method for executing code directly
284 from a NOR flash memory without copying the code to ram.
285 Say yes here if U-Boot boots from flash directly.
286
Nikita Shubinc2bdf022022-09-02 11:47:39 +0300287config SPL_XIP
288 bool "Enable XIP mode for SPL"
289 help
290 If SPL starts in read-only memory (XIP for example) then we shouldn't
291 rely on lock variables (for example hart_lottery and available_harts_lock),
292 this affects only SPL, other stages should proceed as non-XIP.
293
Rick Chene0465f82022-09-21 14:34:54 +0800294config AVAILABLE_HARTS
295 bool "Send IPI by available harts"
296 default y
297 help
298 By default, IPI sending mechanism will depend on available_harts.
299 If disable this, it will send IPI by CPUs node numbers of device tree.
300
Sean Andersonfd1f6e92019-12-25 00:27:44 -0500301config SHOW_REGS
302 bool "Show registers on unhandled exception"
303
Sean Andersonb8bc1202020-06-24 06:41:19 -0400304config RISCV_PRIV_1_9
305 bool "Use version 1.9 of the RISC-V priviledged specification"
306 help
307 Older versions of the RISC-V priviledged specification had
308 separate counter enable CSRs for each privilege mode. Writing
309 to the unified mcounteren CSR on a processor implementing the
310 old specification will result in an illegal instruction
311 exception. In addition to counter CSR changes, the way virtual
312 memory is configured was also changed.
313
Lukas Auer3dea63c2019-03-17 19:28:37 +0100314config STACK_SIZE_SHIFT
315 int
Lukas Auer6b20dc12019-10-20 20:53:47 +0200316 default 14
Lukas Auer3dea63c2019-03-17 19:28:37 +0100317
Bin Meng1c17e552020-06-25 18:16:08 -0700318config OF_BOARD_FIXUP
Sean Anderson32cef692020-09-05 09:22:11 -0400319 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng1c17e552020-06-25 18:16:08 -0700320
Bin Meng89419272021-05-13 16:46:18 +0800321menu "Use assembly optimized implementation of memory routines"
322
Heinrich Schuchardt8f0dc4c2021-03-27 12:37:04 +0100323config USE_ARCH_MEMCPY
324 bool "Use an assembly optimized implementation of memcpy"
325 default y
326 help
327 Enable the generation of an optimized version of memcpy.
328 Such an implementation may be faster under some conditions
329 but may increase the binary size.
330
331config SPL_USE_ARCH_MEMCPY
332 bool "Use an assembly optimized implementation of memcpy for SPL"
333 default y if USE_ARCH_MEMCPY
334 depends on SPL
335 help
336 Enable the generation of an optimized version of memcpy.
337 Such an implementation may be faster under some conditions
338 but may increase the binary size.
339
340config TPL_USE_ARCH_MEMCPY
341 bool "Use an assembly optimized implementation of memcpy for TPL"
342 default y if USE_ARCH_MEMCPY
343 depends on TPL
344 help
345 Enable the generation of an optimized version of memcpy.
346 Such an implementation may be faster under some conditions
347 but may increase the binary size.
348
349config USE_ARCH_MEMMOVE
350 bool "Use an assembly optimized implementation of memmove"
351 default y
352 help
353 Enable the generation of an optimized version of memmove.
354 Such an implementation may be faster under some conditions
355 but may increase the binary size.
356
357config SPL_USE_ARCH_MEMMOVE
358 bool "Use an assembly optimized implementation of memmove for SPL"
359 default y if USE_ARCH_MEMCPY
360 depends on SPL
361 help
362 Enable the generation of an optimized version of memmove.
363 Such an implementation may be faster under some conditions
364 but may increase the binary size.
365
366config TPL_USE_ARCH_MEMMOVE
367 bool "Use an assembly optimized implementation of memmove for TPL"
368 default y if USE_ARCH_MEMCPY
369 depends on TPL
370 help
371 Enable the generation of an optimized version of memmove.
372 Such an implementation may be faster under some conditions
373 but may increase the binary size.
374
375config USE_ARCH_MEMSET
376 bool "Use an assembly optimized implementation of memset"
377 default y
378 help
379 Enable the generation of an optimized version of memset.
380 Such an implementation may be faster under some conditions
381 but may increase the binary size.
382
383config SPL_USE_ARCH_MEMSET
384 bool "Use an assembly optimized implementation of memset for SPL"
385 default y if USE_ARCH_MEMSET
386 depends on SPL
387 help
388 Enable the generation of an optimized version of memset.
389 Such an implementation may be faster under some conditions
390 but may increase the binary size.
391
392config TPL_USE_ARCH_MEMSET
393 bool "Use an assembly optimized implementation of memset for TPL"
394 default y if USE_ARCH_MEMSET
395 depends on TPL
396 help
397 Enable the generation of an optimized version of memset.
398 Such an implementation may be faster under some conditions
399 but may increase the binary size.
400
Rick Chenf94c44e2017-12-26 13:55:52 +0800401endmenu
Bin Meng89419272021-05-13 16:46:18 +0800402
403endmenu