blob: 4b0c3dffa6b1e3a8a57304069e6d1dcfb564c58f [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
Tianrui Wei2ef594d2021-07-01 12:54:19 +080029config TARGET_OPENPITON_RISCV64
30 bool "Support RISC-V cores on OpenPiton SoC"
31
Rick Chen64d4ead2017-12-26 13:55:52 +080032endchoice
33
Trevor Woernerba64b8b2019-05-03 09:40:59 -040034config SYS_ICACHE_OFF
35 bool "Do not enable icache"
36 default n
37 help
38 Do not enable instruction cache in U-Boot.
39
Trevor Woerner43ec7e02019-05-03 09:41:00 -040040config SPL_SYS_ICACHE_OFF
41 bool "Do not enable icache in SPL"
42 depends on SPL
43 default SYS_ICACHE_OFF
44 help
45 Do not enable instruction cache in SPL.
46
Trevor Woernerba64b8b2019-05-03 09:40:59 -040047config SYS_DCACHE_OFF
48 bool "Do not enable dcache"
49 default n
50 help
51 Do not enable data cache in U-Boot.
52
Trevor Woerner43ec7e02019-05-03 09:41:00 -040053config SPL_SYS_DCACHE_OFF
54 bool "Do not enable dcache in SPL"
55 depends on SPL
56 default SYS_DCACHE_OFF
57 help
58 Do not enable data cache in SPL.
59
Rick Chen842d5802018-11-07 09:34:06 +080060# board-specific options below
Rick Chenb66af372018-05-29 09:54:40 +080061source "board/AndesTech/ax25-ae350/Kconfig"
Bin Meng8a8694d2018-09-26 06:55:21 -070062source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari4216f342019-05-28 15:47:51 +053063source "board/microchip/mpfs_icicle/Kconfig"
Bin Menge9ead4a2021-03-17 11:10:58 +080064source "board/sifive/unleashed/Kconfig"
Green Wan2e5da522021-05-27 06:52:13 -070065source "board/sifive/unmatched/Kconfig"
Tianrui Wei2ef594d2021-07-01 12:54:19 +080066source "board/openpiton/riscv64/Kconfig"
Sean Andersonedc32ab2020-06-24 06:41:25 -040067source "board/sipeed/maix/Kconfig"
Rick Chen64d4ead2017-12-26 13:55:52 +080068
Rick Chen842d5802018-11-07 09:34:06 +080069# platform-specific options below
70source "arch/riscv/cpu/ax25/Kconfig"
Pragnesh Patel25269c02020-05-29 11:33:34 +053071source "arch/riscv/cpu/fu540/Kconfig"
Green Wan7f337432021-05-27 06:52:07 -070072source "arch/riscv/cpu/fu740/Kconfig"
Anup Patel1240cd62019-02-25 08:14:10 +000073source "arch/riscv/cpu/generic/Kconfig"
Rick Chen842d5802018-11-07 09:34:06 +080074
75# architecture-specific options below
76
Rick Chen64d4ead2017-12-26 13:55:52 +080077choice
Lukas Auer54ebfe72018-11-22 11:26:12 +010078 prompt "Base ISA"
79 default ARCH_RV32I
Rick Chen64d4ead2017-12-26 13:55:52 +080080
Lukas Auer54ebfe72018-11-22 11:26:12 +010081config ARCH_RV32I
82 bool "RV32I"
Rick Chen64d4ead2017-12-26 13:55:52 +080083 select 32BIT
84 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010085 Choose this option to target the RV32I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080086
Lukas Auer54ebfe72018-11-22 11:26:12 +010087config ARCH_RV64I
88 bool "RV64I"
Rick Chen64d4ead2017-12-26 13:55:52 +080089 select 64BIT
Lukas Auer7ab1df02018-11-22 11:26:13 +010090 select PHYS_64BIT
Rick Chen64d4ead2017-12-26 13:55:52 +080091 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010092 Choose this option to target the RV64I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080093
94endchoice
95
Lukas Auerecc5d832018-12-12 06:12:23 -080096choice
97 prompt "Code Model"
98 default CMODEL_MEDLOW
99
100config CMODEL_MEDLOW
101 bool "medium low code model"
102 help
103 U-Boot and its statically defined symbols must lie within a single 2 GiB
104 address range and must lie between absolute addresses -2 GiB and +2 GiB.
105
106config CMODEL_MEDANY
107 bool "medium any code model"
108 help
109 U-Boot and its statically defined symbols must be within any single 2 GiB
110 address range.
111
112endchoice
113
Anup Patel27881772018-12-12 06:12:29 -0800114choice
115 prompt "Run Mode"
116 default RISCV_MMODE
117
118config RISCV_MMODE
119 bool "Machine"
120 help
121 Choose this option to build U-Boot for RISC-V M-Mode.
122
123config RISCV_SMODE
124 bool "Supervisor"
125 help
126 Choose this option to build U-Boot for RISC-V S-Mode.
127
128endchoice
129
Lukas Auer61346592019-08-21 21:14:43 +0200130choice
131 prompt "SPL Run Mode"
132 default SPL_RISCV_MMODE
133 depends on SPL
134
135config SPL_RISCV_MMODE
136 bool "Machine"
137 help
138 Choose this option to build U-Boot SPL for RISC-V M-Mode.
139
140config SPL_RISCV_SMODE
141 bool "Supervisor"
142 help
143 Choose this option to build U-Boot SPL for RISC-V S-Mode.
144
145endchoice
146
Lukas Auer002012f2018-11-22 11:26:14 +0100147config RISCV_ISA_C
148 bool "Emit compressed instructions"
149 default y
150 help
151 Adds "C" to the ISA subsets that the toolchain is allowed to emit
152 when building U-Boot, which results in compressed instructions in the
153 U-Boot binary.
154
155config RISCV_ISA_A
156 def_bool y
157
Rick Chen64d4ead2017-12-26 13:55:52 +0800158config 32BIT
159 bool
160
161config 64BIT
162 bool
163
Padmarao Begaria235d432021-01-15 08:20:35 +0530164config DMA_ADDR_T_64BIT
165 bool
166 default y if 64BIT
167
Bin Mengb6ee5e12018-12-12 06:12:30 -0800168config SIFIVE_CLINT
169 bool
Bin Meng614b1d82021-05-11 20:04:12 +0800170 depends on RISCV_MMODE
171 help
172 The SiFive CLINT block holds memory-mapped control and status registers
173 associated with software and timer interrupts.
174
175config SPL_SIFIVE_CLINT
176 bool
177 depends on SPL_RISCV_MMODE
Bin Mengb6ee5e12018-12-12 06:12:30 -0800178 help
179 The SiFive CLINT block holds memory-mapped control and status registers
180 associated with software and timer interrupts.
181
Rick Chen6df4ed02019-04-02 15:56:39 +0800182config ANDES_PLIC
183 bool
Lukas Auer61346592019-08-21 21:14:43 +0200184 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen6df4ed02019-04-02 15:56:39 +0800185 select REGMAP
186 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200187 select SPL_REGMAP if SPL
188 select SPL_SYSCON if SPL
Rick Chen6df4ed02019-04-02 15:56:39 +0800189 help
190 The Andes PLIC block holds memory-mapped claim and pending registers
191 associated with software interrupt.
192
Bin Mengdada2d12018-12-12 06:12:33 -0800193config SYS_MALLOC_F_LEN
194 default 0x1000
195
Lukas Auer83d573d2019-03-17 19:28:32 +0100196config SMP
197 bool "Symmetric Multi-Processing"
Bin Meng49975222020-04-16 08:09:31 -0700198 depends on SBI_V01 || !RISCV_SMODE
Lukas Auer83d573d2019-03-17 19:28:32 +0100199 help
200 This enables support for systems with more than one CPU. If
201 you say N here, U-Boot will run on single and multiprocessor
202 machines, but will use only one CPU of a multiprocessor
203 machine. If you say Y here, U-Boot will run on many, but not
204 all, single processor machines.
205
Bin Mengb161f902020-04-16 08:09:30 -0700206config SPL_SMP
207 bool "Symmetric Multi-Processing in SPL"
208 depends on SPL && SPL_RISCV_MMODE
209 default y
210 help
211 This enables support for systems with more than one CPU in SPL.
212 If you say N here, U-Boot SPL will run on single and multiprocessor
213 machines, but will use only one CPU of a multiprocessor
214 machine. If you say Y here, U-Boot SPL will run on many, but not
215 all, single processor machines.
216
Lukas Auer83d573d2019-03-17 19:28:32 +0100217config NR_CPUS
218 int "Maximum number of CPUs (2-32)"
219 range 2 32
Bin Mengb161f902020-04-16 08:09:30 -0700220 depends on SMP || SPL_SMP
Lukas Auer83d573d2019-03-17 19:28:32 +0100221 default 8
222 help
223 On multiprocessor machines, U-Boot sets up a stack for each CPU.
224 Stack memory is pre-allocated. U-Boot must therefore know the
225 maximum number of CPUs that may be present.
226
Bin Mengee3bcd02020-03-09 19:35:28 -0700227config SBI
228 bool
229 default y if RISCV_SMODE || SPL_RISCV_SMODE
230
Bin Menga75325e2020-04-16 08:09:32 -0700231choice
232 prompt "SBI support"
Bin Meng3aecc4b2020-04-16 08:09:33 -0700233 default SBI_V02
Bin Menga75325e2020-04-16 08:09:32 -0700234
Bin Meng887d8092020-03-09 19:35:30 -0700235config SBI_V01
236 bool "SBI v0.1 support"
Bin Meng887d8092020-03-09 19:35:30 -0700237 depends on SBI
238 help
239 This config allows kernel to use SBI v0.1 APIs. This will be
240 deprecated in future once legacy M-mode software are no longer in use.
241
Bin Menga75325e2020-04-16 08:09:32 -0700242config SBI_V02
243 bool "SBI v0.2 support"
244 depends on SBI
245 help
246 This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
247 scalable and extendable to handle future needs for RISC-V supervisor
248 interfaces. For example, with SBI v0.2 HSM extension, only a single
249 hart need to boot and enter operating system. The booting hart can
250 bring up secondary harts one by one afterwards.
251
252 Choose this option if OpenSBI v0.7 or above release is used together
253 with U-Boot.
254
255endchoice
256
Lukas Auere79178b2019-03-17 19:28:34 +0100257config SBI_IPI
258 bool
Bin Mengee3bcd02020-03-09 19:35:28 -0700259 depends on SBI
Lukas Auer61346592019-08-21 21:14:43 +0200260 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auere79178b2019-03-17 19:28:34 +0100261 depends on SMP
262
Rick Chene5e6c362019-04-30 13:49:33 +0800263config XIP
264 bool "XIP mode"
265 help
266 XIP (eXecute In Place) is a method for executing code directly
267 from a NOR flash memory without copying the code to ram.
268 Say yes here if U-Boot boots from flash directly.
269
Sean Andersone8b46a12019-12-25 00:27:44 -0500270config SHOW_REGS
271 bool "Show registers on unhandled exception"
272
Sean Anderson7f4b6662020-06-24 06:41:19 -0400273config RISCV_PRIV_1_9
274 bool "Use version 1.9 of the RISC-V priviledged specification"
275 help
276 Older versions of the RISC-V priviledged specification had
277 separate counter enable CSRs for each privilege mode. Writing
278 to the unified mcounteren CSR on a processor implementing the
279 old specification will result in an illegal instruction
280 exception. In addition to counter CSR changes, the way virtual
281 memory is configured was also changed.
282
Lukas Auera3596652019-03-17 19:28:37 +0100283config STACK_SIZE_SHIFT
284 int
Lukas Auer03813702019-10-20 20:53:47 +0200285 default 14
Lukas Auera3596652019-03-17 19:28:37 +0100286
Bin Meng2bdcd052020-06-25 18:16:08 -0700287config OF_BOARD_FIXUP
Sean Anderson584a5ee2020-09-05 09:22:11 -0400288 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng2bdcd052020-06-25 18:16:08 -0700289
Bin Mengce64bd32021-05-13 16:46:18 +0800290menu "Use assembly optimized implementation of memory routines"
291
Heinrich Schuchardt23caf662021-03-27 12:37:04 +0100292config USE_ARCH_MEMCPY
293 bool "Use an assembly optimized implementation of memcpy"
294 default y
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 SPL_USE_ARCH_MEMCPY
301 bool "Use an assembly optimized implementation of memcpy for SPL"
302 default y if USE_ARCH_MEMCPY
303 depends on SPL
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 TPL_USE_ARCH_MEMCPY
310 bool "Use an assembly optimized implementation of memcpy for TPL"
311 default y if USE_ARCH_MEMCPY
312 depends on TPL
313 help
314 Enable the generation of an optimized version of memcpy.
315 Such an implementation may be faster under some conditions
316 but may increase the binary size.
317
318config USE_ARCH_MEMMOVE
319 bool "Use an assembly optimized implementation of memmove"
320 default y
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 SPL_USE_ARCH_MEMMOVE
327 bool "Use an assembly optimized implementation of memmove for SPL"
328 default y if USE_ARCH_MEMCPY
329 depends on SPL
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 TPL_USE_ARCH_MEMMOVE
336 bool "Use an assembly optimized implementation of memmove for TPL"
337 default y if USE_ARCH_MEMCPY
338 depends on TPL
339 help
340 Enable the generation of an optimized version of memmove.
341 Such an implementation may be faster under some conditions
342 but may increase the binary size.
343
344config USE_ARCH_MEMSET
345 bool "Use an assembly optimized implementation of memset"
346 default y
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 SPL_USE_ARCH_MEMSET
353 bool "Use an assembly optimized implementation of memset for SPL"
354 default y if USE_ARCH_MEMSET
355 depends on SPL
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
361config TPL_USE_ARCH_MEMSET
362 bool "Use an assembly optimized implementation of memset for TPL"
363 default y if USE_ARCH_MEMSET
364 depends on TPL
365 help
366 Enable the generation of an optimized version of memset.
367 Such an implementation may be faster under some conditions
368 but may increase the binary size.
369
Rick Chen64d4ead2017-12-26 13:55:52 +0800370endmenu
Bin Mengce64bd32021-05-13 16:46:18 +0800371
372endmenu