blob: 6771d8d9198d74b8b3b602d95c1cf26e72d6f350 [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
Yanhong Wang331ad932023-03-29 11:42:20 +080027config TARGET_STARFIVE_VISIONFIVE2
28 bool "Support StarFive VisionFive2 Board"
29
Yixun Lan5f3a7fd2023-07-08 19:24:32 +080030config TARGET_TH1520_LPI4A
31 bool "Support Sipeed's TH1520 Lichee PI 4A Board"
32 select SYS_CACHE_SHIFT_6
33
Sean Andersona7c81fc2020-06-24 06:41:25 -040034config TARGET_SIPEED_MAIX
35 bool "Support Sipeed Maix Board"
Tom Riniab92b382021-08-26 11:47:59 -040036 select SYS_CACHE_SHIFT_6
Sean Andersona7c81fc2020-06-24 06:41:25 -040037
Tianrui Wei8a44fe62021-07-01 12:54:19 +080038config TARGET_OPENPITON_RISCV64
39 bool "Support RISC-V cores on OpenPiton SoC"
40
Rick Chenf94c44e2017-12-26 13:55:52 +080041endchoice
42
Trevor Woernera0aba8a2019-05-03 09:40:59 -040043config SYS_ICACHE_OFF
44 bool "Do not enable icache"
Trevor Woernera0aba8a2019-05-03 09:40:59 -040045 help
46 Do not enable instruction cache in U-Boot.
47
Trevor Woerner10015022019-05-03 09:41:00 -040048config SPL_SYS_ICACHE_OFF
49 bool "Do not enable icache in SPL"
50 depends on SPL
51 default SYS_ICACHE_OFF
52 help
53 Do not enable instruction cache in SPL.
54
Trevor Woernera0aba8a2019-05-03 09:40:59 -040055config SYS_DCACHE_OFF
56 bool "Do not enable dcache"
Trevor Woernera0aba8a2019-05-03 09:40:59 -040057 help
58 Do not enable data cache in U-Boot.
59
Trevor Woerner10015022019-05-03 09:41:00 -040060config SPL_SYS_DCACHE_OFF
61 bool "Do not enable dcache in SPL"
62 depends on SPL
63 default SYS_DCACHE_OFF
64 help
65 Do not enable data cache in SPL.
66
Shengyu Qud365f662023-08-09 21:11:31 +080067config SPL_ZERO_MEM_BEFORE_USE
68 bool "Zero memory before use"
69 depends on SPL
70 default n
71 help
72 Zero stack/GD/malloc area in SPL before using them, this is needed for
73 Sifive core devices that uses L2 cache to store SPL.
74
Rick Chen52923c62018-11-07 09:34:06 +080075# board-specific options below
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080076source "board/AndesTech/ae350/Kconfig"
Bin Meng510e3792018-09-26 06:55:21 -070077source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari39494822019-05-28 15:47:51 +053078source "board/microchip/mpfs_icicle/Kconfig"
Bin Mengae2d9502021-03-17 11:10:58 +080079source "board/sifive/unleashed/Kconfig"
Green Wan70415e12021-05-27 06:52:13 -070080source "board/sifive/unmatched/Kconfig"
Yixun Lan5f3a7fd2023-07-08 19:24:32 +080081source "board/thead/th1520_lpi4a/Kconfig"
Tianrui Wei8a44fe62021-07-01 12:54:19 +080082source "board/openpiton/riscv64/Kconfig"
Sean Andersona7c81fc2020-06-24 06:41:25 -040083source "board/sipeed/maix/Kconfig"
Yanhong Wang331ad932023-03-29 11:42:20 +080084source "board/starfive/visionfive2/Kconfig"
Rick Chenf94c44e2017-12-26 13:55:52 +080085
Rick Chen52923c62018-11-07 09:34:06 +080086# platform-specific options below
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080087source "arch/riscv/cpu/andesv5/Kconfig"
Pragnesh Patel7c45fc92020-05-29 11:33:34 +053088source "arch/riscv/cpu/fu540/Kconfig"
Green Wana74e9d82021-05-27 06:52:07 -070089source "arch/riscv/cpu/fu740/Kconfig"
Anup Patelfdff1f92019-02-25 08:14:10 +000090source "arch/riscv/cpu/generic/Kconfig"
Yanhong Wang331ad932023-03-29 11:42:20 +080091source "arch/riscv/cpu/jh7110/Kconfig"
Rick Chen52923c62018-11-07 09:34:06 +080092
93# architecture-specific options below
94
Rick Chenf94c44e2017-12-26 13:55:52 +080095choice
Lukas Auer862e2e72018-11-22 11:26:12 +010096 prompt "Base ISA"
97 default ARCH_RV32I
Rick Chenf94c44e2017-12-26 13:55:52 +080098
Lukas Auer862e2e72018-11-22 11:26:12 +010099config ARCH_RV32I
100 bool "RV32I"
Rick Chenf94c44e2017-12-26 13:55:52 +0800101 select 32BIT
102 help
Lukas Auer862e2e72018-11-22 11:26:12 +0100103 Choose this option to target the RV32I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +0800104
Lukas Auer862e2e72018-11-22 11:26:12 +0100105config ARCH_RV64I
106 bool "RV64I"
Rick Chenf94c44e2017-12-26 13:55:52 +0800107 select 64BIT
Lukas Auer71158562018-11-22 11:26:13 +0100108 select PHYS_64BIT
Rick Chenf94c44e2017-12-26 13:55:52 +0800109 help
Lukas Auer862e2e72018-11-22 11:26:12 +0100110 Choose this option to target the RV64I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +0800111
112endchoice
113
Lukas Auer8176ea42018-12-12 06:12:23 -0800114choice
115 prompt "Code Model"
116 default CMODEL_MEDLOW
117
118config CMODEL_MEDLOW
119 bool "medium low code model"
120 help
121 U-Boot and its statically defined symbols must lie within a single 2 GiB
122 address range and must lie between absolute addresses -2 GiB and +2 GiB.
123
124config CMODEL_MEDANY
125 bool "medium any code model"
126 help
127 U-Boot and its statically defined symbols must be within any single 2 GiB
128 address range.
129
130endchoice
131
Anup Patel3cfc8252018-12-12 06:12:29 -0800132choice
133 prompt "Run Mode"
134 default RISCV_MMODE
135
136config RISCV_MMODE
137 bool "Machine"
138 help
139 Choose this option to build U-Boot for RISC-V M-Mode.
140
141config RISCV_SMODE
142 bool "Supervisor"
143 help
144 Choose this option to build U-Boot for RISC-V S-Mode.
145
146endchoice
147
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200148choice
149 prompt "SPL Run Mode"
150 default SPL_RISCV_MMODE
151 depends on SPL
152
153config SPL_RISCV_MMODE
154 bool "Machine"
155 help
156 Choose this option to build U-Boot SPL for RISC-V M-Mode.
157
158config SPL_RISCV_SMODE
159 bool "Supervisor"
160 help
161 Choose this option to build U-Boot SPL for RISC-V S-Mode.
162
163endchoice
164
Lukas Auerd57ffa62018-11-22 11:26:14 +0100165config RISCV_ISA_C
166 bool "Emit compressed instructions"
167 default y
168 help
169 Adds "C" to the ISA subsets that the toolchain is allowed to emit
170 when building U-Boot, which results in compressed instructions in the
171 U-Boot binary.
172
Heinrich Schuchardte67f34f2022-10-12 14:59:51 +0200173config RISCV_ISA_F
174 bool "Standard extension for Single-Precision Floating Point"
175 default y
176 help
177 Adds "F" to the ISA string passed to the compiler.
178
179config RISCV_ISA_D
180 bool "Standard extension for Double-Precision Floating Point"
181 depends on RISCV_ISA_F
182 default y
183 help
184 Adds "D" to the ISA string passed to the compiler and changes the
185 riscv32 ABI from ilp32 to ilp32d and the riscv64 ABI from lp64 to
186 lp64d.
187
Lukas Auerd57ffa62018-11-22 11:26:14 +0100188config RISCV_ISA_A
189 def_bool y
190
Rick Chenf94c44e2017-12-26 13:55:52 +0800191config 32BIT
192 bool
193
194config 64BIT
195 bool
196
Padmarao Begari5af35742021-01-15 08:20:35 +0530197config DMA_ADDR_T_64BIT
198 bool
199 default y if 64BIT
200
Bin Meng9675d922023-06-21 23:11:46 +0800201config RISCV_ACLINT
Bin Meng644a3cd2018-12-12 06:12:30 -0800202 bool
Bin Menga6d7e8c2021-05-11 20:04:12 +0800203 depends on RISCV_MMODE
Bin Meng7f1a30f2023-06-21 23:11:45 +0800204 select REGMAP
205 select SYSCON
Bin Menga6d7e8c2021-05-11 20:04:12 +0800206 help
Bin Meng9675d922023-06-21 23:11:46 +0800207 The RISC-V ACLINT block holds memory-mapped control and status registers
Bin Menga6d7e8c2021-05-11 20:04:12 +0800208 associated with software and timer interrupts.
209
Bin Meng9675d922023-06-21 23:11:46 +0800210config SPL_RISCV_ACLINT
Bin Menga6d7e8c2021-05-11 20:04:12 +0800211 bool
212 depends on SPL_RISCV_MMODE
Bin Meng7f1a30f2023-06-21 23:11:45 +0800213 select SPL_REGMAP
214 select SPL_SYSCON
Bin Meng644a3cd2018-12-12 06:12:30 -0800215 help
Bin Meng9675d922023-06-21 23:11:46 +0800216 The RISC-V ACLINT block holds memory-mapped control and status registers
Bin Meng644a3cd2018-12-12 06:12:30 -0800217 associated with software and timer interrupts.
218
Zong Li213ed172021-09-01 15:01:41 +0800219config SIFIVE_CACHE
220 bool
221 help
222 This enables the operations to configure SiFive cache
223
Yu Chien Peter Lina5dfa3b2022-10-25 23:03:50 +0800224config ANDES_PLICSW
Rick Chen0d389462019-04-02 15:56:39 +0800225 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200226 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen0d389462019-04-02 15:56:39 +0800227 select REGMAP
228 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200229 select SPL_REGMAP if SPL
230 select SPL_SYSCON if SPL
Rick Chen0d389462019-04-02 15:56:39 +0800231 help
Yu Chien Peter Lina5dfa3b2022-10-25 23:03:50 +0800232 The Andes PLICSW block holds memory-mapped claim and pending
233 registers associated with software interrupt.
Rick Chen0d389462019-04-02 15:56:39 +0800234
Lukas Auerfa33f082019-03-17 19:28:32 +0100235config SMP
236 bool "Symmetric Multi-Processing"
Bin Meng6fa022e2020-04-16 08:09:31 -0700237 depends on SBI_V01 || !RISCV_SMODE
Lukas Auerfa33f082019-03-17 19:28:32 +0100238 help
239 This enables support for systems with more than one CPU. If
240 you say N here, U-Boot will run on single and multiprocessor
241 machines, but will use only one CPU of a multiprocessor
242 machine. If you say Y here, U-Boot will run on many, but not
243 all, single processor machines.
244
Bin Meng191636e2020-04-16 08:09:30 -0700245config SPL_SMP
246 bool "Symmetric Multi-Processing in SPL"
247 depends on SPL && SPL_RISCV_MMODE
248 default y
249 help
250 This enables support for systems with more than one CPU in SPL.
251 If you say N here, U-Boot SPL will run on single and multiprocessor
252 machines, but will use only one CPU of a multiprocessor
253 machine. If you say Y here, U-Boot SPL will run on many, but not
254 all, single processor machines.
255
Lukas Auerfa33f082019-03-17 19:28:32 +0100256config NR_CPUS
257 int "Maximum number of CPUs (2-32)"
258 range 2 32
Bin Meng191636e2020-04-16 08:09:30 -0700259 depends on SMP || SPL_SMP
Lukas Auerfa33f082019-03-17 19:28:32 +0100260 default 8
261 help
262 On multiprocessor machines, U-Boot sets up a stack for each CPU.
263 Stack memory is pre-allocated. U-Boot must therefore know the
264 maximum number of CPUs that may be present.
265
Bin Mengf58fc342020-03-09 19:35:28 -0700266config SBI
267 bool
268 default y if RISCV_SMODE || SPL_RISCV_SMODE
269
Bin Mengff0fa6c2020-04-16 08:09:32 -0700270choice
271 prompt "SBI support"
Bin Mengfa16ec22020-04-16 08:09:33 -0700272 default SBI_V02
Bin Mengff0fa6c2020-04-16 08:09:32 -0700273
Bin Meng1b3c8d62020-03-09 19:35:30 -0700274config SBI_V01
275 bool "SBI v0.1 support"
Bin Meng1b3c8d62020-03-09 19:35:30 -0700276 depends on SBI
277 help
278 This config allows kernel to use SBI v0.1 APIs. This will be
279 deprecated in future once legacy M-mode software are no longer in use.
280
Bin Mengff0fa6c2020-04-16 08:09:32 -0700281config SBI_V02
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100282 bool "SBI v0.2 or later support"
Bin Mengff0fa6c2020-04-16 08:09:32 -0700283 depends on SBI
284 help
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100285 The SBI specification introduced the concept of extensions in version
286 v0.2. With this configuration option U-Boot can detect and use SBI
287 extensions. With the HSM extension introduced in SBI 0.2, only a
288 single hart needs to boot and enter the operating system. The booting
289 hart can bring up secondary harts one by one afterwards.
Bin Mengff0fa6c2020-04-16 08:09:32 -0700290
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100291 Choose this option if OpenSBI release v0.7 or above is used together
Bin Mengff0fa6c2020-04-16 08:09:32 -0700292 with U-Boot.
293
294endchoice
295
Lukas Auerf152feb2019-03-17 19:28:34 +0100296config SBI_IPI
297 bool
Bin Mengf58fc342020-03-09 19:35:28 -0700298 depends on SBI
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200299 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auerf152feb2019-03-17 19:28:34 +0100300 depends on SMP
301
Rick Chenbdce3892019-04-30 13:49:33 +0800302config XIP
303 bool "XIP mode"
304 help
305 XIP (eXecute In Place) is a method for executing code directly
306 from a NOR flash memory without copying the code to ram.
307 Say yes here if U-Boot boots from flash directly.
308
Nikita Shubinc2bdf022022-09-02 11:47:39 +0300309config SPL_XIP
310 bool "Enable XIP mode for SPL"
311 help
312 If SPL starts in read-only memory (XIP for example) then we shouldn't
313 rely on lock variables (for example hart_lottery and available_harts_lock),
314 this affects only SPL, other stages should proceed as non-XIP.
315
Rick Chene0465f82022-09-21 14:34:54 +0800316config AVAILABLE_HARTS
317 bool "Send IPI by available harts"
318 default y
319 help
320 By default, IPI sending mechanism will depend on available_harts.
321 If disable this, it will send IPI by CPUs node numbers of device tree.
322
Sean Andersonfd1f6e92019-12-25 00:27:44 -0500323config SHOW_REGS
324 bool "Show registers on unhandled exception"
325
Sean Andersonb8bc1202020-06-24 06:41:19 -0400326config RISCV_PRIV_1_9
327 bool "Use version 1.9 of the RISC-V priviledged specification"
328 help
329 Older versions of the RISC-V priviledged specification had
330 separate counter enable CSRs for each privilege mode. Writing
331 to the unified mcounteren CSR on a processor implementing the
332 old specification will result in an illegal instruction
333 exception. In addition to counter CSR changes, the way virtual
334 memory is configured was also changed.
335
Lukas Auer3dea63c2019-03-17 19:28:37 +0100336config STACK_SIZE_SHIFT
337 int
Lukas Auer6b20dc12019-10-20 20:53:47 +0200338 default 14
Lukas Auer3dea63c2019-03-17 19:28:37 +0100339
Bin Meng1c17e552020-06-25 18:16:08 -0700340config OF_BOARD_FIXUP
Sean Anderson32cef692020-09-05 09:22:11 -0400341 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng1c17e552020-06-25 18:16:08 -0700342
Bin Meng89419272021-05-13 16:46:18 +0800343menu "Use assembly optimized implementation of memory routines"
344
Heinrich Schuchardt8f0dc4c2021-03-27 12:37:04 +0100345config USE_ARCH_MEMCPY
346 bool "Use an assembly optimized implementation of memcpy"
347 default y
348 help
349 Enable the generation of an optimized version of memcpy.
350 Such an implementation may be faster under some conditions
351 but may increase the binary size.
352
353config SPL_USE_ARCH_MEMCPY
354 bool "Use an assembly optimized implementation of memcpy for SPL"
355 default y if USE_ARCH_MEMCPY
356 depends on SPL
357 help
358 Enable the generation of an optimized version of memcpy.
359 Such an implementation may be faster under some conditions
360 but may increase the binary size.
361
362config TPL_USE_ARCH_MEMCPY
363 bool "Use an assembly optimized implementation of memcpy for TPL"
364 default y if USE_ARCH_MEMCPY
365 depends on TPL
366 help
367 Enable the generation of an optimized version of memcpy.
368 Such an implementation may be faster under some conditions
369 but may increase the binary size.
370
371config USE_ARCH_MEMMOVE
372 bool "Use an assembly optimized implementation of memmove"
373 default y
374 help
375 Enable the generation of an optimized version of memmove.
376 Such an implementation may be faster under some conditions
377 but may increase the binary size.
378
379config SPL_USE_ARCH_MEMMOVE
380 bool "Use an assembly optimized implementation of memmove for SPL"
381 default y if USE_ARCH_MEMCPY
382 depends on SPL
383 help
384 Enable the generation of an optimized version of memmove.
385 Such an implementation may be faster under some conditions
386 but may increase the binary size.
387
388config TPL_USE_ARCH_MEMMOVE
389 bool "Use an assembly optimized implementation of memmove for TPL"
390 default y if USE_ARCH_MEMCPY
391 depends on TPL
392 help
393 Enable the generation of an optimized version of memmove.
394 Such an implementation may be faster under some conditions
395 but may increase the binary size.
396
397config USE_ARCH_MEMSET
398 bool "Use an assembly optimized implementation of memset"
399 default y
400 help
401 Enable the generation of an optimized version of memset.
402 Such an implementation may be faster under some conditions
403 but may increase the binary size.
404
405config SPL_USE_ARCH_MEMSET
406 bool "Use an assembly optimized implementation of memset for SPL"
407 default y if USE_ARCH_MEMSET
408 depends on SPL
409 help
410 Enable the generation of an optimized version of memset.
411 Such an implementation may be faster under some conditions
412 but may increase the binary size.
413
414config TPL_USE_ARCH_MEMSET
415 bool "Use an assembly optimized implementation of memset for TPL"
416 default y if USE_ARCH_MEMSET
417 depends on TPL
418 help
419 Enable the generation of an optimized version of memset.
420 Such an implementation may be faster under some conditions
421 but may increase the binary size.
422
Rick Chenf94c44e2017-12-26 13:55:52 +0800423endmenu
Bin Meng89419272021-05-13 16:46:18 +0800424
425endmenu