blob: de7d5a954926ada44f2d93ccb6e9b9110a57b7a9 [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"
29
Sean Andersonedc32ab2020-06-24 06:41:25 -040030config TARGET_SIPEED_MAIX
31 bool "Support Sipeed Maix Board"
Tom Rini3ef67ae2021-08-26 11:47:59 -040032 select SYS_CACHE_SHIFT_6
Sean Andersonedc32ab2020-06-24 06:41:25 -040033
Tianrui Wei2ef594d2021-07-01 12:54:19 +080034config TARGET_OPENPITON_RISCV64
35 bool "Support RISC-V cores on OpenPiton SoC"
36
Rick Chen64d4ead2017-12-26 13:55:52 +080037endchoice
38
Trevor Woernerba64b8b2019-05-03 09:40:59 -040039config SYS_ICACHE_OFF
40 bool "Do not enable icache"
Trevor Woernerba64b8b2019-05-03 09:40:59 -040041 help
42 Do not enable instruction cache in U-Boot.
43
Trevor Woerner43ec7e02019-05-03 09:41:00 -040044config SPL_SYS_ICACHE_OFF
45 bool "Do not enable icache in SPL"
46 depends on SPL
47 default SYS_ICACHE_OFF
48 help
49 Do not enable instruction cache in SPL.
50
Trevor Woernerba64b8b2019-05-03 09:40:59 -040051config SYS_DCACHE_OFF
52 bool "Do not enable dcache"
Trevor Woernerba64b8b2019-05-03 09:40:59 -040053 help
54 Do not enable data cache in U-Boot.
55
Trevor Woerner43ec7e02019-05-03 09:41:00 -040056config SPL_SYS_DCACHE_OFF
57 bool "Do not enable dcache in SPL"
58 depends on SPL
59 default SYS_DCACHE_OFF
60 help
61 Do not enable data cache in SPL.
62
Rick Chen842d5802018-11-07 09:34:06 +080063# board-specific options below
Leo Yu-Chi Liang249ce732023-02-14 20:42:49 +080064source "board/AndesTech/ae350/Kconfig"
Bin Meng8a8694d2018-09-26 06:55:21 -070065source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari4216f342019-05-28 15:47:51 +053066source "board/microchip/mpfs_icicle/Kconfig"
Bin Menge9ead4a2021-03-17 11:10:58 +080067source "board/sifive/unleashed/Kconfig"
Green Wan2e5da522021-05-27 06:52:13 -070068source "board/sifive/unmatched/Kconfig"
Tianrui Wei2ef594d2021-07-01 12:54:19 +080069source "board/openpiton/riscv64/Kconfig"
Sean Andersonedc32ab2020-06-24 06:41:25 -040070source "board/sipeed/maix/Kconfig"
Yanhong Wang38678792023-03-29 11:42:20 +080071source "board/starfive/visionfive2/Kconfig"
Rick Chen64d4ead2017-12-26 13:55:52 +080072
Rick Chen842d5802018-11-07 09:34:06 +080073# platform-specific options below
Leo Yu-Chi Liang249ce732023-02-14 20:42:49 +080074source "arch/riscv/cpu/andesv5/Kconfig"
Pragnesh Patel25269c02020-05-29 11:33:34 +053075source "arch/riscv/cpu/fu540/Kconfig"
Green Wan7f337432021-05-27 06:52:07 -070076source "arch/riscv/cpu/fu740/Kconfig"
Anup Patel1240cd62019-02-25 08:14:10 +000077source "arch/riscv/cpu/generic/Kconfig"
Yanhong Wang38678792023-03-29 11:42:20 +080078source "arch/riscv/cpu/jh7110/Kconfig"
Rick Chen842d5802018-11-07 09:34:06 +080079
80# architecture-specific options below
81
Rick Chen64d4ead2017-12-26 13:55:52 +080082choice
Lukas Auer54ebfe72018-11-22 11:26:12 +010083 prompt "Base ISA"
84 default ARCH_RV32I
Rick Chen64d4ead2017-12-26 13:55:52 +080085
Lukas Auer54ebfe72018-11-22 11:26:12 +010086config ARCH_RV32I
87 bool "RV32I"
Rick Chen64d4ead2017-12-26 13:55:52 +080088 select 32BIT
89 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010090 Choose this option to target the RV32I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080091
Lukas Auer54ebfe72018-11-22 11:26:12 +010092config ARCH_RV64I
93 bool "RV64I"
Rick Chen64d4ead2017-12-26 13:55:52 +080094 select 64BIT
Lukas Auer7ab1df02018-11-22 11:26:13 +010095 select PHYS_64BIT
Rick Chen64d4ead2017-12-26 13:55:52 +080096 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010097 Choose this option to target the RV64I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080098
99endchoice
100
Lukas Auerecc5d832018-12-12 06:12:23 -0800101choice
102 prompt "Code Model"
103 default CMODEL_MEDLOW
104
105config CMODEL_MEDLOW
106 bool "medium low code model"
107 help
108 U-Boot and its statically defined symbols must lie within a single 2 GiB
109 address range and must lie between absolute addresses -2 GiB and +2 GiB.
110
111config CMODEL_MEDANY
112 bool "medium any code model"
113 help
114 U-Boot and its statically defined symbols must be within any single 2 GiB
115 address range.
116
117endchoice
118
Anup Patel27881772018-12-12 06:12:29 -0800119choice
120 prompt "Run Mode"
121 default RISCV_MMODE
122
123config RISCV_MMODE
124 bool "Machine"
125 help
126 Choose this option to build U-Boot for RISC-V M-Mode.
127
128config RISCV_SMODE
129 bool "Supervisor"
130 help
131 Choose this option to build U-Boot for RISC-V S-Mode.
132
133endchoice
134
Lukas Auer61346592019-08-21 21:14:43 +0200135choice
136 prompt "SPL Run Mode"
137 default SPL_RISCV_MMODE
138 depends on SPL
139
140config SPL_RISCV_MMODE
141 bool "Machine"
142 help
143 Choose this option to build U-Boot SPL for RISC-V M-Mode.
144
145config SPL_RISCV_SMODE
146 bool "Supervisor"
147 help
148 Choose this option to build U-Boot SPL for RISC-V S-Mode.
149
150endchoice
151
Lukas Auer002012f2018-11-22 11:26:14 +0100152config RISCV_ISA_C
153 bool "Emit compressed instructions"
154 default y
155 help
156 Adds "C" to the ISA subsets that the toolchain is allowed to emit
157 when building U-Boot, which results in compressed instructions in the
158 U-Boot binary.
159
Heinrich Schuchardtc66c9502022-10-12 14:59:51 +0200160config RISCV_ISA_F
161 bool "Standard extension for Single-Precision Floating Point"
162 default y
163 help
164 Adds "F" to the ISA string passed to the compiler.
165
166config RISCV_ISA_D
167 bool "Standard extension for Double-Precision Floating Point"
168 depends on RISCV_ISA_F
169 default y
170 help
171 Adds "D" to the ISA string passed to the compiler and changes the
172 riscv32 ABI from ilp32 to ilp32d and the riscv64 ABI from lp64 to
173 lp64d.
174
Lukas Auer002012f2018-11-22 11:26:14 +0100175config RISCV_ISA_A
176 def_bool y
177
Rick Chen64d4ead2017-12-26 13:55:52 +0800178config 32BIT
179 bool
180
181config 64BIT
182 bool
183
Padmarao Begaria235d432021-01-15 08:20:35 +0530184config DMA_ADDR_T_64BIT
185 bool
186 default y if 64BIT
187
Bin Mengb5f03722023-06-21 23:11:46 +0800188config RISCV_ACLINT
Bin Mengb6ee5e12018-12-12 06:12:30 -0800189 bool
Bin Meng614b1d82021-05-11 20:04:12 +0800190 depends on RISCV_MMODE
Bin Meng08b8d262023-06-21 23:11:45 +0800191 select REGMAP
192 select SYSCON
Bin Meng614b1d82021-05-11 20:04:12 +0800193 help
Bin Mengb5f03722023-06-21 23:11:46 +0800194 The RISC-V ACLINT block holds memory-mapped control and status registers
Bin Meng614b1d82021-05-11 20:04:12 +0800195 associated with software and timer interrupts.
196
Bin Mengb5f03722023-06-21 23:11:46 +0800197config SPL_RISCV_ACLINT
Bin Meng614b1d82021-05-11 20:04:12 +0800198 bool
199 depends on SPL_RISCV_MMODE
Bin Meng08b8d262023-06-21 23:11:45 +0800200 select SPL_REGMAP
201 select SPL_SYSCON
Bin Mengb6ee5e12018-12-12 06:12:30 -0800202 help
Bin Mengb5f03722023-06-21 23:11:46 +0800203 The RISC-V ACLINT block holds memory-mapped control and status registers
Bin Mengb6ee5e12018-12-12 06:12:30 -0800204 associated with software and timer interrupts.
205
Zong Lic39544c2021-09-01 15:01:41 +0800206config SIFIVE_CACHE
207 bool
208 help
209 This enables the operations to configure SiFive cache
210
Yu Chien Peter Lin739cd6f2022-10-25 23:03:50 +0800211config ANDES_PLICSW
Rick Chen6df4ed02019-04-02 15:56:39 +0800212 bool
Lukas Auer61346592019-08-21 21:14:43 +0200213 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen6df4ed02019-04-02 15:56:39 +0800214 select REGMAP
215 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200216 select SPL_REGMAP if SPL
217 select SPL_SYSCON if SPL
Rick Chen6df4ed02019-04-02 15:56:39 +0800218 help
Yu Chien Peter Lin739cd6f2022-10-25 23:03:50 +0800219 The Andes PLICSW block holds memory-mapped claim and pending
220 registers associated with software interrupt.
Rick Chen6df4ed02019-04-02 15:56:39 +0800221
Lukas Auer83d573d2019-03-17 19:28:32 +0100222config SMP
223 bool "Symmetric Multi-Processing"
Bin Meng49975222020-04-16 08:09:31 -0700224 depends on SBI_V01 || !RISCV_SMODE
Lukas Auer83d573d2019-03-17 19:28:32 +0100225 help
226 This enables support for systems with more than one CPU. If
227 you say N here, U-Boot will run on single and multiprocessor
228 machines, but will use only one CPU of a multiprocessor
229 machine. If you say Y here, U-Boot will run on many, but not
230 all, single processor machines.
231
Bin Mengb161f902020-04-16 08:09:30 -0700232config SPL_SMP
233 bool "Symmetric Multi-Processing in SPL"
234 depends on SPL && SPL_RISCV_MMODE
235 default y
236 help
237 This enables support for systems with more than one CPU in SPL.
238 If you say N here, U-Boot SPL will run on single and multiprocessor
239 machines, but will use only one CPU of a multiprocessor
240 machine. If you say Y here, U-Boot SPL will run on many, but not
241 all, single processor machines.
242
Lukas Auer83d573d2019-03-17 19:28:32 +0100243config NR_CPUS
244 int "Maximum number of CPUs (2-32)"
245 range 2 32
Bin Mengb161f902020-04-16 08:09:30 -0700246 depends on SMP || SPL_SMP
Lukas Auer83d573d2019-03-17 19:28:32 +0100247 default 8
248 help
249 On multiprocessor machines, U-Boot sets up a stack for each CPU.
250 Stack memory is pre-allocated. U-Boot must therefore know the
251 maximum number of CPUs that may be present.
252
Bin Mengee3bcd02020-03-09 19:35:28 -0700253config SBI
254 bool
255 default y if RISCV_SMODE || SPL_RISCV_SMODE
256
Bin Menga75325e2020-04-16 08:09:32 -0700257choice
258 prompt "SBI support"
Bin Meng3aecc4b2020-04-16 08:09:33 -0700259 default SBI_V02
Bin Menga75325e2020-04-16 08:09:32 -0700260
Bin Meng887d8092020-03-09 19:35:30 -0700261config SBI_V01
262 bool "SBI v0.1 support"
Bin Meng887d8092020-03-09 19:35:30 -0700263 depends on SBI
264 help
265 This config allows kernel to use SBI v0.1 APIs. This will be
266 deprecated in future once legacy M-mode software are no longer in use.
267
Bin Menga75325e2020-04-16 08:09:32 -0700268config SBI_V02
Heinrich Schuchardt693baee2022-11-08 15:53:12 +0100269 bool "SBI v0.2 or later support"
Bin Menga75325e2020-04-16 08:09:32 -0700270 depends on SBI
271 help
Heinrich Schuchardt693baee2022-11-08 15:53:12 +0100272 The SBI specification introduced the concept of extensions in version
273 v0.2. With this configuration option U-Boot can detect and use SBI
274 extensions. With the HSM extension introduced in SBI 0.2, only a
275 single hart needs to boot and enter the operating system. The booting
276 hart can bring up secondary harts one by one afterwards.
Bin Menga75325e2020-04-16 08:09:32 -0700277
Heinrich Schuchardt693baee2022-11-08 15:53:12 +0100278 Choose this option if OpenSBI release v0.7 or above is used together
Bin Menga75325e2020-04-16 08:09:32 -0700279 with U-Boot.
280
281endchoice
282
Lukas Auere79178b2019-03-17 19:28:34 +0100283config SBI_IPI
284 bool
Bin Mengee3bcd02020-03-09 19:35:28 -0700285 depends on SBI
Lukas Auer61346592019-08-21 21:14:43 +0200286 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auere79178b2019-03-17 19:28:34 +0100287 depends on SMP
288
Rick Chene5e6c362019-04-30 13:49:33 +0800289config XIP
290 bool "XIP mode"
291 help
292 XIP (eXecute In Place) is a method for executing code directly
293 from a NOR flash memory without copying the code to ram.
294 Say yes here if U-Boot boots from flash directly.
295
Nikita Shubin7e5e0292022-09-02 11:47:39 +0300296config SPL_XIP
297 bool "Enable XIP mode for SPL"
298 help
299 If SPL starts in read-only memory (XIP for example) then we shouldn't
300 rely on lock variables (for example hart_lottery and available_harts_lock),
301 this affects only SPL, other stages should proceed as non-XIP.
302
Rick Chen9c4d5c12022-09-21 14:34:54 +0800303config AVAILABLE_HARTS
304 bool "Send IPI by available harts"
305 default y
306 help
307 By default, IPI sending mechanism will depend on available_harts.
308 If disable this, it will send IPI by CPUs node numbers of device tree.
309
Sean Andersone8b46a12019-12-25 00:27:44 -0500310config SHOW_REGS
311 bool "Show registers on unhandled exception"
312
Sean Anderson7f4b6662020-06-24 06:41:19 -0400313config RISCV_PRIV_1_9
314 bool "Use version 1.9 of the RISC-V priviledged specification"
315 help
316 Older versions of the RISC-V priviledged specification had
317 separate counter enable CSRs for each privilege mode. Writing
318 to the unified mcounteren CSR on a processor implementing the
319 old specification will result in an illegal instruction
320 exception. In addition to counter CSR changes, the way virtual
321 memory is configured was also changed.
322
Lukas Auera3596652019-03-17 19:28:37 +0100323config STACK_SIZE_SHIFT
324 int
Lukas Auer03813702019-10-20 20:53:47 +0200325 default 14
Lukas Auera3596652019-03-17 19:28:37 +0100326
Bin Meng2bdcd052020-06-25 18:16:08 -0700327config OF_BOARD_FIXUP
Sean Anderson584a5ee2020-09-05 09:22:11 -0400328 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng2bdcd052020-06-25 18:16:08 -0700329
Bin Mengce64bd32021-05-13 16:46:18 +0800330menu "Use assembly optimized implementation of memory routines"
331
Heinrich Schuchardt23caf662021-03-27 12:37:04 +0100332config USE_ARCH_MEMCPY
333 bool "Use an assembly optimized implementation of memcpy"
334 default y
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 SPL_USE_ARCH_MEMCPY
341 bool "Use an assembly optimized implementation of memcpy for SPL"
342 default y if USE_ARCH_MEMCPY
343 depends on SPL
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 TPL_USE_ARCH_MEMCPY
350 bool "Use an assembly optimized implementation of memcpy for TPL"
351 default y if USE_ARCH_MEMCPY
352 depends on TPL
353 help
354 Enable the generation of an optimized version of memcpy.
355 Such an implementation may be faster under some conditions
356 but may increase the binary size.
357
358config USE_ARCH_MEMMOVE
359 bool "Use an assembly optimized implementation of memmove"
360 default y
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 SPL_USE_ARCH_MEMMOVE
367 bool "Use an assembly optimized implementation of memmove for SPL"
368 default y if USE_ARCH_MEMCPY
369 depends on SPL
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 TPL_USE_ARCH_MEMMOVE
376 bool "Use an assembly optimized implementation of memmove for TPL"
377 default y if USE_ARCH_MEMCPY
378 depends on TPL
379 help
380 Enable the generation of an optimized version of memmove.
381 Such an implementation may be faster under some conditions
382 but may increase the binary size.
383
384config USE_ARCH_MEMSET
385 bool "Use an assembly optimized implementation of memset"
386 default y
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 SPL_USE_ARCH_MEMSET
393 bool "Use an assembly optimized implementation of memset for SPL"
394 default y if USE_ARCH_MEMSET
395 depends on SPL
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
401config TPL_USE_ARCH_MEMSET
402 bool "Use an assembly optimized implementation of memset for TPL"
403 default y if USE_ARCH_MEMSET
404 depends on TPL
405 help
406 Enable the generation of an optimized version of memset.
407 Such an implementation may be faster under some conditions
408 but may increase the binary size.
409
Rick Chen64d4ead2017-12-26 13:55:52 +0800410endmenu
Bin Mengce64bd32021-05-13 16:46:18 +0800411
412endmenu