blob: b3d7fd84cec2983f24ff0f5af55653f4a550abdc [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"
25
Sean Andersonedc32ab2020-06-24 06:41:25 -040026config TARGET_SIPEED_MAIX
27 bool "Support Sipeed Maix Board"
28
Rick Chen64d4ead2017-12-26 13:55:52 +080029endchoice
30
Trevor Woernerba64b8b2019-05-03 09:40:59 -040031config SYS_ICACHE_OFF
32 bool "Do not enable icache"
33 default n
34 help
35 Do not enable instruction cache in U-Boot.
36
Trevor Woerner43ec7e02019-05-03 09:41:00 -040037config SPL_SYS_ICACHE_OFF
38 bool "Do not enable icache in SPL"
39 depends on SPL
40 default SYS_ICACHE_OFF
41 help
42 Do not enable instruction cache in SPL.
43
Trevor Woernerba64b8b2019-05-03 09:40:59 -040044config SYS_DCACHE_OFF
45 bool "Do not enable dcache"
46 default n
47 help
48 Do not enable data cache in U-Boot.
49
Trevor Woerner43ec7e02019-05-03 09:41:00 -040050config SPL_SYS_DCACHE_OFF
51 bool "Do not enable dcache in SPL"
52 depends on SPL
53 default SYS_DCACHE_OFF
54 help
55 Do not enable data cache in SPL.
56
Rick Chen842d5802018-11-07 09:34:06 +080057# board-specific options below
Rick Chenb66af372018-05-29 09:54:40 +080058source "board/AndesTech/ax25-ae350/Kconfig"
Bin Meng8a8694d2018-09-26 06:55:21 -070059source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari4216f342019-05-28 15:47:51 +053060source "board/microchip/mpfs_icicle/Kconfig"
Bin Menge9ead4a2021-03-17 11:10:58 +080061source "board/sifive/unleashed/Kconfig"
Green Wan2e5da522021-05-27 06:52:13 -070062source "board/sifive/unmatched/Kconfig"
Sean Andersonedc32ab2020-06-24 06:41:25 -040063source "board/sipeed/maix/Kconfig"
Rick Chen64d4ead2017-12-26 13:55:52 +080064
Rick Chen842d5802018-11-07 09:34:06 +080065# platform-specific options below
66source "arch/riscv/cpu/ax25/Kconfig"
Pragnesh Patel25269c02020-05-29 11:33:34 +053067source "arch/riscv/cpu/fu540/Kconfig"
Green Wan7f337432021-05-27 06:52:07 -070068source "arch/riscv/cpu/fu740/Kconfig"
Anup Patel1240cd62019-02-25 08:14:10 +000069source "arch/riscv/cpu/generic/Kconfig"
Rick Chen842d5802018-11-07 09:34:06 +080070
71# architecture-specific options below
72
Rick Chen64d4ead2017-12-26 13:55:52 +080073choice
Lukas Auer54ebfe72018-11-22 11:26:12 +010074 prompt "Base ISA"
75 default ARCH_RV32I
Rick Chen64d4ead2017-12-26 13:55:52 +080076
Lukas Auer54ebfe72018-11-22 11:26:12 +010077config ARCH_RV32I
78 bool "RV32I"
Rick Chen64d4ead2017-12-26 13:55:52 +080079 select 32BIT
80 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010081 Choose this option to target the RV32I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080082
Lukas Auer54ebfe72018-11-22 11:26:12 +010083config ARCH_RV64I
84 bool "RV64I"
Rick Chen64d4ead2017-12-26 13:55:52 +080085 select 64BIT
Lukas Auer7ab1df02018-11-22 11:26:13 +010086 select PHYS_64BIT
Rick Chen64d4ead2017-12-26 13:55:52 +080087 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010088 Choose this option to target the RV64I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080089
90endchoice
91
Lukas Auerecc5d832018-12-12 06:12:23 -080092choice
93 prompt "Code Model"
94 default CMODEL_MEDLOW
95
96config CMODEL_MEDLOW
97 bool "medium low code model"
98 help
99 U-Boot and its statically defined symbols must lie within a single 2 GiB
100 address range and must lie between absolute addresses -2 GiB and +2 GiB.
101
102config CMODEL_MEDANY
103 bool "medium any code model"
104 help
105 U-Boot and its statically defined symbols must be within any single 2 GiB
106 address range.
107
108endchoice
109
Anup Patel27881772018-12-12 06:12:29 -0800110choice
111 prompt "Run Mode"
112 default RISCV_MMODE
113
114config RISCV_MMODE
115 bool "Machine"
116 help
117 Choose this option to build U-Boot for RISC-V M-Mode.
118
119config RISCV_SMODE
120 bool "Supervisor"
121 help
122 Choose this option to build U-Boot for RISC-V S-Mode.
123
124endchoice
125
Lukas Auer61346592019-08-21 21:14:43 +0200126choice
127 prompt "SPL Run Mode"
128 default SPL_RISCV_MMODE
129 depends on SPL
130
131config SPL_RISCV_MMODE
132 bool "Machine"
133 help
134 Choose this option to build U-Boot SPL for RISC-V M-Mode.
135
136config SPL_RISCV_SMODE
137 bool "Supervisor"
138 help
139 Choose this option to build U-Boot SPL for RISC-V S-Mode.
140
141endchoice
142
Lukas Auer002012f2018-11-22 11:26:14 +0100143config RISCV_ISA_C
144 bool "Emit compressed instructions"
145 default y
146 help
147 Adds "C" to the ISA subsets that the toolchain is allowed to emit
148 when building U-Boot, which results in compressed instructions in the
149 U-Boot binary.
150
151config RISCV_ISA_A
152 def_bool y
153
Rick Chen64d4ead2017-12-26 13:55:52 +0800154config 32BIT
155 bool
156
157config 64BIT
158 bool
159
Padmarao Begaria235d432021-01-15 08:20:35 +0530160config DMA_ADDR_T_64BIT
161 bool
162 default y if 64BIT
163
Bin Mengb6ee5e12018-12-12 06:12:30 -0800164config SIFIVE_CLINT
165 bool
Bin Meng614b1d82021-05-11 20:04:12 +0800166 depends on RISCV_MMODE
167 help
168 The SiFive CLINT block holds memory-mapped control and status registers
169 associated with software and timer interrupts.
170
171config SPL_SIFIVE_CLINT
172 bool
173 depends on SPL_RISCV_MMODE
Bin Mengb6ee5e12018-12-12 06:12:30 -0800174 help
175 The SiFive CLINT block holds memory-mapped control and status registers
176 associated with software and timer interrupts.
177
Rick Chen6df4ed02019-04-02 15:56:39 +0800178config ANDES_PLIC
179 bool
Lukas Auer61346592019-08-21 21:14:43 +0200180 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen6df4ed02019-04-02 15:56:39 +0800181 select REGMAP
182 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200183 select SPL_REGMAP if SPL
184 select SPL_SYSCON if SPL
Rick Chen6df4ed02019-04-02 15:56:39 +0800185 help
186 The Andes PLIC block holds memory-mapped claim and pending registers
187 associated with software interrupt.
188
Bin Mengdada2d12018-12-12 06:12:33 -0800189config SYS_MALLOC_F_LEN
190 default 0x1000
191
Lukas Auer83d573d2019-03-17 19:28:32 +0100192config SMP
193 bool "Symmetric Multi-Processing"
Bin Meng49975222020-04-16 08:09:31 -0700194 depends on SBI_V01 || !RISCV_SMODE
Lukas Auer83d573d2019-03-17 19:28:32 +0100195 help
196 This enables support for systems with more than one CPU. If
197 you say N here, U-Boot will run on single and multiprocessor
198 machines, but will use only one CPU of a multiprocessor
199 machine. If you say Y here, U-Boot will run on many, but not
200 all, single processor machines.
201
Bin Mengb161f902020-04-16 08:09:30 -0700202config SPL_SMP
203 bool "Symmetric Multi-Processing in SPL"
204 depends on SPL && SPL_RISCV_MMODE
205 default y
206 help
207 This enables support for systems with more than one CPU in SPL.
208 If you say N here, U-Boot SPL will run on single and multiprocessor
209 machines, but will use only one CPU of a multiprocessor
210 machine. If you say Y here, U-Boot SPL will run on many, but not
211 all, single processor machines.
212
Lukas Auer83d573d2019-03-17 19:28:32 +0100213config NR_CPUS
214 int "Maximum number of CPUs (2-32)"
215 range 2 32
Bin Mengb161f902020-04-16 08:09:30 -0700216 depends on SMP || SPL_SMP
Lukas Auer83d573d2019-03-17 19:28:32 +0100217 default 8
218 help
219 On multiprocessor machines, U-Boot sets up a stack for each CPU.
220 Stack memory is pre-allocated. U-Boot must therefore know the
221 maximum number of CPUs that may be present.
222
Bin Mengee3bcd02020-03-09 19:35:28 -0700223config SBI
224 bool
225 default y if RISCV_SMODE || SPL_RISCV_SMODE
226
Bin Menga75325e2020-04-16 08:09:32 -0700227choice
228 prompt "SBI support"
Bin Meng3aecc4b2020-04-16 08:09:33 -0700229 default SBI_V02
Bin Menga75325e2020-04-16 08:09:32 -0700230
Bin Meng887d8092020-03-09 19:35:30 -0700231config SBI_V01
232 bool "SBI v0.1 support"
Bin Meng887d8092020-03-09 19:35:30 -0700233 depends on SBI
234 help
235 This config allows kernel to use SBI v0.1 APIs. This will be
236 deprecated in future once legacy M-mode software are no longer in use.
237
Bin Menga75325e2020-04-16 08:09:32 -0700238config SBI_V02
239 bool "SBI v0.2 support"
240 depends on SBI
241 help
242 This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
243 scalable and extendable to handle future needs for RISC-V supervisor
244 interfaces. For example, with SBI v0.2 HSM extension, only a single
245 hart need to boot and enter operating system. The booting hart can
246 bring up secondary harts one by one afterwards.
247
248 Choose this option if OpenSBI v0.7 or above release is used together
249 with U-Boot.
250
251endchoice
252
Lukas Auere79178b2019-03-17 19:28:34 +0100253config SBI_IPI
254 bool
Bin Mengee3bcd02020-03-09 19:35:28 -0700255 depends on SBI
Lukas Auer61346592019-08-21 21:14:43 +0200256 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auere79178b2019-03-17 19:28:34 +0100257 depends on SMP
258
Rick Chene5e6c362019-04-30 13:49:33 +0800259config XIP
260 bool "XIP mode"
261 help
262 XIP (eXecute In Place) is a method for executing code directly
263 from a NOR flash memory without copying the code to ram.
264 Say yes here if U-Boot boots from flash directly.
265
Sean Andersone8b46a12019-12-25 00:27:44 -0500266config SHOW_REGS
267 bool "Show registers on unhandled exception"
268
Sean Anderson7f4b6662020-06-24 06:41:19 -0400269config RISCV_PRIV_1_9
270 bool "Use version 1.9 of the RISC-V priviledged specification"
271 help
272 Older versions of the RISC-V priviledged specification had
273 separate counter enable CSRs for each privilege mode. Writing
274 to the unified mcounteren CSR on a processor implementing the
275 old specification will result in an illegal instruction
276 exception. In addition to counter CSR changes, the way virtual
277 memory is configured was also changed.
278
Lukas Auera3596652019-03-17 19:28:37 +0100279config STACK_SIZE_SHIFT
280 int
Lukas Auer03813702019-10-20 20:53:47 +0200281 default 14
Lukas Auera3596652019-03-17 19:28:37 +0100282
Bin Meng2bdcd052020-06-25 18:16:08 -0700283config OF_BOARD_FIXUP
Sean Anderson584a5ee2020-09-05 09:22:11 -0400284 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng2bdcd052020-06-25 18:16:08 -0700285
Bin Mengce64bd32021-05-13 16:46:18 +0800286menu "Use assembly optimized implementation of memory routines"
287
Heinrich Schuchardt23caf662021-03-27 12:37:04 +0100288config USE_ARCH_MEMCPY
289 bool "Use an assembly optimized implementation of memcpy"
290 default y
291 help
292 Enable the generation of an optimized version of memcpy.
293 Such an implementation may be faster under some conditions
294 but may increase the binary size.
295
296config SPL_USE_ARCH_MEMCPY
297 bool "Use an assembly optimized implementation of memcpy for SPL"
298 default y if USE_ARCH_MEMCPY
299 depends on SPL
300 help
301 Enable the generation of an optimized version of memcpy.
302 Such an implementation may be faster under some conditions
303 but may increase the binary size.
304
305config TPL_USE_ARCH_MEMCPY
306 bool "Use an assembly optimized implementation of memcpy for TPL"
307 default y if USE_ARCH_MEMCPY
308 depends on TPL
309 help
310 Enable the generation of an optimized version of memcpy.
311 Such an implementation may be faster under some conditions
312 but may increase the binary size.
313
314config USE_ARCH_MEMMOVE
315 bool "Use an assembly optimized implementation of memmove"
316 default y
317 help
318 Enable the generation of an optimized version of memmove.
319 Such an implementation may be faster under some conditions
320 but may increase the binary size.
321
322config SPL_USE_ARCH_MEMMOVE
323 bool "Use an assembly optimized implementation of memmove for SPL"
324 default y if USE_ARCH_MEMCPY
325 depends on SPL
326 help
327 Enable the generation of an optimized version of memmove.
328 Such an implementation may be faster under some conditions
329 but may increase the binary size.
330
331config TPL_USE_ARCH_MEMMOVE
332 bool "Use an assembly optimized implementation of memmove for TPL"
333 default y if USE_ARCH_MEMCPY
334 depends on TPL
335 help
336 Enable the generation of an optimized version of memmove.
337 Such an implementation may be faster under some conditions
338 but may increase the binary size.
339
340config USE_ARCH_MEMSET
341 bool "Use an assembly optimized implementation of memset"
342 default y
343 help
344 Enable the generation of an optimized version of memset.
345 Such an implementation may be faster under some conditions
346 but may increase the binary size.
347
348config SPL_USE_ARCH_MEMSET
349 bool "Use an assembly optimized implementation of memset for SPL"
350 default y if USE_ARCH_MEMSET
351 depends on SPL
352 help
353 Enable the generation of an optimized version of memset.
354 Such an implementation may be faster under some conditions
355 but may increase the binary size.
356
357config TPL_USE_ARCH_MEMSET
358 bool "Use an assembly optimized implementation of memset for TPL"
359 default y if USE_ARCH_MEMSET
360 depends on TPL
361 help
362 Enable the generation of an optimized version of memset.
363 Such an implementation may be faster under some conditions
364 but may increase the binary size.
365
Rick Chen64d4ead2017-12-26 13:55:52 +0800366endmenu
Bin Mengce64bd32021-05-13 16:46:18 +0800367
368endmenu