blob: a8a61a943b4419271cd2be7e29fcc1f41152cdf7 [file] [log] [blame]
Bin Meng117a4332018-09-26 06:55:06 -07001menu "RISC-V architecture"
Rick Chenf94c44e2017-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 Chen6f4dd622018-05-29 09:54:40 +080011config TARGET_AX25_AE350
12 bool "Support ax25-ae350"
Rick Chenf94c44e2017-12-26 13:55:52 +080013
Padmarao Begari39494822019-05-28 15:47:51 +053014config TARGET_MICROCHIP_ICICLE
15 bool "Support Microchip PolarFire-SoC Icicle Board"
16
Bin Meng510e3792018-09-26 06:55:21 -070017config TARGET_QEMU_VIRT
18 bool "Support QEMU Virt Board"
19
Bin Mengae2d9502021-03-17 11:10:58 +080020config TARGET_SIFIVE_UNLEASHED
21 bool "Support SiFive Unleashed Board"
Anup Patel3fda0262019-02-25 08:15:19 +000022
Sean Andersona7c81fc2020-06-24 06:41:25 -040023config TARGET_SIPEED_MAIX
24 bool "Support Sipeed Maix Board"
25
Rick Chenf94c44e2017-12-26 13:55:52 +080026endchoice
27
Trevor Woernera0aba8a2019-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 Woerner10015022019-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 Woernera0aba8a2019-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 Woerner10015022019-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 Chen52923c62018-11-07 09:34:06 +080054# board-specific options below
Rick Chen6f4dd622018-05-29 09:54:40 +080055source "board/AndesTech/ax25-ae350/Kconfig"
Bin Meng510e3792018-09-26 06:55:21 -070056source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari39494822019-05-28 15:47:51 +053057source "board/microchip/mpfs_icicle/Kconfig"
Bin Mengae2d9502021-03-17 11:10:58 +080058source "board/sifive/unleashed/Kconfig"
Sean Andersona7c81fc2020-06-24 06:41:25 -040059source "board/sipeed/maix/Kconfig"
Rick Chenf94c44e2017-12-26 13:55:52 +080060
Rick Chen52923c62018-11-07 09:34:06 +080061# platform-specific options below
62source "arch/riscv/cpu/ax25/Kconfig"
Pragnesh Patel7c45fc92020-05-29 11:33:34 +053063source "arch/riscv/cpu/fu540/Kconfig"
Green Wana74e9d82021-05-27 06:52:07 -070064source "arch/riscv/cpu/fu740/Kconfig"
Anup Patelfdff1f92019-02-25 08:14:10 +000065source "arch/riscv/cpu/generic/Kconfig"
Rick Chen52923c62018-11-07 09:34:06 +080066
67# architecture-specific options below
68
Rick Chenf94c44e2017-12-26 13:55:52 +080069choice
Lukas Auer862e2e72018-11-22 11:26:12 +010070 prompt "Base ISA"
71 default ARCH_RV32I
Rick Chenf94c44e2017-12-26 13:55:52 +080072
Lukas Auer862e2e72018-11-22 11:26:12 +010073config ARCH_RV32I
74 bool "RV32I"
Rick Chenf94c44e2017-12-26 13:55:52 +080075 select 32BIT
76 help
Lukas Auer862e2e72018-11-22 11:26:12 +010077 Choose this option to target the RV32I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080078
Lukas Auer862e2e72018-11-22 11:26:12 +010079config ARCH_RV64I
80 bool "RV64I"
Rick Chenf94c44e2017-12-26 13:55:52 +080081 select 64BIT
Lukas Auer71158562018-11-22 11:26:13 +010082 select PHYS_64BIT
Rick Chenf94c44e2017-12-26 13:55:52 +080083 help
Lukas Auer862e2e72018-11-22 11:26:12 +010084 Choose this option to target the RV64I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080085
86endchoice
87
Lukas Auer8176ea42018-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 Patel3cfc8252018-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 Auerfbfd92b2019-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 Auerd57ffa62018-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 Chenf94c44e2017-12-26 13:55:52 +0800150config 32BIT
151 bool
152
153config 64BIT
154 bool
155
Padmarao Begari5af35742021-01-15 08:20:35 +0530156config DMA_ADDR_T_64BIT
157 bool
158 default y if 64BIT
159
Bin Meng644a3cd2018-12-12 06:12:30 -0800160config SIFIVE_CLINT
161 bool
Bin Menga6d7e8c2021-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 Meng644a3cd2018-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 Chen0d389462019-04-02 15:56:39 +0800174config ANDES_PLIC
175 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200176 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen0d389462019-04-02 15:56:39 +0800177 select REGMAP
178 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200179 select SPL_REGMAP if SPL
180 select SPL_SYSCON if SPL
Rick Chen0d389462019-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 Meng92b64fe2018-12-12 06:12:33 -0800185config SYS_MALLOC_F_LEN
186 default 0x1000
187
Lukas Auerfa33f082019-03-17 19:28:32 +0100188config SMP
189 bool "Symmetric Multi-Processing"
Bin Meng6fa022e2020-04-16 08:09:31 -0700190 depends on SBI_V01 || !RISCV_SMODE
Lukas Auerfa33f082019-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 Meng191636e2020-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 Auerfa33f082019-03-17 19:28:32 +0100209config NR_CPUS
210 int "Maximum number of CPUs (2-32)"
211 range 2 32
Bin Meng191636e2020-04-16 08:09:30 -0700212 depends on SMP || SPL_SMP
Lukas Auerfa33f082019-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 Mengf58fc342020-03-09 19:35:28 -0700219config SBI
220 bool
221 default y if RISCV_SMODE || SPL_RISCV_SMODE
222
Bin Mengff0fa6c2020-04-16 08:09:32 -0700223choice
224 prompt "SBI support"
Bin Mengfa16ec22020-04-16 08:09:33 -0700225 default SBI_V02
Bin Mengff0fa6c2020-04-16 08:09:32 -0700226
Bin Meng1b3c8d62020-03-09 19:35:30 -0700227config SBI_V01
228 bool "SBI v0.1 support"
Bin Meng1b3c8d62020-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 Mengff0fa6c2020-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 Auerf152feb2019-03-17 19:28:34 +0100249config SBI_IPI
250 bool
Bin Mengf58fc342020-03-09 19:35:28 -0700251 depends on SBI
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200252 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auerf152feb2019-03-17 19:28:34 +0100253 depends on SMP
254
Rick Chenbdce3892019-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 Andersonfd1f6e92019-12-25 00:27:44 -0500262config SHOW_REGS
263 bool "Show registers on unhandled exception"
264
Sean Andersonb8bc1202020-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 Auer3dea63c2019-03-17 19:28:37 +0100275config STACK_SIZE_SHIFT
276 int
Lukas Auer6b20dc12019-10-20 20:53:47 +0200277 default 14
Lukas Auer3dea63c2019-03-17 19:28:37 +0100278
Bin Meng1c17e552020-06-25 18:16:08 -0700279config OF_BOARD_FIXUP
Sean Anderson32cef692020-09-05 09:22:11 -0400280 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng1c17e552020-06-25 18:16:08 -0700281
Bin Meng89419272021-05-13 16:46:18 +0800282menu "Use assembly optimized implementation of memory routines"
283
Heinrich Schuchardt8f0dc4c2021-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 Chenf94c44e2017-12-26 13:55:52 +0800362endmenu
Bin Meng89419272021-05-13 16:46:18 +0800363
364endmenu