blob: 49b6e1a4d6e3e27163ccdc3984995522f6f3cb09 [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
Randolphb68bf222023-09-25 17:24:51 +080011config TARGET_ANDES_AE350
12 bool "Support Andes 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
Yanhong Wang331ad932023-03-29 11:42:20 +080027config TARGET_STARFIVE_VISIONFIVE2
28 bool "Support StarFive VisionFive2 Board"
Heinrich Schuchardt16dbe3d2023-09-07 13:21:28 +020029 select BOARD_LATE_INIT
Yanhong Wang331ad932023-03-29 11:42:20 +080030
Yixun Lan5f3a7fd2023-07-08 19:24:32 +080031config TARGET_TH1520_LPI4A
32 bool "Support Sipeed's TH1520 Lichee PI 4A Board"
33 select SYS_CACHE_SHIFT_6
34
Sean Andersona7c81fc2020-06-24 06:41:25 -040035config TARGET_SIPEED_MAIX
36 bool "Support Sipeed Maix Board"
Tom Riniab92b382021-08-26 11:47:59 -040037 select SYS_CACHE_SHIFT_6
Sean Andersona7c81fc2020-06-24 06:41:25 -040038
Tianrui Wei8a44fe62021-07-01 12:54:19 +080039config TARGET_OPENPITON_RISCV64
40 bool "Support RISC-V cores on OpenPiton SoC"
41
Rick Chenf94c44e2017-12-26 13:55:52 +080042endchoice
43
Trevor Woernera0aba8a2019-05-03 09:40:59 -040044config SYS_ICACHE_OFF
45 bool "Do not enable icache"
Trevor Woernera0aba8a2019-05-03 09:40:59 -040046 help
47 Do not enable instruction cache in U-Boot.
48
Trevor Woerner10015022019-05-03 09:41:00 -040049config SPL_SYS_ICACHE_OFF
50 bool "Do not enable icache in SPL"
51 depends on SPL
52 default SYS_ICACHE_OFF
53 help
54 Do not enable instruction cache in SPL.
55
Trevor Woernera0aba8a2019-05-03 09:40:59 -040056config SYS_DCACHE_OFF
57 bool "Do not enable dcache"
Trevor Woernera0aba8a2019-05-03 09:40:59 -040058 help
59 Do not enable data cache in U-Boot.
60
Trevor Woerner10015022019-05-03 09:41:00 -040061config SPL_SYS_DCACHE_OFF
62 bool "Do not enable dcache in SPL"
63 depends on SPL
64 default SYS_DCACHE_OFF
65 help
66 Do not enable data cache in SPL.
67
Shengyu Qud365f662023-08-09 21:11:31 +080068config SPL_ZERO_MEM_BEFORE_USE
69 bool "Zero memory before use"
70 depends on SPL
71 default n
72 help
73 Zero stack/GD/malloc area in SPL before using them, this is needed for
74 Sifive core devices that uses L2 cache to store SPL.
75
Rick Chen52923c62018-11-07 09:34:06 +080076# board-specific options below
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080077source "board/AndesTech/ae350/Kconfig"
Bin Meng510e3792018-09-26 06:55:21 -070078source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari39494822019-05-28 15:47:51 +053079source "board/microchip/mpfs_icicle/Kconfig"
Bin Mengae2d9502021-03-17 11:10:58 +080080source "board/sifive/unleashed/Kconfig"
Green Wan70415e12021-05-27 06:52:13 -070081source "board/sifive/unmatched/Kconfig"
Yixun Lan5f3a7fd2023-07-08 19:24:32 +080082source "board/thead/th1520_lpi4a/Kconfig"
Tianrui Wei8a44fe62021-07-01 12:54:19 +080083source "board/openpiton/riscv64/Kconfig"
Sean Andersona7c81fc2020-06-24 06:41:25 -040084source "board/sipeed/maix/Kconfig"
Yanhong Wang331ad932023-03-29 11:42:20 +080085source "board/starfive/visionfive2/Kconfig"
Rick Chenf94c44e2017-12-26 13:55:52 +080086
Rick Chen52923c62018-11-07 09:34:06 +080087# platform-specific options below
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080088source "arch/riscv/cpu/andesv5/Kconfig"
Pragnesh Patel7c45fc92020-05-29 11:33:34 +053089source "arch/riscv/cpu/fu540/Kconfig"
Green Wana74e9d82021-05-27 06:52:07 -070090source "arch/riscv/cpu/fu740/Kconfig"
Anup Patelfdff1f92019-02-25 08:14:10 +000091source "arch/riscv/cpu/generic/Kconfig"
Yanhong Wang331ad932023-03-29 11:42:20 +080092source "arch/riscv/cpu/jh7110/Kconfig"
Rick Chen52923c62018-11-07 09:34:06 +080093
94# architecture-specific options below
95
Rick Chenf94c44e2017-12-26 13:55:52 +080096choice
Lukas Auer862e2e72018-11-22 11:26:12 +010097 prompt "Base ISA"
98 default ARCH_RV32I
Rick Chenf94c44e2017-12-26 13:55:52 +080099
Lukas Auer862e2e72018-11-22 11:26:12 +0100100config ARCH_RV32I
101 bool "RV32I"
Rick Chenf94c44e2017-12-26 13:55:52 +0800102 select 32BIT
103 help
Lukas Auer862e2e72018-11-22 11:26:12 +0100104 Choose this option to target the RV32I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +0800105
Lukas Auer862e2e72018-11-22 11:26:12 +0100106config ARCH_RV64I
107 bool "RV64I"
Rick Chenf94c44e2017-12-26 13:55:52 +0800108 select 64BIT
Lukas Auer71158562018-11-22 11:26:13 +0100109 select PHYS_64BIT
Rick Chenf94c44e2017-12-26 13:55:52 +0800110 help
Lukas Auer862e2e72018-11-22 11:26:12 +0100111 Choose this option to target the RV64I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +0800112
113endchoice
114
Lukas Auer8176ea42018-12-12 06:12:23 -0800115choice
116 prompt "Code Model"
117 default CMODEL_MEDLOW
118
119config CMODEL_MEDLOW
120 bool "medium low code model"
121 help
122 U-Boot and its statically defined symbols must lie within a single 2 GiB
123 address range and must lie between absolute addresses -2 GiB and +2 GiB.
124
125config CMODEL_MEDANY
126 bool "medium any code model"
127 help
128 U-Boot and its statically defined symbols must be within any single 2 GiB
129 address range.
130
131endchoice
132
Anup Patel3cfc8252018-12-12 06:12:29 -0800133choice
134 prompt "Run Mode"
135 default RISCV_MMODE
136
137config RISCV_MMODE
138 bool "Machine"
139 help
140 Choose this option to build U-Boot for RISC-V M-Mode.
141
142config RISCV_SMODE
143 bool "Supervisor"
Heinrich Schuchardte637e452023-09-23 01:35:26 +0200144 imply DEBUG_UART
Anup Patel3cfc8252018-12-12 06:12:29 -0800145 help
146 Choose this option to build U-Boot for RISC-V S-Mode.
147
148endchoice
149
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200150choice
151 prompt "SPL Run Mode"
152 default SPL_RISCV_MMODE
153 depends on SPL
154
155config SPL_RISCV_MMODE
156 bool "Machine"
157 help
158 Choose this option to build U-Boot SPL for RISC-V M-Mode.
159
160config SPL_RISCV_SMODE
161 bool "Supervisor"
162 help
163 Choose this option to build U-Boot SPL for RISC-V S-Mode.
164
165endchoice
166
Lukas Auerd57ffa62018-11-22 11:26:14 +0100167config RISCV_ISA_C
168 bool "Emit compressed instructions"
169 default y
170 help
171 Adds "C" to the ISA subsets that the toolchain is allowed to emit
172 when building U-Boot, which results in compressed instructions in the
173 U-Boot binary.
174
Heinrich Schuchardte67f34f2022-10-12 14:59:51 +0200175config RISCV_ISA_F
176 bool "Standard extension for Single-Precision Floating Point"
177 default y
178 help
179 Adds "F" to the ISA string passed to the compiler.
180
181config RISCV_ISA_D
182 bool "Standard extension for Double-Precision Floating Point"
183 depends on RISCV_ISA_F
184 default y
185 help
186 Adds "D" to the ISA string passed to the compiler and changes the
187 riscv32 ABI from ilp32 to ilp32d and the riscv64 ABI from lp64 to
188 lp64d.
189
Lukas Auerd57ffa62018-11-22 11:26:14 +0100190config RISCV_ISA_A
191 def_bool y
192
Rick Chenf94c44e2017-12-26 13:55:52 +0800193config 32BIT
194 bool
195
196config 64BIT
197 bool
198
Padmarao Begari5af35742021-01-15 08:20:35 +0530199config DMA_ADDR_T_64BIT
200 bool
201 default y if 64BIT
202
Bin Meng9675d922023-06-21 23:11:46 +0800203config RISCV_ACLINT
Bin Meng644a3cd2018-12-12 06:12:30 -0800204 bool
Bin Menga6d7e8c2021-05-11 20:04:12 +0800205 depends on RISCV_MMODE
Bin Meng7f1a30f2023-06-21 23:11:45 +0800206 select REGMAP
207 select SYSCON
Bin Menga6d7e8c2021-05-11 20:04:12 +0800208 help
Bin Meng9675d922023-06-21 23:11:46 +0800209 The RISC-V ACLINT block holds memory-mapped control and status registers
Bin Menga6d7e8c2021-05-11 20:04:12 +0800210 associated with software and timer interrupts.
211
Bin Meng9675d922023-06-21 23:11:46 +0800212config SPL_RISCV_ACLINT
Bin Menga6d7e8c2021-05-11 20:04:12 +0800213 bool
214 depends on SPL_RISCV_MMODE
Bin Meng7f1a30f2023-06-21 23:11:45 +0800215 select SPL_REGMAP
216 select SPL_SYSCON
Bin Meng644a3cd2018-12-12 06:12:30 -0800217 help
Bin Meng9675d922023-06-21 23:11:46 +0800218 The RISC-V ACLINT block holds memory-mapped control and status registers
Bin Meng644a3cd2018-12-12 06:12:30 -0800219 associated with software and timer interrupts.
220
Zong Li213ed172021-09-01 15:01:41 +0800221config SIFIVE_CACHE
222 bool
223 help
224 This enables the operations to configure SiFive cache
225
Yu Chien Peter Lina5dfa3b2022-10-25 23:03:50 +0800226config ANDES_PLICSW
Rick Chen0d389462019-04-02 15:56:39 +0800227 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200228 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen0d389462019-04-02 15:56:39 +0800229 select REGMAP
230 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200231 select SPL_REGMAP if SPL
232 select SPL_SYSCON if SPL
Rick Chen0d389462019-04-02 15:56:39 +0800233 help
Yu Chien Peter Lina5dfa3b2022-10-25 23:03:50 +0800234 The Andes PLICSW block holds memory-mapped claim and pending
235 registers associated with software interrupt.
Rick Chen0d389462019-04-02 15:56:39 +0800236
Lukas Auerfa33f082019-03-17 19:28:32 +0100237config SMP
238 bool "Symmetric Multi-Processing"
Bin Meng6fa022e2020-04-16 08:09:31 -0700239 depends on SBI_V01 || !RISCV_SMODE
Lukas Auerfa33f082019-03-17 19:28:32 +0100240 help
241 This enables support for systems with more than one CPU. If
242 you say N here, U-Boot will run on single and multiprocessor
243 machines, but will use only one CPU of a multiprocessor
244 machine. If you say Y here, U-Boot will run on many, but not
245 all, single processor machines.
246
Bin Meng191636e2020-04-16 08:09:30 -0700247config SPL_SMP
248 bool "Symmetric Multi-Processing in SPL"
249 depends on SPL && SPL_RISCV_MMODE
250 default y
251 help
252 This enables support for systems with more than one CPU in SPL.
253 If you say N here, U-Boot SPL will run on single and multiprocessor
254 machines, but will use only one CPU of a multiprocessor
255 machine. If you say Y here, U-Boot SPL will run on many, but not
256 all, single processor machines.
257
Lukas Auerfa33f082019-03-17 19:28:32 +0100258config NR_CPUS
259 int "Maximum number of CPUs (2-32)"
260 range 2 32
Bin Meng191636e2020-04-16 08:09:30 -0700261 depends on SMP || SPL_SMP
Lukas Auerfa33f082019-03-17 19:28:32 +0100262 default 8
263 help
264 On multiprocessor machines, U-Boot sets up a stack for each CPU.
265 Stack memory is pre-allocated. U-Boot must therefore know the
266 maximum number of CPUs that may be present.
267
Bin Mengf58fc342020-03-09 19:35:28 -0700268config SBI
269 bool
270 default y if RISCV_SMODE || SPL_RISCV_SMODE
271
Bin Mengff0fa6c2020-04-16 08:09:32 -0700272choice
273 prompt "SBI support"
Bin Mengfa16ec22020-04-16 08:09:33 -0700274 default SBI_V02
Bin Mengff0fa6c2020-04-16 08:09:32 -0700275
Bin Meng1b3c8d62020-03-09 19:35:30 -0700276config SBI_V01
277 bool "SBI v0.1 support"
Bin Meng1b3c8d62020-03-09 19:35:30 -0700278 depends on SBI
279 help
280 This config allows kernel to use SBI v0.1 APIs. This will be
281 deprecated in future once legacy M-mode software are no longer in use.
282
Bin Mengff0fa6c2020-04-16 08:09:32 -0700283config SBI_V02
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100284 bool "SBI v0.2 or later support"
Bin Mengff0fa6c2020-04-16 08:09:32 -0700285 depends on SBI
286 help
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100287 The SBI specification introduced the concept of extensions in version
288 v0.2. With this configuration option U-Boot can detect and use SBI
289 extensions. With the HSM extension introduced in SBI 0.2, only a
290 single hart needs to boot and enter the operating system. The booting
291 hart can bring up secondary harts one by one afterwards.
Bin Mengff0fa6c2020-04-16 08:09:32 -0700292
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100293 Choose this option if OpenSBI release v0.7 or above is used together
Bin Mengff0fa6c2020-04-16 08:09:32 -0700294 with U-Boot.
295
296endchoice
297
Lukas Auerf152feb2019-03-17 19:28:34 +0100298config SBI_IPI
299 bool
Bin Mengf58fc342020-03-09 19:35:28 -0700300 depends on SBI
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200301 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auerf152feb2019-03-17 19:28:34 +0100302 depends on SMP
303
Rick Chenbdce3892019-04-30 13:49:33 +0800304config XIP
305 bool "XIP mode"
306 help
307 XIP (eXecute In Place) is a method for executing code directly
308 from a NOR flash memory without copying the code to ram.
309 Say yes here if U-Boot boots from flash directly.
310
Nikita Shubinc2bdf022022-09-02 11:47:39 +0300311config SPL_XIP
312 bool "Enable XIP mode for SPL"
313 help
314 If SPL starts in read-only memory (XIP for example) then we shouldn't
315 rely on lock variables (for example hart_lottery and available_harts_lock),
316 this affects only SPL, other stages should proceed as non-XIP.
317
Rick Chene0465f82022-09-21 14:34:54 +0800318config AVAILABLE_HARTS
319 bool "Send IPI by available harts"
320 default y
321 help
322 By default, IPI sending mechanism will depend on available_harts.
323 If disable this, it will send IPI by CPUs node numbers of device tree.
324
Sean Andersonfd1f6e92019-12-25 00:27:44 -0500325config SHOW_REGS
326 bool "Show registers on unhandled exception"
327
Sean Andersonb8bc1202020-06-24 06:41:19 -0400328config RISCV_PRIV_1_9
329 bool "Use version 1.9 of the RISC-V priviledged specification"
330 help
331 Older versions of the RISC-V priviledged specification had
332 separate counter enable CSRs for each privilege mode. Writing
333 to the unified mcounteren CSR on a processor implementing the
334 old specification will result in an illegal instruction
335 exception. In addition to counter CSR changes, the way virtual
336 memory is configured was also changed.
337
Lukas Auer3dea63c2019-03-17 19:28:37 +0100338config STACK_SIZE_SHIFT
339 int
Lukas Auer6b20dc12019-10-20 20:53:47 +0200340 default 14
Lukas Auer3dea63c2019-03-17 19:28:37 +0100341
Bin Meng1c17e552020-06-25 18:16:08 -0700342config OF_BOARD_FIXUP
Sean Anderson32cef692020-09-05 09:22:11 -0400343 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng1c17e552020-06-25 18:16:08 -0700344
Bin Meng89419272021-05-13 16:46:18 +0800345menu "Use assembly optimized implementation of memory routines"
346
Heinrich Schuchardt8f0dc4c2021-03-27 12:37:04 +0100347config USE_ARCH_MEMCPY
348 bool "Use an assembly optimized implementation of memcpy"
349 default y
350 help
351 Enable the generation of an optimized version of memcpy.
352 Such an implementation may be faster under some conditions
353 but may increase the binary size.
354
355config SPL_USE_ARCH_MEMCPY
356 bool "Use an assembly optimized implementation of memcpy for SPL"
357 default y if USE_ARCH_MEMCPY
358 depends on SPL
359 help
360 Enable the generation of an optimized version of memcpy.
361 Such an implementation may be faster under some conditions
362 but may increase the binary size.
363
364config TPL_USE_ARCH_MEMCPY
365 bool "Use an assembly optimized implementation of memcpy for TPL"
366 default y if USE_ARCH_MEMCPY
367 depends on TPL
368 help
369 Enable the generation of an optimized version of memcpy.
370 Such an implementation may be faster under some conditions
371 but may increase the binary size.
372
373config USE_ARCH_MEMMOVE
374 bool "Use an assembly optimized implementation of memmove"
375 default y
376 help
377 Enable the generation of an optimized version of memmove.
378 Such an implementation may be faster under some conditions
379 but may increase the binary size.
380
381config SPL_USE_ARCH_MEMMOVE
382 bool "Use an assembly optimized implementation of memmove for SPL"
383 default y if USE_ARCH_MEMCPY
384 depends on SPL
385 help
386 Enable the generation of an optimized version of memmove.
387 Such an implementation may be faster under some conditions
388 but may increase the binary size.
389
390config TPL_USE_ARCH_MEMMOVE
391 bool "Use an assembly optimized implementation of memmove for TPL"
392 default y if USE_ARCH_MEMCPY
393 depends on TPL
394 help
395 Enable the generation of an optimized version of memmove.
396 Such an implementation may be faster under some conditions
397 but may increase the binary size.
398
399config USE_ARCH_MEMSET
400 bool "Use an assembly optimized implementation of memset"
401 default y
402 help
403 Enable the generation of an optimized version of memset.
404 Such an implementation may be faster under some conditions
405 but may increase the binary size.
406
407config SPL_USE_ARCH_MEMSET
408 bool "Use an assembly optimized implementation of memset for SPL"
409 default y if USE_ARCH_MEMSET
410 depends on SPL
411 help
412 Enable the generation of an optimized version of memset.
413 Such an implementation may be faster under some conditions
414 but may increase the binary size.
415
416config TPL_USE_ARCH_MEMSET
417 bool "Use an assembly optimized implementation of memset for TPL"
418 default y if USE_ARCH_MEMSET
419 depends on TPL
420 help
421 Enable the generation of an optimized version of memset.
422 Such an implementation may be faster under some conditions
423 but may increase the binary size.
424
Rick Chenf94c44e2017-12-26 13:55:52 +0800425endmenu
Bin Meng89419272021-05-13 16:46:18 +0800426
Randolphe09a2282023-10-12 14:35:04 +0800427config SPL_LOAD_FIT_OPENSBI_OS_BOOT
428 bool "Enable SPL (OpenSBI OS boot mode) applying linux from FIT"
429 depends on SPL_LOAD_FIT
430 help
431 Use fw_dynamic from the FIT image, and u-boot SPL will invoke it directly.
432 This is a shortcut boot flow, from u-boot SPL -> OpenSBI -> u-boot proper
433 -> linux to u-boot SPL -> OpenSBI -> linux.
434
Bin Meng89419272021-05-13 16:46:18 +0800435endmenu