blob: 1c62c2345b015417485c2bbbaf41de0b3c351a44 [file] [log] [blame]
Bin Meng6b697752018-09-26 06:55:06 -07001menu "RISC-V architecture"
Rick Chen64d4ead2017-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 Liang249ce732023-02-14 20:42:49 +080011config TARGET_AE350
12 bool "Support ae350"
Rick Chen64d4ead2017-12-26 13:55:52 +080013
Padmarao Begari4216f342019-05-28 15:47:51 +053014config TARGET_MICROCHIP_ICICLE
15 bool "Support Microchip PolarFire-SoC Icicle Board"
16
Bin Meng8a8694d2018-09-26 06:55:21 -070017config TARGET_QEMU_VIRT
18 bool "Support QEMU Virt Board"
19
Bin Menge9ead4a2021-03-17 11:10:58 +080020config TARGET_SIFIVE_UNLEASHED
21 bool "Support SiFive Unleashed Board"
Anup Patel7a167f22019-02-25 08:15:19 +000022
Green Wan2e5da522021-05-27 06:52:13 -070023config TARGET_SIFIVE_UNMATCHED
24 bool "Support SiFive Unmatched Board"
Tom Rini3ef67ae2021-08-26 11:47:59 -040025 select SYS_CACHE_SHIFT_6
Green Wan2e5da522021-05-27 06:52:13 -070026
Yanhong Wang38678792023-03-29 11:42:20 +080027config TARGET_STARFIVE_VISIONFIVE2
28 bool "Support StarFive VisionFive2 Board"
Heinrich Schuchardt329cd572023-09-07 13:21:28 +020029 select BOARD_LATE_INIT
Yanhong Wang38678792023-03-29 11:42:20 +080030
Yixun Lan5dfa9012023-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 Andersonedc32ab2020-06-24 06:41:25 -040035config TARGET_SIPEED_MAIX
36 bool "Support Sipeed Maix Board"
Tom Rini3ef67ae2021-08-26 11:47:59 -040037 select SYS_CACHE_SHIFT_6
Sean Andersonedc32ab2020-06-24 06:41:25 -040038
Tianrui Wei2ef594d2021-07-01 12:54:19 +080039config TARGET_OPENPITON_RISCV64
40 bool "Support RISC-V cores on OpenPiton SoC"
41
Rick Chen64d4ead2017-12-26 13:55:52 +080042endchoice
43
Trevor Woernerba64b8b2019-05-03 09:40:59 -040044config SYS_ICACHE_OFF
45 bool "Do not enable icache"
Trevor Woernerba64b8b2019-05-03 09:40:59 -040046 help
47 Do not enable instruction cache in U-Boot.
48
Trevor Woerner43ec7e02019-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 Woernerba64b8b2019-05-03 09:40:59 -040056config SYS_DCACHE_OFF
57 bool "Do not enable dcache"
Trevor Woernerba64b8b2019-05-03 09:40:59 -040058 help
59 Do not enable data cache in U-Boot.
60
Trevor Woerner43ec7e02019-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 Qud1a32542023-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 Chen842d5802018-11-07 09:34:06 +080076# board-specific options below
Leo Yu-Chi Liang249ce732023-02-14 20:42:49 +080077source "board/AndesTech/ae350/Kconfig"
Bin Meng8a8694d2018-09-26 06:55:21 -070078source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari4216f342019-05-28 15:47:51 +053079source "board/microchip/mpfs_icicle/Kconfig"
Bin Menge9ead4a2021-03-17 11:10:58 +080080source "board/sifive/unleashed/Kconfig"
Green Wan2e5da522021-05-27 06:52:13 -070081source "board/sifive/unmatched/Kconfig"
Yixun Lan5dfa9012023-07-08 19:24:32 +080082source "board/thead/th1520_lpi4a/Kconfig"
Tianrui Wei2ef594d2021-07-01 12:54:19 +080083source "board/openpiton/riscv64/Kconfig"
Sean Andersonedc32ab2020-06-24 06:41:25 -040084source "board/sipeed/maix/Kconfig"
Yanhong Wang38678792023-03-29 11:42:20 +080085source "board/starfive/visionfive2/Kconfig"
Rick Chen64d4ead2017-12-26 13:55:52 +080086
Rick Chen842d5802018-11-07 09:34:06 +080087# platform-specific options below
Leo Yu-Chi Liang249ce732023-02-14 20:42:49 +080088source "arch/riscv/cpu/andesv5/Kconfig"
Pragnesh Patel25269c02020-05-29 11:33:34 +053089source "arch/riscv/cpu/fu540/Kconfig"
Green Wan7f337432021-05-27 06:52:07 -070090source "arch/riscv/cpu/fu740/Kconfig"
Anup Patel1240cd62019-02-25 08:14:10 +000091source "arch/riscv/cpu/generic/Kconfig"
Yanhong Wang38678792023-03-29 11:42:20 +080092source "arch/riscv/cpu/jh7110/Kconfig"
Rick Chen842d5802018-11-07 09:34:06 +080093
94# architecture-specific options below
95
Rick Chen64d4ead2017-12-26 13:55:52 +080096choice
Lukas Auer54ebfe72018-11-22 11:26:12 +010097 prompt "Base ISA"
98 default ARCH_RV32I
Rick Chen64d4ead2017-12-26 13:55:52 +080099
Lukas Auer54ebfe72018-11-22 11:26:12 +0100100config ARCH_RV32I
101 bool "RV32I"
Rick Chen64d4ead2017-12-26 13:55:52 +0800102 select 32BIT
103 help
Lukas Auer54ebfe72018-11-22 11:26:12 +0100104 Choose this option to target the RV32I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +0800105
Lukas Auer54ebfe72018-11-22 11:26:12 +0100106config ARCH_RV64I
107 bool "RV64I"
Rick Chen64d4ead2017-12-26 13:55:52 +0800108 select 64BIT
Lukas Auer7ab1df02018-11-22 11:26:13 +0100109 select PHYS_64BIT
Rick Chen64d4ead2017-12-26 13:55:52 +0800110 help
Lukas Auer54ebfe72018-11-22 11:26:12 +0100111 Choose this option to target the RV64I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +0800112
113endchoice
114
Lukas Auerecc5d832018-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 Patel27881772018-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"
144 help
145 Choose this option to build U-Boot for RISC-V S-Mode.
146
147endchoice
148
Lukas Auer61346592019-08-21 21:14:43 +0200149choice
150 prompt "SPL Run Mode"
151 default SPL_RISCV_MMODE
152 depends on SPL
153
154config SPL_RISCV_MMODE
155 bool "Machine"
156 help
157 Choose this option to build U-Boot SPL for RISC-V M-Mode.
158
159config SPL_RISCV_SMODE
160 bool "Supervisor"
161 help
162 Choose this option to build U-Boot SPL for RISC-V S-Mode.
163
164endchoice
165
Lukas Auer002012f2018-11-22 11:26:14 +0100166config RISCV_ISA_C
167 bool "Emit compressed instructions"
168 default y
169 help
170 Adds "C" to the ISA subsets that the toolchain is allowed to emit
171 when building U-Boot, which results in compressed instructions in the
172 U-Boot binary.
173
Heinrich Schuchardtc66c9502022-10-12 14:59:51 +0200174config RISCV_ISA_F
175 bool "Standard extension for Single-Precision Floating Point"
176 default y
177 help
178 Adds "F" to the ISA string passed to the compiler.
179
180config RISCV_ISA_D
181 bool "Standard extension for Double-Precision Floating Point"
182 depends on RISCV_ISA_F
183 default y
184 help
185 Adds "D" to the ISA string passed to the compiler and changes the
186 riscv32 ABI from ilp32 to ilp32d and the riscv64 ABI from lp64 to
187 lp64d.
188
Lukas Auer002012f2018-11-22 11:26:14 +0100189config RISCV_ISA_A
190 def_bool y
191
Rick Chen64d4ead2017-12-26 13:55:52 +0800192config 32BIT
193 bool
194
195config 64BIT
196 bool
197
Padmarao Begaria235d432021-01-15 08:20:35 +0530198config DMA_ADDR_T_64BIT
199 bool
200 default y if 64BIT
201
Bin Mengb5f03722023-06-21 23:11:46 +0800202config RISCV_ACLINT
Bin Mengb6ee5e12018-12-12 06:12:30 -0800203 bool
Bin Meng614b1d82021-05-11 20:04:12 +0800204 depends on RISCV_MMODE
Bin Meng08b8d262023-06-21 23:11:45 +0800205 select REGMAP
206 select SYSCON
Bin Meng614b1d82021-05-11 20:04:12 +0800207 help
Bin Mengb5f03722023-06-21 23:11:46 +0800208 The RISC-V ACLINT block holds memory-mapped control and status registers
Bin Meng614b1d82021-05-11 20:04:12 +0800209 associated with software and timer interrupts.
210
Bin Mengb5f03722023-06-21 23:11:46 +0800211config SPL_RISCV_ACLINT
Bin Meng614b1d82021-05-11 20:04:12 +0800212 bool
213 depends on SPL_RISCV_MMODE
Bin Meng08b8d262023-06-21 23:11:45 +0800214 select SPL_REGMAP
215 select SPL_SYSCON
Bin Mengb6ee5e12018-12-12 06:12:30 -0800216 help
Bin Mengb5f03722023-06-21 23:11:46 +0800217 The RISC-V ACLINT block holds memory-mapped control and status registers
Bin Mengb6ee5e12018-12-12 06:12:30 -0800218 associated with software and timer interrupts.
219
Zong Lic39544c2021-09-01 15:01:41 +0800220config SIFIVE_CACHE
221 bool
222 help
223 This enables the operations to configure SiFive cache
224
Yu Chien Peter Lin739cd6f2022-10-25 23:03:50 +0800225config ANDES_PLICSW
Rick Chen6df4ed02019-04-02 15:56:39 +0800226 bool
Lukas Auer61346592019-08-21 21:14:43 +0200227 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen6df4ed02019-04-02 15:56:39 +0800228 select REGMAP
229 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200230 select SPL_REGMAP if SPL
231 select SPL_SYSCON if SPL
Rick Chen6df4ed02019-04-02 15:56:39 +0800232 help
Yu Chien Peter Lin739cd6f2022-10-25 23:03:50 +0800233 The Andes PLICSW block holds memory-mapped claim and pending
234 registers associated with software interrupt.
Rick Chen6df4ed02019-04-02 15:56:39 +0800235
Lukas Auer83d573d2019-03-17 19:28:32 +0100236config SMP
237 bool "Symmetric Multi-Processing"
Bin Meng49975222020-04-16 08:09:31 -0700238 depends on SBI_V01 || !RISCV_SMODE
Lukas Auer83d573d2019-03-17 19:28:32 +0100239 help
240 This enables support for systems with more than one CPU. If
241 you say N here, U-Boot will run on single and multiprocessor
242 machines, but will use only one CPU of a multiprocessor
243 machine. If you say Y here, U-Boot will run on many, but not
244 all, single processor machines.
245
Bin Mengb161f902020-04-16 08:09:30 -0700246config SPL_SMP
247 bool "Symmetric Multi-Processing in SPL"
248 depends on SPL && SPL_RISCV_MMODE
249 default y
250 help
251 This enables support for systems with more than one CPU in SPL.
252 If you say N here, U-Boot SPL will run on single and multiprocessor
253 machines, but will use only one CPU of a multiprocessor
254 machine. If you say Y here, U-Boot SPL will run on many, but not
255 all, single processor machines.
256
Lukas Auer83d573d2019-03-17 19:28:32 +0100257config NR_CPUS
258 int "Maximum number of CPUs (2-32)"
259 range 2 32
Bin Mengb161f902020-04-16 08:09:30 -0700260 depends on SMP || SPL_SMP
Lukas Auer83d573d2019-03-17 19:28:32 +0100261 default 8
262 help
263 On multiprocessor machines, U-Boot sets up a stack for each CPU.
264 Stack memory is pre-allocated. U-Boot must therefore know the
265 maximum number of CPUs that may be present.
266
Bin Mengee3bcd02020-03-09 19:35:28 -0700267config SBI
268 bool
269 default y if RISCV_SMODE || SPL_RISCV_SMODE
270
Bin Menga75325e2020-04-16 08:09:32 -0700271choice
272 prompt "SBI support"
Bin Meng3aecc4b2020-04-16 08:09:33 -0700273 default SBI_V02
Bin Menga75325e2020-04-16 08:09:32 -0700274
Bin Meng887d8092020-03-09 19:35:30 -0700275config SBI_V01
276 bool "SBI v0.1 support"
Bin Meng887d8092020-03-09 19:35:30 -0700277 depends on SBI
278 help
279 This config allows kernel to use SBI v0.1 APIs. This will be
280 deprecated in future once legacy M-mode software are no longer in use.
281
Bin Menga75325e2020-04-16 08:09:32 -0700282config SBI_V02
Heinrich Schuchardt693baee2022-11-08 15:53:12 +0100283 bool "SBI v0.2 or later support"
Bin Menga75325e2020-04-16 08:09:32 -0700284 depends on SBI
285 help
Heinrich Schuchardt693baee2022-11-08 15:53:12 +0100286 The SBI specification introduced the concept of extensions in version
287 v0.2. With this configuration option U-Boot can detect and use SBI
288 extensions. With the HSM extension introduced in SBI 0.2, only a
289 single hart needs to boot and enter the operating system. The booting
290 hart can bring up secondary harts one by one afterwards.
Bin Menga75325e2020-04-16 08:09:32 -0700291
Heinrich Schuchardt693baee2022-11-08 15:53:12 +0100292 Choose this option if OpenSBI release v0.7 or above is used together
Bin Menga75325e2020-04-16 08:09:32 -0700293 with U-Boot.
294
295endchoice
296
Lukas Auere79178b2019-03-17 19:28:34 +0100297config SBI_IPI
298 bool
Bin Mengee3bcd02020-03-09 19:35:28 -0700299 depends on SBI
Lukas Auer61346592019-08-21 21:14:43 +0200300 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auere79178b2019-03-17 19:28:34 +0100301 depends on SMP
302
Rick Chene5e6c362019-04-30 13:49:33 +0800303config XIP
304 bool "XIP mode"
305 help
306 XIP (eXecute In Place) is a method for executing code directly
307 from a NOR flash memory without copying the code to ram.
308 Say yes here if U-Boot boots from flash directly.
309
Nikita Shubin7e5e0292022-09-02 11:47:39 +0300310config SPL_XIP
311 bool "Enable XIP mode for SPL"
312 help
313 If SPL starts in read-only memory (XIP for example) then we shouldn't
314 rely on lock variables (for example hart_lottery and available_harts_lock),
315 this affects only SPL, other stages should proceed as non-XIP.
316
Rick Chen9c4d5c12022-09-21 14:34:54 +0800317config AVAILABLE_HARTS
318 bool "Send IPI by available harts"
319 default y
320 help
321 By default, IPI sending mechanism will depend on available_harts.
322 If disable this, it will send IPI by CPUs node numbers of device tree.
323
Sean Andersone8b46a12019-12-25 00:27:44 -0500324config SHOW_REGS
325 bool "Show registers on unhandled exception"
326
Sean Anderson7f4b6662020-06-24 06:41:19 -0400327config RISCV_PRIV_1_9
328 bool "Use version 1.9 of the RISC-V priviledged specification"
329 help
330 Older versions of the RISC-V priviledged specification had
331 separate counter enable CSRs for each privilege mode. Writing
332 to the unified mcounteren CSR on a processor implementing the
333 old specification will result in an illegal instruction
334 exception. In addition to counter CSR changes, the way virtual
335 memory is configured was also changed.
336
Lukas Auera3596652019-03-17 19:28:37 +0100337config STACK_SIZE_SHIFT
338 int
Lukas Auer03813702019-10-20 20:53:47 +0200339 default 14
Lukas Auera3596652019-03-17 19:28:37 +0100340
Bin Meng2bdcd052020-06-25 18:16:08 -0700341config OF_BOARD_FIXUP
Sean Anderson584a5ee2020-09-05 09:22:11 -0400342 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng2bdcd052020-06-25 18:16:08 -0700343
Bin Mengce64bd32021-05-13 16:46:18 +0800344menu "Use assembly optimized implementation of memory routines"
345
Heinrich Schuchardt23caf662021-03-27 12:37:04 +0100346config USE_ARCH_MEMCPY
347 bool "Use an assembly optimized implementation of memcpy"
348 default y
349 help
350 Enable the generation of an optimized version of memcpy.
351 Such an implementation may be faster under some conditions
352 but may increase the binary size.
353
354config SPL_USE_ARCH_MEMCPY
355 bool "Use an assembly optimized implementation of memcpy for SPL"
356 default y if USE_ARCH_MEMCPY
357 depends on SPL
358 help
359 Enable the generation of an optimized version of memcpy.
360 Such an implementation may be faster under some conditions
361 but may increase the binary size.
362
363config TPL_USE_ARCH_MEMCPY
364 bool "Use an assembly optimized implementation of memcpy for TPL"
365 default y if USE_ARCH_MEMCPY
366 depends on TPL
367 help
368 Enable the generation of an optimized version of memcpy.
369 Such an implementation may be faster under some conditions
370 but may increase the binary size.
371
372config USE_ARCH_MEMMOVE
373 bool "Use an assembly optimized implementation of memmove"
374 default y
375 help
376 Enable the generation of an optimized version of memmove.
377 Such an implementation may be faster under some conditions
378 but may increase the binary size.
379
380config SPL_USE_ARCH_MEMMOVE
381 bool "Use an assembly optimized implementation of memmove for SPL"
382 default y if USE_ARCH_MEMCPY
383 depends on SPL
384 help
385 Enable the generation of an optimized version of memmove.
386 Such an implementation may be faster under some conditions
387 but may increase the binary size.
388
389config TPL_USE_ARCH_MEMMOVE
390 bool "Use an assembly optimized implementation of memmove for TPL"
391 default y if USE_ARCH_MEMCPY
392 depends on TPL
393 help
394 Enable the generation of an optimized version of memmove.
395 Such an implementation may be faster under some conditions
396 but may increase the binary size.
397
398config USE_ARCH_MEMSET
399 bool "Use an assembly optimized implementation of memset"
400 default y
401 help
402 Enable the generation of an optimized version of memset.
403 Such an implementation may be faster under some conditions
404 but may increase the binary size.
405
406config SPL_USE_ARCH_MEMSET
407 bool "Use an assembly optimized implementation of memset for SPL"
408 default y if USE_ARCH_MEMSET
409 depends on SPL
410 help
411 Enable the generation of an optimized version of memset.
412 Such an implementation may be faster under some conditions
413 but may increase the binary size.
414
415config TPL_USE_ARCH_MEMSET
416 bool "Use an assembly optimized implementation of memset for TPL"
417 default y if USE_ARCH_MEMSET
418 depends on TPL
419 help
420 Enable the generation of an optimized version of memset.
421 Such an implementation may be faster under some conditions
422 but may increase the binary size.
423
Rick Chen64d4ead2017-12-26 13:55:52 +0800424endmenu
Bin Mengce64bd32021-05-13 16:46:18 +0800425
426endmenu