blob: 63665d210ca94baa2837c009282efe7715a88c50 [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"
Anup Patel1240cd62019-02-25 08:14:10 +000064source "arch/riscv/cpu/generic/Kconfig"
Rick Chen842d5802018-11-07 09:34:06 +080065
66# architecture-specific options below
67
Rick Chen64d4ead2017-12-26 13:55:52 +080068choice
Lukas Auer54ebfe72018-11-22 11:26:12 +010069 prompt "Base ISA"
70 default ARCH_RV32I
Rick Chen64d4ead2017-12-26 13:55:52 +080071
Lukas Auer54ebfe72018-11-22 11:26:12 +010072config ARCH_RV32I
73 bool "RV32I"
Rick Chen64d4ead2017-12-26 13:55:52 +080074 select 32BIT
75 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010076 Choose this option to target the RV32I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080077
Lukas Auer54ebfe72018-11-22 11:26:12 +010078config ARCH_RV64I
79 bool "RV64I"
Rick Chen64d4ead2017-12-26 13:55:52 +080080 select 64BIT
Lukas Auer7ab1df02018-11-22 11:26:13 +010081 select PHYS_64BIT
Rick Chen64d4ead2017-12-26 13:55:52 +080082 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010083 Choose this option to target the RV64I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080084
85endchoice
86
Lukas Auerecc5d832018-12-12 06:12:23 -080087choice
88 prompt "Code Model"
89 default CMODEL_MEDLOW
90
91config CMODEL_MEDLOW
92 bool "medium low code model"
93 help
94 U-Boot and its statically defined symbols must lie within a single 2 GiB
95 address range and must lie between absolute addresses -2 GiB and +2 GiB.
96
97config CMODEL_MEDANY
98 bool "medium any code model"
99 help
100 U-Boot and its statically defined symbols must be within any single 2 GiB
101 address range.
102
103endchoice
104
Anup Patel27881772018-12-12 06:12:29 -0800105choice
106 prompt "Run Mode"
107 default RISCV_MMODE
108
109config RISCV_MMODE
110 bool "Machine"
111 help
112 Choose this option to build U-Boot for RISC-V M-Mode.
113
114config RISCV_SMODE
115 bool "Supervisor"
116 help
117 Choose this option to build U-Boot for RISC-V S-Mode.
118
119endchoice
120
Lukas Auer61346592019-08-21 21:14:43 +0200121choice
122 prompt "SPL Run Mode"
123 default SPL_RISCV_MMODE
124 depends on SPL
125
126config SPL_RISCV_MMODE
127 bool "Machine"
128 help
129 Choose this option to build U-Boot SPL for RISC-V M-Mode.
130
131config SPL_RISCV_SMODE
132 bool "Supervisor"
133 help
134 Choose this option to build U-Boot SPL for RISC-V S-Mode.
135
136endchoice
137
Lukas Auer002012f2018-11-22 11:26:14 +0100138config RISCV_ISA_C
139 bool "Emit compressed instructions"
140 default y
141 help
142 Adds "C" to the ISA subsets that the toolchain is allowed to emit
143 when building U-Boot, which results in compressed instructions in the
144 U-Boot binary.
145
146config RISCV_ISA_A
147 def_bool y
148
Rick Chen64d4ead2017-12-26 13:55:52 +0800149config 32BIT
150 bool
151
152config 64BIT
153 bool
154
Padmarao Begaria235d432021-01-15 08:20:35 +0530155config DMA_ADDR_T_64BIT
156 bool
157 default y if 64BIT
158
Bin Mengb6ee5e12018-12-12 06:12:30 -0800159config SIFIVE_CLINT
160 bool
Bin Meng614b1d82021-05-11 20:04:12 +0800161 depends on RISCV_MMODE
162 help
163 The SiFive CLINT block holds memory-mapped control and status registers
164 associated with software and timer interrupts.
165
166config SPL_SIFIVE_CLINT
167 bool
168 depends on SPL_RISCV_MMODE
Bin Mengb6ee5e12018-12-12 06:12:30 -0800169 help
170 The SiFive CLINT block holds memory-mapped control and status registers
171 associated with software and timer interrupts.
172
Rick Chen6df4ed02019-04-02 15:56:39 +0800173config ANDES_PLIC
174 bool
Lukas Auer61346592019-08-21 21:14:43 +0200175 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen6df4ed02019-04-02 15:56:39 +0800176 select REGMAP
177 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200178 select SPL_REGMAP if SPL
179 select SPL_SYSCON if SPL
Rick Chen6df4ed02019-04-02 15:56:39 +0800180 help
181 The Andes PLIC block holds memory-mapped claim and pending registers
182 associated with software interrupt.
183
Bin Mengdada2d12018-12-12 06:12:33 -0800184config SYS_MALLOC_F_LEN
185 default 0x1000
186
Lukas Auer83d573d2019-03-17 19:28:32 +0100187config SMP
188 bool "Symmetric Multi-Processing"
Bin Meng49975222020-04-16 08:09:31 -0700189 depends on SBI_V01 || !RISCV_SMODE
Lukas Auer83d573d2019-03-17 19:28:32 +0100190 help
191 This enables support for systems with more than one CPU. If
192 you say N here, U-Boot will run on single and multiprocessor
193 machines, but will use only one CPU of a multiprocessor
194 machine. If you say Y here, U-Boot will run on many, but not
195 all, single processor machines.
196
Bin Mengb161f902020-04-16 08:09:30 -0700197config SPL_SMP
198 bool "Symmetric Multi-Processing in SPL"
199 depends on SPL && SPL_RISCV_MMODE
200 default y
201 help
202 This enables support for systems with more than one CPU in SPL.
203 If you say N here, U-Boot SPL 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 SPL will run on many, but not
206 all, single processor machines.
207
Lukas Auer83d573d2019-03-17 19:28:32 +0100208config NR_CPUS
209 int "Maximum number of CPUs (2-32)"
210 range 2 32
Bin Mengb161f902020-04-16 08:09:30 -0700211 depends on SMP || SPL_SMP
Lukas Auer83d573d2019-03-17 19:28:32 +0100212 default 8
213 help
214 On multiprocessor machines, U-Boot sets up a stack for each CPU.
215 Stack memory is pre-allocated. U-Boot must therefore know the
216 maximum number of CPUs that may be present.
217
Bin Mengee3bcd02020-03-09 19:35:28 -0700218config SBI
219 bool
220 default y if RISCV_SMODE || SPL_RISCV_SMODE
221
Bin Menga75325e2020-04-16 08:09:32 -0700222choice
223 prompt "SBI support"
Bin Meng3aecc4b2020-04-16 08:09:33 -0700224 default SBI_V02
Bin Menga75325e2020-04-16 08:09:32 -0700225
Bin Meng887d8092020-03-09 19:35:30 -0700226config SBI_V01
227 bool "SBI v0.1 support"
Bin Meng887d8092020-03-09 19:35:30 -0700228 depends on SBI
229 help
230 This config allows kernel to use SBI v0.1 APIs. This will be
231 deprecated in future once legacy M-mode software are no longer in use.
232
Bin Menga75325e2020-04-16 08:09:32 -0700233config SBI_V02
234 bool "SBI v0.2 support"
235 depends on SBI
236 help
237 This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
238 scalable and extendable to handle future needs for RISC-V supervisor
239 interfaces. For example, with SBI v0.2 HSM extension, only a single
240 hart need to boot and enter operating system. The booting hart can
241 bring up secondary harts one by one afterwards.
242
243 Choose this option if OpenSBI v0.7 or above release is used together
244 with U-Boot.
245
246endchoice
247
Lukas Auere79178b2019-03-17 19:28:34 +0100248config SBI_IPI
249 bool
Bin Mengee3bcd02020-03-09 19:35:28 -0700250 depends on SBI
Lukas Auer61346592019-08-21 21:14:43 +0200251 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auere79178b2019-03-17 19:28:34 +0100252 depends on SMP
253
Rick Chene5e6c362019-04-30 13:49:33 +0800254config XIP
255 bool "XIP mode"
256 help
257 XIP (eXecute In Place) is a method for executing code directly
258 from a NOR flash memory without copying the code to ram.
259 Say yes here if U-Boot boots from flash directly.
260
Sean Andersone8b46a12019-12-25 00:27:44 -0500261config SHOW_REGS
262 bool "Show registers on unhandled exception"
263
Sean Anderson7f4b6662020-06-24 06:41:19 -0400264config RISCV_PRIV_1_9
265 bool "Use version 1.9 of the RISC-V priviledged specification"
266 help
267 Older versions of the RISC-V priviledged specification had
268 separate counter enable CSRs for each privilege mode. Writing
269 to the unified mcounteren CSR on a processor implementing the
270 old specification will result in an illegal instruction
271 exception. In addition to counter CSR changes, the way virtual
272 memory is configured was also changed.
273
Lukas Auera3596652019-03-17 19:28:37 +0100274config STACK_SIZE_SHIFT
275 int
Lukas Auer03813702019-10-20 20:53:47 +0200276 default 14
Lukas Auera3596652019-03-17 19:28:37 +0100277
Bin Meng2bdcd052020-06-25 18:16:08 -0700278config OF_BOARD_FIXUP
Sean Anderson584a5ee2020-09-05 09:22:11 -0400279 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng2bdcd052020-06-25 18:16:08 -0700280
Bin Mengce64bd32021-05-13 16:46:18 +0800281menu "Use assembly optimized implementation of memory routines"
282
Heinrich Schuchardt23caf662021-03-27 12:37:04 +0100283config USE_ARCH_MEMCPY
284 bool "Use an assembly optimized implementation of memcpy"
285 default y
286 help
287 Enable the generation of an optimized version of memcpy.
288 Such an implementation may be faster under some conditions
289 but may increase the binary size.
290
291config SPL_USE_ARCH_MEMCPY
292 bool "Use an assembly optimized implementation of memcpy for SPL"
293 default y if USE_ARCH_MEMCPY
294 depends on SPL
295 help
296 Enable the generation of an optimized version of memcpy.
297 Such an implementation may be faster under some conditions
298 but may increase the binary size.
299
300config TPL_USE_ARCH_MEMCPY
301 bool "Use an assembly optimized implementation of memcpy for TPL"
302 default y if USE_ARCH_MEMCPY
303 depends on TPL
304 help
305 Enable the generation of an optimized version of memcpy.
306 Such an implementation may be faster under some conditions
307 but may increase the binary size.
308
309config USE_ARCH_MEMMOVE
310 bool "Use an assembly optimized implementation of memmove"
311 default y
312 help
313 Enable the generation of an optimized version of memmove.
314 Such an implementation may be faster under some conditions
315 but may increase the binary size.
316
317config SPL_USE_ARCH_MEMMOVE
318 bool "Use an assembly optimized implementation of memmove for SPL"
319 default y if USE_ARCH_MEMCPY
320 depends on SPL
321 help
322 Enable the generation of an optimized version of memmove.
323 Such an implementation may be faster under some conditions
324 but may increase the binary size.
325
326config TPL_USE_ARCH_MEMMOVE
327 bool "Use an assembly optimized implementation of memmove for TPL"
328 default y if USE_ARCH_MEMCPY
329 depends on TPL
330 help
331 Enable the generation of an optimized version of memmove.
332 Such an implementation may be faster under some conditions
333 but may increase the binary size.
334
335config USE_ARCH_MEMSET
336 bool "Use an assembly optimized implementation of memset"
337 default y
338 help
339 Enable the generation of an optimized version of memset.
340 Such an implementation may be faster under some conditions
341 but may increase the binary size.
342
343config SPL_USE_ARCH_MEMSET
344 bool "Use an assembly optimized implementation of memset for SPL"
345 default y if USE_ARCH_MEMSET
346 depends on SPL
347 help
348 Enable the generation of an optimized version of memset.
349 Such an implementation may be faster under some conditions
350 but may increase the binary size.
351
352config TPL_USE_ARCH_MEMSET
353 bool "Use an assembly optimized implementation of memset for TPL"
354 default y if USE_ARCH_MEMSET
355 depends on TPL
356 help
357 Enable the generation of an optimized version of memset.
358 Such an implementation may be faster under some conditions
359 but may increase the binary size.
360
Rick Chen64d4ead2017-12-26 13:55:52 +0800361endmenu
Bin Mengce64bd32021-05-13 16:46:18 +0800362
363endmenu