blob: 691ed113824557d192ae093dd1e20149362c37a2 [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
Rick Chenb66af372018-05-29 09:54:40 +080011config TARGET_AX25_AE350
12 bool "Support ax25-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
Sean Andersonedc32ab2020-06-24 06:41:25 -040027config TARGET_SIPEED_MAIX
28 bool "Support Sipeed Maix Board"
Tom Rini3ef67ae2021-08-26 11:47:59 -040029 select SYS_CACHE_SHIFT_6
Sean Andersonedc32ab2020-06-24 06:41:25 -040030
Tianrui Wei2ef594d2021-07-01 12:54:19 +080031config TARGET_OPENPITON_RISCV64
32 bool "Support RISC-V cores on OpenPiton SoC"
33
Rick Chen64d4ead2017-12-26 13:55:52 +080034endchoice
35
Trevor Woernerba64b8b2019-05-03 09:40:59 -040036config SYS_ICACHE_OFF
37 bool "Do not enable icache"
38 default n
39 help
40 Do not enable instruction cache in U-Boot.
41
Trevor Woerner43ec7e02019-05-03 09:41:00 -040042config SPL_SYS_ICACHE_OFF
43 bool "Do not enable icache in SPL"
44 depends on SPL
45 default SYS_ICACHE_OFF
46 help
47 Do not enable instruction cache in SPL.
48
Trevor Woernerba64b8b2019-05-03 09:40:59 -040049config SYS_DCACHE_OFF
50 bool "Do not enable dcache"
51 default n
52 help
53 Do not enable data cache in U-Boot.
54
Trevor Woerner43ec7e02019-05-03 09:41:00 -040055config SPL_SYS_DCACHE_OFF
56 bool "Do not enable dcache in SPL"
57 depends on SPL
58 default SYS_DCACHE_OFF
59 help
60 Do not enable data cache in SPL.
61
Rick Chen842d5802018-11-07 09:34:06 +080062# board-specific options below
Rick Chenb66af372018-05-29 09:54:40 +080063source "board/AndesTech/ax25-ae350/Kconfig"
Bin Meng8a8694d2018-09-26 06:55:21 -070064source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari4216f342019-05-28 15:47:51 +053065source "board/microchip/mpfs_icicle/Kconfig"
Bin Menge9ead4a2021-03-17 11:10:58 +080066source "board/sifive/unleashed/Kconfig"
Green Wan2e5da522021-05-27 06:52:13 -070067source "board/sifive/unmatched/Kconfig"
Tianrui Wei2ef594d2021-07-01 12:54:19 +080068source "board/openpiton/riscv64/Kconfig"
Sean Andersonedc32ab2020-06-24 06:41:25 -040069source "board/sipeed/maix/Kconfig"
Rick Chen64d4ead2017-12-26 13:55:52 +080070
Rick Chen842d5802018-11-07 09:34:06 +080071# platform-specific options below
72source "arch/riscv/cpu/ax25/Kconfig"
Pragnesh Patel25269c02020-05-29 11:33:34 +053073source "arch/riscv/cpu/fu540/Kconfig"
Green Wan7f337432021-05-27 06:52:07 -070074source "arch/riscv/cpu/fu740/Kconfig"
Anup Patel1240cd62019-02-25 08:14:10 +000075source "arch/riscv/cpu/generic/Kconfig"
Rick Chen842d5802018-11-07 09:34:06 +080076
77# architecture-specific options below
78
Rick Chen64d4ead2017-12-26 13:55:52 +080079choice
Lukas Auer54ebfe72018-11-22 11:26:12 +010080 prompt "Base ISA"
81 default ARCH_RV32I
Rick Chen64d4ead2017-12-26 13:55:52 +080082
Lukas Auer54ebfe72018-11-22 11:26:12 +010083config ARCH_RV32I
84 bool "RV32I"
Rick Chen64d4ead2017-12-26 13:55:52 +080085 select 32BIT
86 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010087 Choose this option to target the RV32I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080088
Lukas Auer54ebfe72018-11-22 11:26:12 +010089config ARCH_RV64I
90 bool "RV64I"
Rick Chen64d4ead2017-12-26 13:55:52 +080091 select 64BIT
Lukas Auer7ab1df02018-11-22 11:26:13 +010092 select PHYS_64BIT
Rick Chen64d4ead2017-12-26 13:55:52 +080093 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010094 Choose this option to target the RV64I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080095
96endchoice
97
Lukas Auerecc5d832018-12-12 06:12:23 -080098choice
99 prompt "Code Model"
100 default CMODEL_MEDLOW
101
102config CMODEL_MEDLOW
103 bool "medium low code model"
104 help
105 U-Boot and its statically defined symbols must lie within a single 2 GiB
106 address range and must lie between absolute addresses -2 GiB and +2 GiB.
107
108config CMODEL_MEDANY
109 bool "medium any code model"
110 help
111 U-Boot and its statically defined symbols must be within any single 2 GiB
112 address range.
113
114endchoice
115
Anup Patel27881772018-12-12 06:12:29 -0800116choice
117 prompt "Run Mode"
118 default RISCV_MMODE
119
120config RISCV_MMODE
121 bool "Machine"
122 help
123 Choose this option to build U-Boot for RISC-V M-Mode.
124
125config RISCV_SMODE
126 bool "Supervisor"
127 help
128 Choose this option to build U-Boot for RISC-V S-Mode.
129
130endchoice
131
Lukas Auer61346592019-08-21 21:14:43 +0200132choice
133 prompt "SPL Run Mode"
134 default SPL_RISCV_MMODE
135 depends on SPL
136
137config SPL_RISCV_MMODE
138 bool "Machine"
139 help
140 Choose this option to build U-Boot SPL for RISC-V M-Mode.
141
142config SPL_RISCV_SMODE
143 bool "Supervisor"
144 help
145 Choose this option to build U-Boot SPL for RISC-V S-Mode.
146
147endchoice
148
Lukas Auer002012f2018-11-22 11:26:14 +0100149config RISCV_ISA_C
150 bool "Emit compressed instructions"
151 default y
152 help
153 Adds "C" to the ISA subsets that the toolchain is allowed to emit
154 when building U-Boot, which results in compressed instructions in the
155 U-Boot binary.
156
157config RISCV_ISA_A
158 def_bool y
159
Rick Chen64d4ead2017-12-26 13:55:52 +0800160config 32BIT
161 bool
162
163config 64BIT
164 bool
165
Padmarao Begaria235d432021-01-15 08:20:35 +0530166config DMA_ADDR_T_64BIT
167 bool
168 default y if 64BIT
169
Bin Mengb6ee5e12018-12-12 06:12:30 -0800170config SIFIVE_CLINT
171 bool
Bin Meng614b1d82021-05-11 20:04:12 +0800172 depends on RISCV_MMODE
173 help
174 The SiFive CLINT block holds memory-mapped control and status registers
175 associated with software and timer interrupts.
176
177config SPL_SIFIVE_CLINT
178 bool
179 depends on SPL_RISCV_MMODE
Bin Mengb6ee5e12018-12-12 06:12:30 -0800180 help
181 The SiFive CLINT block holds memory-mapped control and status registers
182 associated with software and timer interrupts.
183
Rick Chen6df4ed02019-04-02 15:56:39 +0800184config ANDES_PLIC
185 bool
Lukas Auer61346592019-08-21 21:14:43 +0200186 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen6df4ed02019-04-02 15:56:39 +0800187 select REGMAP
188 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200189 select SPL_REGMAP if SPL
190 select SPL_SYSCON if SPL
Rick Chen6df4ed02019-04-02 15:56:39 +0800191 help
192 The Andes PLIC block holds memory-mapped claim and pending registers
193 associated with software interrupt.
194
Bin Mengdada2d12018-12-12 06:12:33 -0800195config SYS_MALLOC_F_LEN
196 default 0x1000
197
Lukas Auer83d573d2019-03-17 19:28:32 +0100198config SMP
199 bool "Symmetric Multi-Processing"
Bin Meng49975222020-04-16 08:09:31 -0700200 depends on SBI_V01 || !RISCV_SMODE
Lukas Auer83d573d2019-03-17 19:28:32 +0100201 help
202 This enables support for systems with more than one CPU. If
203 you say N here, U-Boot will run on single and multiprocessor
204 machines, but will use only one CPU of a multiprocessor
205 machine. If you say Y here, U-Boot will run on many, but not
206 all, single processor machines.
207
Bin Mengb161f902020-04-16 08:09:30 -0700208config SPL_SMP
209 bool "Symmetric Multi-Processing in SPL"
210 depends on SPL && SPL_RISCV_MMODE
211 default y
212 help
213 This enables support for systems with more than one CPU in SPL.
214 If you say N here, U-Boot SPL will run on single and multiprocessor
215 machines, but will use only one CPU of a multiprocessor
216 machine. If you say Y here, U-Boot SPL will run on many, but not
217 all, single processor machines.
218
Lukas Auer83d573d2019-03-17 19:28:32 +0100219config NR_CPUS
220 int "Maximum number of CPUs (2-32)"
221 range 2 32
Bin Mengb161f902020-04-16 08:09:30 -0700222 depends on SMP || SPL_SMP
Lukas Auer83d573d2019-03-17 19:28:32 +0100223 default 8
224 help
225 On multiprocessor machines, U-Boot sets up a stack for each CPU.
226 Stack memory is pre-allocated. U-Boot must therefore know the
227 maximum number of CPUs that may be present.
228
Bin Mengee3bcd02020-03-09 19:35:28 -0700229config SBI
230 bool
231 default y if RISCV_SMODE || SPL_RISCV_SMODE
232
Bin Menga75325e2020-04-16 08:09:32 -0700233choice
234 prompt "SBI support"
Bin Meng3aecc4b2020-04-16 08:09:33 -0700235 default SBI_V02
Bin Menga75325e2020-04-16 08:09:32 -0700236
Bin Meng887d8092020-03-09 19:35:30 -0700237config SBI_V01
238 bool "SBI v0.1 support"
Bin Meng887d8092020-03-09 19:35:30 -0700239 depends on SBI
240 help
241 This config allows kernel to use SBI v0.1 APIs. This will be
242 deprecated in future once legacy M-mode software are no longer in use.
243
Bin Menga75325e2020-04-16 08:09:32 -0700244config SBI_V02
245 bool "SBI v0.2 support"
246 depends on SBI
247 help
248 This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
249 scalable and extendable to handle future needs for RISC-V supervisor
250 interfaces. For example, with SBI v0.2 HSM extension, only a single
251 hart need to boot and enter operating system. The booting hart can
252 bring up secondary harts one by one afterwards.
253
254 Choose this option if OpenSBI v0.7 or above release is used together
255 with U-Boot.
256
257endchoice
258
Lukas Auere79178b2019-03-17 19:28:34 +0100259config SBI_IPI
260 bool
Bin Mengee3bcd02020-03-09 19:35:28 -0700261 depends on SBI
Lukas Auer61346592019-08-21 21:14:43 +0200262 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auere79178b2019-03-17 19:28:34 +0100263 depends on SMP
264
Rick Chene5e6c362019-04-30 13:49:33 +0800265config XIP
266 bool "XIP mode"
267 help
268 XIP (eXecute In Place) is a method for executing code directly
269 from a NOR flash memory without copying the code to ram.
270 Say yes here if U-Boot boots from flash directly.
271
Sean Andersone8b46a12019-12-25 00:27:44 -0500272config SHOW_REGS
273 bool "Show registers on unhandled exception"
274
Sean Anderson7f4b6662020-06-24 06:41:19 -0400275config RISCV_PRIV_1_9
276 bool "Use version 1.9 of the RISC-V priviledged specification"
277 help
278 Older versions of the RISC-V priviledged specification had
279 separate counter enable CSRs for each privilege mode. Writing
280 to the unified mcounteren CSR on a processor implementing the
281 old specification will result in an illegal instruction
282 exception. In addition to counter CSR changes, the way virtual
283 memory is configured was also changed.
284
Lukas Auera3596652019-03-17 19:28:37 +0100285config STACK_SIZE_SHIFT
286 int
Lukas Auer03813702019-10-20 20:53:47 +0200287 default 14
Lukas Auera3596652019-03-17 19:28:37 +0100288
Bin Meng2bdcd052020-06-25 18:16:08 -0700289config OF_BOARD_FIXUP
Sean Anderson584a5ee2020-09-05 09:22:11 -0400290 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng2bdcd052020-06-25 18:16:08 -0700291
Bin Mengce64bd32021-05-13 16:46:18 +0800292menu "Use assembly optimized implementation of memory routines"
293
Heinrich Schuchardt23caf662021-03-27 12:37:04 +0100294config USE_ARCH_MEMCPY
295 bool "Use an assembly optimized implementation of memcpy"
296 default y
297 help
298 Enable the generation of an optimized version of memcpy.
299 Such an implementation may be faster under some conditions
300 but may increase the binary size.
301
302config SPL_USE_ARCH_MEMCPY
303 bool "Use an assembly optimized implementation of memcpy for SPL"
304 default y if USE_ARCH_MEMCPY
305 depends on SPL
306 help
307 Enable the generation of an optimized version of memcpy.
308 Such an implementation may be faster under some conditions
309 but may increase the binary size.
310
311config TPL_USE_ARCH_MEMCPY
312 bool "Use an assembly optimized implementation of memcpy for TPL"
313 default y if USE_ARCH_MEMCPY
314 depends on TPL
315 help
316 Enable the generation of an optimized version of memcpy.
317 Such an implementation may be faster under some conditions
318 but may increase the binary size.
319
320config USE_ARCH_MEMMOVE
321 bool "Use an assembly optimized implementation of memmove"
322 default y
323 help
324 Enable the generation of an optimized version of memmove.
325 Such an implementation may be faster under some conditions
326 but may increase the binary size.
327
328config SPL_USE_ARCH_MEMMOVE
329 bool "Use an assembly optimized implementation of memmove for SPL"
330 default y if USE_ARCH_MEMCPY
331 depends on SPL
332 help
333 Enable the generation of an optimized version of memmove.
334 Such an implementation may be faster under some conditions
335 but may increase the binary size.
336
337config TPL_USE_ARCH_MEMMOVE
338 bool "Use an assembly optimized implementation of memmove for TPL"
339 default y if USE_ARCH_MEMCPY
340 depends on TPL
341 help
342 Enable the generation of an optimized version of memmove.
343 Such an implementation may be faster under some conditions
344 but may increase the binary size.
345
346config USE_ARCH_MEMSET
347 bool "Use an assembly optimized implementation of memset"
348 default y
349 help
350 Enable the generation of an optimized version of memset.
351 Such an implementation may be faster under some conditions
352 but may increase the binary size.
353
354config SPL_USE_ARCH_MEMSET
355 bool "Use an assembly optimized implementation of memset for SPL"
356 default y if USE_ARCH_MEMSET
357 depends on SPL
358 help
359 Enable the generation of an optimized version of memset.
360 Such an implementation may be faster under some conditions
361 but may increase the binary size.
362
363config TPL_USE_ARCH_MEMSET
364 bool "Use an assembly optimized implementation of memset for TPL"
365 default y if USE_ARCH_MEMSET
366 depends on TPL
367 help
368 Enable the generation of an optimized version of memset.
369 Such an implementation may be faster under some conditions
370 but may increase the binary size.
371
Rick Chen64d4ead2017-12-26 13:55:52 +0800372endmenu
Bin Mengce64bd32021-05-13 16:46:18 +0800373
374endmenu