blob: a8a61a943b4419271cd2be7e29fcc1f41152cdf7 [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
Sean Andersonedc32ab2020-06-24 06:41:25 -040023config TARGET_SIPEED_MAIX
24 bool "Support Sipeed Maix Board"
25
Rick Chen64d4ead2017-12-26 13:55:52 +080026endchoice
27
Trevor Woernerba64b8b2019-05-03 09:40:59 -040028config SYS_ICACHE_OFF
29 bool "Do not enable icache"
30 default n
31 help
32 Do not enable instruction cache in U-Boot.
33
Trevor Woerner43ec7e02019-05-03 09:41:00 -040034config SPL_SYS_ICACHE_OFF
35 bool "Do not enable icache in SPL"
36 depends on SPL
37 default SYS_ICACHE_OFF
38 help
39 Do not enable instruction cache in SPL.
40
Trevor Woernerba64b8b2019-05-03 09:40:59 -040041config SYS_DCACHE_OFF
42 bool "Do not enable dcache"
43 default n
44 help
45 Do not enable data cache in U-Boot.
46
Trevor Woerner43ec7e02019-05-03 09:41:00 -040047config SPL_SYS_DCACHE_OFF
48 bool "Do not enable dcache in SPL"
49 depends on SPL
50 default SYS_DCACHE_OFF
51 help
52 Do not enable data cache in SPL.
53
Rick Chen842d5802018-11-07 09:34:06 +080054# board-specific options below
Rick Chenb66af372018-05-29 09:54:40 +080055source "board/AndesTech/ax25-ae350/Kconfig"
Bin Meng8a8694d2018-09-26 06:55:21 -070056source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari4216f342019-05-28 15:47:51 +053057source "board/microchip/mpfs_icicle/Kconfig"
Bin Menge9ead4a2021-03-17 11:10:58 +080058source "board/sifive/unleashed/Kconfig"
Sean Andersonedc32ab2020-06-24 06:41:25 -040059source "board/sipeed/maix/Kconfig"
Rick Chen64d4ead2017-12-26 13:55:52 +080060
Rick Chen842d5802018-11-07 09:34:06 +080061# platform-specific options below
62source "arch/riscv/cpu/ax25/Kconfig"
Pragnesh Patel25269c02020-05-29 11:33:34 +053063source "arch/riscv/cpu/fu540/Kconfig"
Green Wan7f337432021-05-27 06:52:07 -070064source "arch/riscv/cpu/fu740/Kconfig"
Anup Patel1240cd62019-02-25 08:14:10 +000065source "arch/riscv/cpu/generic/Kconfig"
Rick Chen842d5802018-11-07 09:34:06 +080066
67# architecture-specific options below
68
Rick Chen64d4ead2017-12-26 13:55:52 +080069choice
Lukas Auer54ebfe72018-11-22 11:26:12 +010070 prompt "Base ISA"
71 default ARCH_RV32I
Rick Chen64d4ead2017-12-26 13:55:52 +080072
Lukas Auer54ebfe72018-11-22 11:26:12 +010073config ARCH_RV32I
74 bool "RV32I"
Rick Chen64d4ead2017-12-26 13:55:52 +080075 select 32BIT
76 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010077 Choose this option to target the RV32I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080078
Lukas Auer54ebfe72018-11-22 11:26:12 +010079config ARCH_RV64I
80 bool "RV64I"
Rick Chen64d4ead2017-12-26 13:55:52 +080081 select 64BIT
Lukas Auer7ab1df02018-11-22 11:26:13 +010082 select PHYS_64BIT
Rick Chen64d4ead2017-12-26 13:55:52 +080083 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010084 Choose this option to target the RV64I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080085
86endchoice
87
Lukas Auerecc5d832018-12-12 06:12:23 -080088choice
89 prompt "Code Model"
90 default CMODEL_MEDLOW
91
92config CMODEL_MEDLOW
93 bool "medium low code model"
94 help
95 U-Boot and its statically defined symbols must lie within a single 2 GiB
96 address range and must lie between absolute addresses -2 GiB and +2 GiB.
97
98config CMODEL_MEDANY
99 bool "medium any code model"
100 help
101 U-Boot and its statically defined symbols must be within any single 2 GiB
102 address range.
103
104endchoice
105
Anup Patel27881772018-12-12 06:12:29 -0800106choice
107 prompt "Run Mode"
108 default RISCV_MMODE
109
110config RISCV_MMODE
111 bool "Machine"
112 help
113 Choose this option to build U-Boot for RISC-V M-Mode.
114
115config RISCV_SMODE
116 bool "Supervisor"
117 help
118 Choose this option to build U-Boot for RISC-V S-Mode.
119
120endchoice
121
Lukas Auer61346592019-08-21 21:14:43 +0200122choice
123 prompt "SPL Run Mode"
124 default SPL_RISCV_MMODE
125 depends on SPL
126
127config SPL_RISCV_MMODE
128 bool "Machine"
129 help
130 Choose this option to build U-Boot SPL for RISC-V M-Mode.
131
132config SPL_RISCV_SMODE
133 bool "Supervisor"
134 help
135 Choose this option to build U-Boot SPL for RISC-V S-Mode.
136
137endchoice
138
Lukas Auer002012f2018-11-22 11:26:14 +0100139config RISCV_ISA_C
140 bool "Emit compressed instructions"
141 default y
142 help
143 Adds "C" to the ISA subsets that the toolchain is allowed to emit
144 when building U-Boot, which results in compressed instructions in the
145 U-Boot binary.
146
147config RISCV_ISA_A
148 def_bool y
149
Rick Chen64d4ead2017-12-26 13:55:52 +0800150config 32BIT
151 bool
152
153config 64BIT
154 bool
155
Padmarao Begaria235d432021-01-15 08:20:35 +0530156config DMA_ADDR_T_64BIT
157 bool
158 default y if 64BIT
159
Bin Mengb6ee5e12018-12-12 06:12:30 -0800160config SIFIVE_CLINT
161 bool
Bin Meng614b1d82021-05-11 20:04:12 +0800162 depends on RISCV_MMODE
163 help
164 The SiFive CLINT block holds memory-mapped control and status registers
165 associated with software and timer interrupts.
166
167config SPL_SIFIVE_CLINT
168 bool
169 depends on SPL_RISCV_MMODE
Bin Mengb6ee5e12018-12-12 06:12:30 -0800170 help
171 The SiFive CLINT block holds memory-mapped control and status registers
172 associated with software and timer interrupts.
173
Rick Chen6df4ed02019-04-02 15:56:39 +0800174config ANDES_PLIC
175 bool
Lukas Auer61346592019-08-21 21:14:43 +0200176 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen6df4ed02019-04-02 15:56:39 +0800177 select REGMAP
178 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200179 select SPL_REGMAP if SPL
180 select SPL_SYSCON if SPL
Rick Chen6df4ed02019-04-02 15:56:39 +0800181 help
182 The Andes PLIC block holds memory-mapped claim and pending registers
183 associated with software interrupt.
184
Bin Mengdada2d12018-12-12 06:12:33 -0800185config SYS_MALLOC_F_LEN
186 default 0x1000
187
Lukas Auer83d573d2019-03-17 19:28:32 +0100188config SMP
189 bool "Symmetric Multi-Processing"
Bin Meng49975222020-04-16 08:09:31 -0700190 depends on SBI_V01 || !RISCV_SMODE
Lukas Auer83d573d2019-03-17 19:28:32 +0100191 help
192 This enables support for systems with more than one CPU. If
193 you say N here, U-Boot will run on single and multiprocessor
194 machines, but will use only one CPU of a multiprocessor
195 machine. If you say Y here, U-Boot will run on many, but not
196 all, single processor machines.
197
Bin Mengb161f902020-04-16 08:09:30 -0700198config SPL_SMP
199 bool "Symmetric Multi-Processing in SPL"
200 depends on SPL && SPL_RISCV_MMODE
201 default y
202 help
203 This enables support for systems with more than one CPU in SPL.
204 If you say N here, U-Boot SPL will run on single and multiprocessor
205 machines, but will use only one CPU of a multiprocessor
206 machine. If you say Y here, U-Boot SPL will run on many, but not
207 all, single processor machines.
208
Lukas Auer83d573d2019-03-17 19:28:32 +0100209config NR_CPUS
210 int "Maximum number of CPUs (2-32)"
211 range 2 32
Bin Mengb161f902020-04-16 08:09:30 -0700212 depends on SMP || SPL_SMP
Lukas Auer83d573d2019-03-17 19:28:32 +0100213 default 8
214 help
215 On multiprocessor machines, U-Boot sets up a stack for each CPU.
216 Stack memory is pre-allocated. U-Boot must therefore know the
217 maximum number of CPUs that may be present.
218
Bin Mengee3bcd02020-03-09 19:35:28 -0700219config SBI
220 bool
221 default y if RISCV_SMODE || SPL_RISCV_SMODE
222
Bin Menga75325e2020-04-16 08:09:32 -0700223choice
224 prompt "SBI support"
Bin Meng3aecc4b2020-04-16 08:09:33 -0700225 default SBI_V02
Bin Menga75325e2020-04-16 08:09:32 -0700226
Bin Meng887d8092020-03-09 19:35:30 -0700227config SBI_V01
228 bool "SBI v0.1 support"
Bin Meng887d8092020-03-09 19:35:30 -0700229 depends on SBI
230 help
231 This config allows kernel to use SBI v0.1 APIs. This will be
232 deprecated in future once legacy M-mode software are no longer in use.
233
Bin Menga75325e2020-04-16 08:09:32 -0700234config SBI_V02
235 bool "SBI v0.2 support"
236 depends on SBI
237 help
238 This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
239 scalable and extendable to handle future needs for RISC-V supervisor
240 interfaces. For example, with SBI v0.2 HSM extension, only a single
241 hart need to boot and enter operating system. The booting hart can
242 bring up secondary harts one by one afterwards.
243
244 Choose this option if OpenSBI v0.7 or above release is used together
245 with U-Boot.
246
247endchoice
248
Lukas Auere79178b2019-03-17 19:28:34 +0100249config SBI_IPI
250 bool
Bin Mengee3bcd02020-03-09 19:35:28 -0700251 depends on SBI
Lukas Auer61346592019-08-21 21:14:43 +0200252 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auere79178b2019-03-17 19:28:34 +0100253 depends on SMP
254
Rick Chene5e6c362019-04-30 13:49:33 +0800255config XIP
256 bool "XIP mode"
257 help
258 XIP (eXecute In Place) is a method for executing code directly
259 from a NOR flash memory without copying the code to ram.
260 Say yes here if U-Boot boots from flash directly.
261
Sean Andersone8b46a12019-12-25 00:27:44 -0500262config SHOW_REGS
263 bool "Show registers on unhandled exception"
264
Sean Anderson7f4b6662020-06-24 06:41:19 -0400265config RISCV_PRIV_1_9
266 bool "Use version 1.9 of the RISC-V priviledged specification"
267 help
268 Older versions of the RISC-V priviledged specification had
269 separate counter enable CSRs for each privilege mode. Writing
270 to the unified mcounteren CSR on a processor implementing the
271 old specification will result in an illegal instruction
272 exception. In addition to counter CSR changes, the way virtual
273 memory is configured was also changed.
274
Lukas Auera3596652019-03-17 19:28:37 +0100275config STACK_SIZE_SHIFT
276 int
Lukas Auer03813702019-10-20 20:53:47 +0200277 default 14
Lukas Auera3596652019-03-17 19:28:37 +0100278
Bin Meng2bdcd052020-06-25 18:16:08 -0700279config OF_BOARD_FIXUP
Sean Anderson584a5ee2020-09-05 09:22:11 -0400280 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng2bdcd052020-06-25 18:16:08 -0700281
Bin Mengce64bd32021-05-13 16:46:18 +0800282menu "Use assembly optimized implementation of memory routines"
283
Heinrich Schuchardt23caf662021-03-27 12:37:04 +0100284config USE_ARCH_MEMCPY
285 bool "Use an assembly optimized implementation of memcpy"
286 default y
287 help
288 Enable the generation of an optimized version of memcpy.
289 Such an implementation may be faster under some conditions
290 but may increase the binary size.
291
292config SPL_USE_ARCH_MEMCPY
293 bool "Use an assembly optimized implementation of memcpy for SPL"
294 default y if USE_ARCH_MEMCPY
295 depends on SPL
296 help
297 Enable the generation of an optimized version of memcpy.
298 Such an implementation may be faster under some conditions
299 but may increase the binary size.
300
301config TPL_USE_ARCH_MEMCPY
302 bool "Use an assembly optimized implementation of memcpy for TPL"
303 default y if USE_ARCH_MEMCPY
304 depends on TPL
305 help
306 Enable the generation of an optimized version of memcpy.
307 Such an implementation may be faster under some conditions
308 but may increase the binary size.
309
310config USE_ARCH_MEMMOVE
311 bool "Use an assembly optimized implementation of memmove"
312 default y
313 help
314 Enable the generation of an optimized version of memmove.
315 Such an implementation may be faster under some conditions
316 but may increase the binary size.
317
318config SPL_USE_ARCH_MEMMOVE
319 bool "Use an assembly optimized implementation of memmove for SPL"
320 default y if USE_ARCH_MEMCPY
321 depends on SPL
322 help
323 Enable the generation of an optimized version of memmove.
324 Such an implementation may be faster under some conditions
325 but may increase the binary size.
326
327config TPL_USE_ARCH_MEMMOVE
328 bool "Use an assembly optimized implementation of memmove for TPL"
329 default y if USE_ARCH_MEMCPY
330 depends on TPL
331 help
332 Enable the generation of an optimized version of memmove.
333 Such an implementation may be faster under some conditions
334 but may increase the binary size.
335
336config USE_ARCH_MEMSET
337 bool "Use an assembly optimized implementation of memset"
338 default y
339 help
340 Enable the generation of an optimized version of memset.
341 Such an implementation may be faster under some conditions
342 but may increase the binary size.
343
344config SPL_USE_ARCH_MEMSET
345 bool "Use an assembly optimized implementation of memset for SPL"
346 default y if USE_ARCH_MEMSET
347 depends on SPL
348 help
349 Enable the generation of an optimized version of memset.
350 Such an implementation may be faster under some conditions
351 but may increase the binary size.
352
353config TPL_USE_ARCH_MEMSET
354 bool "Use an assembly optimized implementation of memset for TPL"
355 default y if USE_ARCH_MEMSET
356 depends on TPL
357 help
358 Enable the generation of an optimized version of memset.
359 Such an implementation may be faster under some conditions
360 but may increase the binary size.
361
Rick Chen64d4ead2017-12-26 13:55:52 +0800362endmenu
Bin Mengce64bd32021-05-13 16:46:18 +0800363
364endmenu