blob: f6ed05906a2f8687b65f75f22654afa79877997e [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
Sean Andersona7c81fc2020-06-24 06:41:25 -040030config TARGET_SIPEED_MAIX
31 bool "Support Sipeed Maix Board"
Tom Riniab92b382021-08-26 11:47:59 -040032 select SYS_CACHE_SHIFT_6
Sean Andersona7c81fc2020-06-24 06:41:25 -040033
Tianrui Wei8a44fe62021-07-01 12:54:19 +080034config TARGET_OPENPITON_RISCV64
35 bool "Support RISC-V cores on OpenPiton SoC"
36
Rick Chenf94c44e2017-12-26 13:55:52 +080037endchoice
38
Trevor Woernera0aba8a2019-05-03 09:40:59 -040039config SYS_ICACHE_OFF
40 bool "Do not enable icache"
Trevor Woernera0aba8a2019-05-03 09:40:59 -040041 help
42 Do not enable instruction cache in U-Boot.
43
Trevor Woerner10015022019-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 Woernera0aba8a2019-05-03 09:40:59 -040051config SYS_DCACHE_OFF
52 bool "Do not enable dcache"
Trevor Woernera0aba8a2019-05-03 09:40:59 -040053 help
54 Do not enable data cache in U-Boot.
55
Trevor Woerner10015022019-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 Chen52923c62018-11-07 09:34:06 +080063# board-specific options below
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080064source "board/AndesTech/ae350/Kconfig"
Bin Meng510e3792018-09-26 06:55:21 -070065source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari39494822019-05-28 15:47:51 +053066source "board/microchip/mpfs_icicle/Kconfig"
Bin Mengae2d9502021-03-17 11:10:58 +080067source "board/sifive/unleashed/Kconfig"
Green Wan70415e12021-05-27 06:52:13 -070068source "board/sifive/unmatched/Kconfig"
Tianrui Wei8a44fe62021-07-01 12:54:19 +080069source "board/openpiton/riscv64/Kconfig"
Sean Andersona7c81fc2020-06-24 06:41:25 -040070source "board/sipeed/maix/Kconfig"
Yanhong Wang331ad932023-03-29 11:42:20 +080071source "board/starfive/visionfive2/Kconfig"
Rick Chenf94c44e2017-12-26 13:55:52 +080072
Rick Chen52923c62018-11-07 09:34:06 +080073# platform-specific options below
Leo Yu-Chi Liang8900e2b2023-02-14 20:42:49 +080074source "arch/riscv/cpu/andesv5/Kconfig"
Pragnesh Patel7c45fc92020-05-29 11:33:34 +053075source "arch/riscv/cpu/fu540/Kconfig"
Green Wana74e9d82021-05-27 06:52:07 -070076source "arch/riscv/cpu/fu740/Kconfig"
Anup Patelfdff1f92019-02-25 08:14:10 +000077source "arch/riscv/cpu/generic/Kconfig"
Yanhong Wang331ad932023-03-29 11:42:20 +080078source "arch/riscv/cpu/jh7110/Kconfig"
Rick Chen52923c62018-11-07 09:34:06 +080079
80# architecture-specific options below
81
Rick Chenf94c44e2017-12-26 13:55:52 +080082choice
Lukas Auer862e2e72018-11-22 11:26:12 +010083 prompt "Base ISA"
84 default ARCH_RV32I
Rick Chenf94c44e2017-12-26 13:55:52 +080085
Lukas Auer862e2e72018-11-22 11:26:12 +010086config ARCH_RV32I
87 bool "RV32I"
Rick Chenf94c44e2017-12-26 13:55:52 +080088 select 32BIT
89 help
Lukas Auer862e2e72018-11-22 11:26:12 +010090 Choose this option to target the RV32I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080091
Lukas Auer862e2e72018-11-22 11:26:12 +010092config ARCH_RV64I
93 bool "RV64I"
Rick Chenf94c44e2017-12-26 13:55:52 +080094 select 64BIT
Lukas Auer71158562018-11-22 11:26:13 +010095 select PHYS_64BIT
Rick Chenf94c44e2017-12-26 13:55:52 +080096 help
Lukas Auer862e2e72018-11-22 11:26:12 +010097 Choose this option to target the RV64I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080098
99endchoice
100
Lukas Auer8176ea42018-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 Patel3cfc8252018-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 Auerfbfd92b2019-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 Auerd57ffa62018-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 Schuchardte67f34f2022-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 Auerd57ffa62018-11-22 11:26:14 +0100175config RISCV_ISA_A
176 def_bool y
177
Rick Chenf94c44e2017-12-26 13:55:52 +0800178config 32BIT
179 bool
180
181config 64BIT
182 bool
183
Padmarao Begari5af35742021-01-15 08:20:35 +0530184config DMA_ADDR_T_64BIT
185 bool
186 default y if 64BIT
187
Bin Meng644a3cd2018-12-12 06:12:30 -0800188config SIFIVE_CLINT
189 bool
Bin Menga6d7e8c2021-05-11 20:04:12 +0800190 depends on RISCV_MMODE
191 help
192 The SiFive CLINT block holds memory-mapped control and status registers
193 associated with software and timer interrupts.
194
195config SPL_SIFIVE_CLINT
196 bool
197 depends on SPL_RISCV_MMODE
Bin Meng644a3cd2018-12-12 06:12:30 -0800198 help
199 The SiFive CLINT block holds memory-mapped control and status registers
200 associated with software and timer interrupts.
201
Zong Li213ed172021-09-01 15:01:41 +0800202config SIFIVE_CACHE
203 bool
204 help
205 This enables the operations to configure SiFive cache
206
Yu Chien Peter Lina5dfa3b2022-10-25 23:03:50 +0800207config ANDES_PLICSW
Rick Chen0d389462019-04-02 15:56:39 +0800208 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200209 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen0d389462019-04-02 15:56:39 +0800210 select REGMAP
211 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200212 select SPL_REGMAP if SPL
213 select SPL_SYSCON if SPL
Rick Chen0d389462019-04-02 15:56:39 +0800214 help
Yu Chien Peter Lina5dfa3b2022-10-25 23:03:50 +0800215 The Andes PLICSW block holds memory-mapped claim and pending
216 registers associated with software interrupt.
Rick Chen0d389462019-04-02 15:56:39 +0800217
Lukas Auerfa33f082019-03-17 19:28:32 +0100218config SMP
219 bool "Symmetric Multi-Processing"
Bin Meng6fa022e2020-04-16 08:09:31 -0700220 depends on SBI_V01 || !RISCV_SMODE
Lukas Auerfa33f082019-03-17 19:28:32 +0100221 help
222 This enables support for systems with more than one CPU. If
223 you say N here, U-Boot will run on single and multiprocessor
224 machines, but will use only one CPU of a multiprocessor
225 machine. If you say Y here, U-Boot will run on many, but not
226 all, single processor machines.
227
Bin Meng191636e2020-04-16 08:09:30 -0700228config SPL_SMP
229 bool "Symmetric Multi-Processing in SPL"
230 depends on SPL && SPL_RISCV_MMODE
231 default y
232 help
233 This enables support for systems with more than one CPU in SPL.
234 If you say N here, U-Boot SPL will run on single and multiprocessor
235 machines, but will use only one CPU of a multiprocessor
236 machine. If you say Y here, U-Boot SPL will run on many, but not
237 all, single processor machines.
238
Lukas Auerfa33f082019-03-17 19:28:32 +0100239config NR_CPUS
240 int "Maximum number of CPUs (2-32)"
241 range 2 32
Bin Meng191636e2020-04-16 08:09:30 -0700242 depends on SMP || SPL_SMP
Lukas Auerfa33f082019-03-17 19:28:32 +0100243 default 8
244 help
245 On multiprocessor machines, U-Boot sets up a stack for each CPU.
246 Stack memory is pre-allocated. U-Boot must therefore know the
247 maximum number of CPUs that may be present.
248
Bin Mengf58fc342020-03-09 19:35:28 -0700249config SBI
250 bool
251 default y if RISCV_SMODE || SPL_RISCV_SMODE
252
Bin Mengff0fa6c2020-04-16 08:09:32 -0700253choice
254 prompt "SBI support"
Bin Mengfa16ec22020-04-16 08:09:33 -0700255 default SBI_V02
Bin Mengff0fa6c2020-04-16 08:09:32 -0700256
Bin Meng1b3c8d62020-03-09 19:35:30 -0700257config SBI_V01
258 bool "SBI v0.1 support"
Bin Meng1b3c8d62020-03-09 19:35:30 -0700259 depends on SBI
260 help
261 This config allows kernel to use SBI v0.1 APIs. This will be
262 deprecated in future once legacy M-mode software are no longer in use.
263
Bin Mengff0fa6c2020-04-16 08:09:32 -0700264config SBI_V02
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100265 bool "SBI v0.2 or later support"
Bin Mengff0fa6c2020-04-16 08:09:32 -0700266 depends on SBI
267 help
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100268 The SBI specification introduced the concept of extensions in version
269 v0.2. With this configuration option U-Boot can detect and use SBI
270 extensions. With the HSM extension introduced in SBI 0.2, only a
271 single hart needs to boot and enter the operating system. The booting
272 hart can bring up secondary harts one by one afterwards.
Bin Mengff0fa6c2020-04-16 08:09:32 -0700273
Heinrich Schuchardt5c894672022-11-08 15:53:12 +0100274 Choose this option if OpenSBI release v0.7 or above is used together
Bin Mengff0fa6c2020-04-16 08:09:32 -0700275 with U-Boot.
276
277endchoice
278
Lukas Auerf152feb2019-03-17 19:28:34 +0100279config SBI_IPI
280 bool
Bin Mengf58fc342020-03-09 19:35:28 -0700281 depends on SBI
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200282 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auerf152feb2019-03-17 19:28:34 +0100283 depends on SMP
284
Rick Chenbdce3892019-04-30 13:49:33 +0800285config XIP
286 bool "XIP mode"
287 help
288 XIP (eXecute In Place) is a method for executing code directly
289 from a NOR flash memory without copying the code to ram.
290 Say yes here if U-Boot boots from flash directly.
291
Nikita Shubinc2bdf022022-09-02 11:47:39 +0300292config SPL_XIP
293 bool "Enable XIP mode for SPL"
294 help
295 If SPL starts in read-only memory (XIP for example) then we shouldn't
296 rely on lock variables (for example hart_lottery and available_harts_lock),
297 this affects only SPL, other stages should proceed as non-XIP.
298
Rick Chene0465f82022-09-21 14:34:54 +0800299config AVAILABLE_HARTS
300 bool "Send IPI by available harts"
301 default y
302 help
303 By default, IPI sending mechanism will depend on available_harts.
304 If disable this, it will send IPI by CPUs node numbers of device tree.
305
Sean Andersonfd1f6e92019-12-25 00:27:44 -0500306config SHOW_REGS
307 bool "Show registers on unhandled exception"
308
Sean Andersonb8bc1202020-06-24 06:41:19 -0400309config RISCV_PRIV_1_9
310 bool "Use version 1.9 of the RISC-V priviledged specification"
311 help
312 Older versions of the RISC-V priviledged specification had
313 separate counter enable CSRs for each privilege mode. Writing
314 to the unified mcounteren CSR on a processor implementing the
315 old specification will result in an illegal instruction
316 exception. In addition to counter CSR changes, the way virtual
317 memory is configured was also changed.
318
Lukas Auer3dea63c2019-03-17 19:28:37 +0100319config STACK_SIZE_SHIFT
320 int
Lukas Auer6b20dc12019-10-20 20:53:47 +0200321 default 14
Lukas Auer3dea63c2019-03-17 19:28:37 +0100322
Bin Meng1c17e552020-06-25 18:16:08 -0700323config OF_BOARD_FIXUP
Sean Anderson32cef692020-09-05 09:22:11 -0400324 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng1c17e552020-06-25 18:16:08 -0700325
Bin Meng89419272021-05-13 16:46:18 +0800326menu "Use assembly optimized implementation of memory routines"
327
Heinrich Schuchardt8f0dc4c2021-03-27 12:37:04 +0100328config USE_ARCH_MEMCPY
329 bool "Use an assembly optimized implementation of memcpy"
330 default y
331 help
332 Enable the generation of an optimized version of memcpy.
333 Such an implementation may be faster under some conditions
334 but may increase the binary size.
335
336config SPL_USE_ARCH_MEMCPY
337 bool "Use an assembly optimized implementation of memcpy for SPL"
338 default y if USE_ARCH_MEMCPY
339 depends on SPL
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 TPL_USE_ARCH_MEMCPY
346 bool "Use an assembly optimized implementation of memcpy for TPL"
347 default y if USE_ARCH_MEMCPY
348 depends on TPL
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 USE_ARCH_MEMMOVE
355 bool "Use an assembly optimized implementation of memmove"
356 default y
357 help
358 Enable the generation of an optimized version of memmove.
359 Such an implementation may be faster under some conditions
360 but may increase the binary size.
361
362config SPL_USE_ARCH_MEMMOVE
363 bool "Use an assembly optimized implementation of memmove for SPL"
364 default y if USE_ARCH_MEMCPY
365 depends on SPL
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 TPL_USE_ARCH_MEMMOVE
372 bool "Use an assembly optimized implementation of memmove for TPL"
373 default y if USE_ARCH_MEMCPY
374 depends on TPL
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 USE_ARCH_MEMSET
381 bool "Use an assembly optimized implementation of memset"
382 default y
383 help
384 Enable the generation of an optimized version of memset.
385 Such an implementation may be faster under some conditions
386 but may increase the binary size.
387
388config SPL_USE_ARCH_MEMSET
389 bool "Use an assembly optimized implementation of memset for SPL"
390 default y if USE_ARCH_MEMSET
391 depends on SPL
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 TPL_USE_ARCH_MEMSET
398 bool "Use an assembly optimized implementation of memset for TPL"
399 default y if USE_ARCH_MEMSET
400 depends on TPL
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
Rick Chenf94c44e2017-12-26 13:55:52 +0800406endmenu
Bin Meng89419272021-05-13 16:46:18 +0800407
408endmenu