blob: 867cbcbe74eb52f1c4a98a4e488f7699442cd01d [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
Rick Chen52923c62018-11-07 09:34:06 +080067# board-specific options below
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080068source "board/AndesTech/ae350/Kconfig"
Bin Meng510e3792018-09-26 06:55:21 -070069source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari39494822019-05-28 15:47:51 +053070source "board/microchip/mpfs_icicle/Kconfig"
Bin Mengae2d9502021-03-17 11:10:58 +080071source "board/sifive/unleashed/Kconfig"
Green Wan70415e12021-05-27 06:52:13 -070072source "board/sifive/unmatched/Kconfig"
Yixun Lan5f3a7fd2023-07-08 19:24:32 +080073source "board/thead/th1520_lpi4a/Kconfig"
Tianrui Wei8a44fe62021-07-01 12:54:19 +080074source "board/openpiton/riscv64/Kconfig"
Sean Andersona7c81fc2020-06-24 06:41:25 -040075source "board/sipeed/maix/Kconfig"
Yanhong Wang331ad932023-03-29 11:42:20 +080076source "board/starfive/visionfive2/Kconfig"
Rick Chenf94c44e2017-12-26 13:55:52 +080077
Rick Chen52923c62018-11-07 09:34:06 +080078# platform-specific options below
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080079source "arch/riscv/cpu/andesv5/Kconfig"
Pragnesh Patel7c45fc92020-05-29 11:33:34 +053080source "arch/riscv/cpu/fu540/Kconfig"
Green Wana74e9d82021-05-27 06:52:07 -070081source "arch/riscv/cpu/fu740/Kconfig"
Anup Patelfdff1f92019-02-25 08:14:10 +000082source "arch/riscv/cpu/generic/Kconfig"
Yanhong Wang331ad932023-03-29 11:42:20 +080083source "arch/riscv/cpu/jh7110/Kconfig"
Rick Chen52923c62018-11-07 09:34:06 +080084
85# architecture-specific options below
86
Rick Chenf94c44e2017-12-26 13:55:52 +080087choice
Lukas Auer862e2e72018-11-22 11:26:12 +010088 prompt "Base ISA"
89 default ARCH_RV32I
Rick Chenf94c44e2017-12-26 13:55:52 +080090
Lukas Auer862e2e72018-11-22 11:26:12 +010091config ARCH_RV32I
92 bool "RV32I"
Rick Chenf94c44e2017-12-26 13:55:52 +080093 select 32BIT
94 help
Lukas Auer862e2e72018-11-22 11:26:12 +010095 Choose this option to target the RV32I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080096
Lukas Auer862e2e72018-11-22 11:26:12 +010097config ARCH_RV64I
98 bool "RV64I"
Rick Chenf94c44e2017-12-26 13:55:52 +080099 select 64BIT
Lukas Auer71158562018-11-22 11:26:13 +0100100 select PHYS_64BIT
Rick Chenf94c44e2017-12-26 13:55:52 +0800101 help
Lukas Auer862e2e72018-11-22 11:26:12 +0100102 Choose this option to target the RV64I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +0800103
104endchoice
105
Lukas Auer8176ea42018-12-12 06:12:23 -0800106choice
107 prompt "Code Model"
108 default CMODEL_MEDLOW
109
110config CMODEL_MEDLOW
111 bool "medium low code model"
112 help
113 U-Boot and its statically defined symbols must lie within a single 2 GiB
114 address range and must lie between absolute addresses -2 GiB and +2 GiB.
115
116config CMODEL_MEDANY
117 bool "medium any code model"
118 help
119 U-Boot and its statically defined symbols must be within any single 2 GiB
120 address range.
121
122endchoice
123
Anup Patel3cfc8252018-12-12 06:12:29 -0800124choice
125 prompt "Run Mode"
126 default RISCV_MMODE
127
128config RISCV_MMODE
129 bool "Machine"
130 help
131 Choose this option to build U-Boot for RISC-V M-Mode.
132
133config RISCV_SMODE
134 bool "Supervisor"
135 help
136 Choose this option to build U-Boot for RISC-V S-Mode.
137
138endchoice
139
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200140choice
141 prompt "SPL Run Mode"
142 default SPL_RISCV_MMODE
143 depends on SPL
144
145config SPL_RISCV_MMODE
146 bool "Machine"
147 help
148 Choose this option to build U-Boot SPL for RISC-V M-Mode.
149
150config SPL_RISCV_SMODE
151 bool "Supervisor"
152 help
153 Choose this option to build U-Boot SPL for RISC-V S-Mode.
154
155endchoice
156
Lukas Auerd57ffa62018-11-22 11:26:14 +0100157config RISCV_ISA_C
158 bool "Emit compressed instructions"
159 default y
160 help
161 Adds "C" to the ISA subsets that the toolchain is allowed to emit
162 when building U-Boot, which results in compressed instructions in the
163 U-Boot binary.
164
Heinrich Schuchardte67f34f2022-10-12 14:59:51 +0200165config RISCV_ISA_F
166 bool "Standard extension for Single-Precision Floating Point"
167 default y
168 help
169 Adds "F" to the ISA string passed to the compiler.
170
171config RISCV_ISA_D
172 bool "Standard extension for Double-Precision Floating Point"
173 depends on RISCV_ISA_F
174 default y
175 help
176 Adds "D" to the ISA string passed to the compiler and changes the
177 riscv32 ABI from ilp32 to ilp32d and the riscv64 ABI from lp64 to
178 lp64d.
179
Lukas Auerd57ffa62018-11-22 11:26:14 +0100180config RISCV_ISA_A
181 def_bool y
182
Rick Chenf94c44e2017-12-26 13:55:52 +0800183config 32BIT
184 bool
185
186config 64BIT
187 bool
188
Padmarao Begari5af35742021-01-15 08:20:35 +0530189config DMA_ADDR_T_64BIT
190 bool
191 default y if 64BIT
192
Bin Meng9675d922023-06-21 23:11:46 +0800193config RISCV_ACLINT
Bin Meng644a3cd2018-12-12 06:12:30 -0800194 bool
Bin Menga6d7e8c2021-05-11 20:04:12 +0800195 depends on RISCV_MMODE
Bin Meng7f1a30f2023-06-21 23:11:45 +0800196 select REGMAP
197 select SYSCON
Bin Menga6d7e8c2021-05-11 20:04:12 +0800198 help
Bin Meng9675d922023-06-21 23:11:46 +0800199 The RISC-V ACLINT block holds memory-mapped control and status registers
Bin Menga6d7e8c2021-05-11 20:04:12 +0800200 associated with software and timer interrupts.
201
Bin Meng9675d922023-06-21 23:11:46 +0800202config SPL_RISCV_ACLINT
Bin Menga6d7e8c2021-05-11 20:04:12 +0800203 bool
204 depends on SPL_RISCV_MMODE
Bin Meng7f1a30f2023-06-21 23:11:45 +0800205 select SPL_REGMAP
206 select SPL_SYSCON
Bin Meng644a3cd2018-12-12 06:12:30 -0800207 help
Bin Meng9675d922023-06-21 23:11:46 +0800208 The RISC-V ACLINT block holds memory-mapped control and status registers
Bin Meng644a3cd2018-12-12 06:12:30 -0800209 associated with software and timer interrupts.
210
Zong Li213ed172021-09-01 15:01:41 +0800211config SIFIVE_CACHE
212 bool
213 help
214 This enables the operations to configure SiFive cache
215
Yu Chien Peter Lina5dfa3b2022-10-25 23:03:50 +0800216config ANDES_PLICSW
Rick Chen0d389462019-04-02 15:56:39 +0800217 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200218 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen0d389462019-04-02 15:56:39 +0800219 select REGMAP
220 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200221 select SPL_REGMAP if SPL
222 select SPL_SYSCON if SPL
Rick Chen0d389462019-04-02 15:56:39 +0800223 help
Yu Chien Peter Lina5dfa3b2022-10-25 23:03:50 +0800224 The Andes PLICSW block holds memory-mapped claim and pending
225 registers associated with software interrupt.
Rick Chen0d389462019-04-02 15:56:39 +0800226
Lukas Auerfa33f082019-03-17 19:28:32 +0100227config SMP
228 bool "Symmetric Multi-Processing"
Bin Meng6fa022e2020-04-16 08:09:31 -0700229 depends on SBI_V01 || !RISCV_SMODE
Lukas Auerfa33f082019-03-17 19:28:32 +0100230 help
231 This enables support for systems with more than one CPU. If
232 you say N here, U-Boot will run on single and multiprocessor
233 machines, but will use only one CPU of a multiprocessor
234 machine. If you say Y here, U-Boot will run on many, but not
235 all, single processor machines.
236
Bin Meng191636e2020-04-16 08:09:30 -0700237config SPL_SMP
238 bool "Symmetric Multi-Processing in SPL"
239 depends on SPL && SPL_RISCV_MMODE
240 default y
241 help
242 This enables support for systems with more than one CPU in SPL.
243 If you say N here, U-Boot SPL will run on single and multiprocessor
244 machines, but will use only one CPU of a multiprocessor
245 machine. If you say Y here, U-Boot SPL will run on many, but not
246 all, single processor machines.
247
Lukas Auerfa33f082019-03-17 19:28:32 +0100248config NR_CPUS
249 int "Maximum number of CPUs (2-32)"
250 range 2 32
Bin Meng191636e2020-04-16 08:09:30 -0700251 depends on SMP || SPL_SMP
Lukas Auerfa33f082019-03-17 19:28:32 +0100252 default 8
253 help
254 On multiprocessor machines, U-Boot sets up a stack for each CPU.
255 Stack memory is pre-allocated. U-Boot must therefore know the
256 maximum number of CPUs that may be present.
257
Bin Mengf58fc342020-03-09 19:35:28 -0700258config SBI
259 bool
260 default y if RISCV_SMODE || SPL_RISCV_SMODE
261
Bin Mengff0fa6c2020-04-16 08:09:32 -0700262choice
263 prompt "SBI support"
Bin Mengfa16ec22020-04-16 08:09:33 -0700264 default SBI_V02
Bin Mengff0fa6c2020-04-16 08:09:32 -0700265
Bin Meng1b3c8d62020-03-09 19:35:30 -0700266config SBI_V01
267 bool "SBI v0.1 support"
Bin Meng1b3c8d62020-03-09 19:35:30 -0700268 depends on SBI
269 help
270 This config allows kernel to use SBI v0.1 APIs. This will be
271 deprecated in future once legacy M-mode software are no longer in use.
272
Bin Mengff0fa6c2020-04-16 08:09:32 -0700273config SBI_V02
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100274 bool "SBI v0.2 or later support"
Bin Mengff0fa6c2020-04-16 08:09:32 -0700275 depends on SBI
276 help
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100277 The SBI specification introduced the concept of extensions in version
278 v0.2. With this configuration option U-Boot can detect and use SBI
279 extensions. With the HSM extension introduced in SBI 0.2, only a
280 single hart needs to boot and enter the operating system. The booting
281 hart can bring up secondary harts one by one afterwards.
Bin Mengff0fa6c2020-04-16 08:09:32 -0700282
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100283 Choose this option if OpenSBI release v0.7 or above is used together
Bin Mengff0fa6c2020-04-16 08:09:32 -0700284 with U-Boot.
285
286endchoice
287
Lukas Auerf152feb2019-03-17 19:28:34 +0100288config SBI_IPI
289 bool
Bin Mengf58fc342020-03-09 19:35:28 -0700290 depends on SBI
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200291 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auerf152feb2019-03-17 19:28:34 +0100292 depends on SMP
293
Rick Chenbdce3892019-04-30 13:49:33 +0800294config XIP
295 bool "XIP mode"
296 help
297 XIP (eXecute In Place) is a method for executing code directly
298 from a NOR flash memory without copying the code to ram.
299 Say yes here if U-Boot boots from flash directly.
300
Nikita Shubinc2bdf022022-09-02 11:47:39 +0300301config SPL_XIP
302 bool "Enable XIP mode for SPL"
303 help
304 If SPL starts in read-only memory (XIP for example) then we shouldn't
305 rely on lock variables (for example hart_lottery and available_harts_lock),
306 this affects only SPL, other stages should proceed as non-XIP.
307
Rick Chene0465f82022-09-21 14:34:54 +0800308config AVAILABLE_HARTS
309 bool "Send IPI by available harts"
310 default y
311 help
312 By default, IPI sending mechanism will depend on available_harts.
313 If disable this, it will send IPI by CPUs node numbers of device tree.
314
Sean Andersonfd1f6e92019-12-25 00:27:44 -0500315config SHOW_REGS
316 bool "Show registers on unhandled exception"
317
Sean Andersonb8bc1202020-06-24 06:41:19 -0400318config RISCV_PRIV_1_9
319 bool "Use version 1.9 of the RISC-V priviledged specification"
320 help
321 Older versions of the RISC-V priviledged specification had
322 separate counter enable CSRs for each privilege mode. Writing
323 to the unified mcounteren CSR on a processor implementing the
324 old specification will result in an illegal instruction
325 exception. In addition to counter CSR changes, the way virtual
326 memory is configured was also changed.
327
Lukas Auer3dea63c2019-03-17 19:28:37 +0100328config STACK_SIZE_SHIFT
329 int
Lukas Auer6b20dc12019-10-20 20:53:47 +0200330 default 14
Lukas Auer3dea63c2019-03-17 19:28:37 +0100331
Bin Meng1c17e552020-06-25 18:16:08 -0700332config OF_BOARD_FIXUP
Sean Anderson32cef692020-09-05 09:22:11 -0400333 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng1c17e552020-06-25 18:16:08 -0700334
Bin Meng89419272021-05-13 16:46:18 +0800335menu "Use assembly optimized implementation of memory routines"
336
Heinrich Schuchardt8f0dc4c2021-03-27 12:37:04 +0100337config USE_ARCH_MEMCPY
338 bool "Use an assembly optimized implementation of memcpy"
339 default y
340 help
341 Enable the generation of an optimized version of memcpy.
342 Such an implementation may be faster under some conditions
343 but may increase the binary size.
344
345config SPL_USE_ARCH_MEMCPY
346 bool "Use an assembly optimized implementation of memcpy for SPL"
347 default y if USE_ARCH_MEMCPY
348 depends on SPL
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 TPL_USE_ARCH_MEMCPY
355 bool "Use an assembly optimized implementation of memcpy for TPL"
356 default y if USE_ARCH_MEMCPY
357 depends on TPL
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 USE_ARCH_MEMMOVE
364 bool "Use an assembly optimized implementation of memmove"
365 default y
366 help
367 Enable the generation of an optimized version of memmove.
368 Such an implementation may be faster under some conditions
369 but may increase the binary size.
370
371config SPL_USE_ARCH_MEMMOVE
372 bool "Use an assembly optimized implementation of memmove for SPL"
373 default y if USE_ARCH_MEMCPY
374 depends on SPL
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 TPL_USE_ARCH_MEMMOVE
381 bool "Use an assembly optimized implementation of memmove for TPL"
382 default y if USE_ARCH_MEMCPY
383 depends on TPL
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 USE_ARCH_MEMSET
390 bool "Use an assembly optimized implementation of memset"
391 default y
392 help
393 Enable the generation of an optimized version of memset.
394 Such an implementation may be faster under some conditions
395 but may increase the binary size.
396
397config SPL_USE_ARCH_MEMSET
398 bool "Use an assembly optimized implementation of memset for SPL"
399 default y if USE_ARCH_MEMSET
400 depends on SPL
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 TPL_USE_ARCH_MEMSET
407 bool "Use an assembly optimized implementation of memset for TPL"
408 default y if USE_ARCH_MEMSET
409 depends on TPL
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
Rick Chenf94c44e2017-12-26 13:55:52 +0800415endmenu
Bin Meng89419272021-05-13 16:46:18 +0800416
417endmenu