blob: 3f221dccdb3f7c83579c59d26ab51cf733714e8e [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"
Anup Patelfdff1f92019-02-25 08:14:10 +000064source "arch/riscv/cpu/generic/Kconfig"
Rick Chen52923c62018-11-07 09:34:06 +080065
66# architecture-specific options below
67
Rick Chenf94c44e2017-12-26 13:55:52 +080068choice
Lukas Auer862e2e72018-11-22 11:26:12 +010069 prompt "Base ISA"
70 default ARCH_RV32I
Rick Chenf94c44e2017-12-26 13:55:52 +080071
Lukas Auer862e2e72018-11-22 11:26:12 +010072config ARCH_RV32I
73 bool "RV32I"
Rick Chenf94c44e2017-12-26 13:55:52 +080074 select 32BIT
75 help
Lukas Auer862e2e72018-11-22 11:26:12 +010076 Choose this option to target the RV32I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080077
Lukas Auer862e2e72018-11-22 11:26:12 +010078config ARCH_RV64I
79 bool "RV64I"
Rick Chenf94c44e2017-12-26 13:55:52 +080080 select 64BIT
Lukas Auer71158562018-11-22 11:26:13 +010081 select PHYS_64BIT
Rick Chenf94c44e2017-12-26 13:55:52 +080082 help
Lukas Auer862e2e72018-11-22 11:26:12 +010083 Choose this option to target the RV64I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080084
85endchoice
86
Lukas Auer8176ea42018-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 Patel3cfc8252018-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 Auerfbfd92b2019-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 Auerd57ffa62018-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 Chenf94c44e2017-12-26 13:55:52 +0800149config 32BIT
150 bool
151
152config 64BIT
153 bool
154
Padmarao Begari5af35742021-01-15 08:20:35 +0530155config DMA_ADDR_T_64BIT
156 bool
157 default y if 64BIT
158
Bin Meng644a3cd2018-12-12 06:12:30 -0800159config SIFIVE_CLINT
160 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200161 depends on RISCV_MMODE || SPL_RISCV_MMODE
Bin Meng644a3cd2018-12-12 06:12:30 -0800162 help
163 The SiFive CLINT block holds memory-mapped control and status registers
164 associated with software and timer interrupts.
165
Rick Chen0d389462019-04-02 15:56:39 +0800166config ANDES_PLIC
167 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200168 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen0d389462019-04-02 15:56:39 +0800169 select REGMAP
170 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200171 select SPL_REGMAP if SPL
172 select SPL_SYSCON if SPL
Rick Chen0d389462019-04-02 15:56:39 +0800173 help
174 The Andes PLIC block holds memory-mapped claim and pending registers
175 associated with software interrupt.
176
Bin Meng92b64fe2018-12-12 06:12:33 -0800177config SYS_MALLOC_F_LEN
178 default 0x1000
179
Lukas Auerfa33f082019-03-17 19:28:32 +0100180config SMP
181 bool "Symmetric Multi-Processing"
Bin Meng6fa022e2020-04-16 08:09:31 -0700182 depends on SBI_V01 || !RISCV_SMODE
Lukas Auerfa33f082019-03-17 19:28:32 +0100183 help
184 This enables support for systems with more than one CPU. If
185 you say N here, U-Boot will run on single and multiprocessor
186 machines, but will use only one CPU of a multiprocessor
187 machine. If you say Y here, U-Boot will run on many, but not
188 all, single processor machines.
189
Bin Meng191636e2020-04-16 08:09:30 -0700190config SPL_SMP
191 bool "Symmetric Multi-Processing in SPL"
192 depends on SPL && SPL_RISCV_MMODE
193 default y
194 help
195 This enables support for systems with more than one CPU in SPL.
196 If you say N here, U-Boot SPL will run on single and multiprocessor
197 machines, but will use only one CPU of a multiprocessor
198 machine. If you say Y here, U-Boot SPL will run on many, but not
199 all, single processor machines.
200
Lukas Auerfa33f082019-03-17 19:28:32 +0100201config NR_CPUS
202 int "Maximum number of CPUs (2-32)"
203 range 2 32
Bin Meng191636e2020-04-16 08:09:30 -0700204 depends on SMP || SPL_SMP
Lukas Auerfa33f082019-03-17 19:28:32 +0100205 default 8
206 help
207 On multiprocessor machines, U-Boot sets up a stack for each CPU.
208 Stack memory is pre-allocated. U-Boot must therefore know the
209 maximum number of CPUs that may be present.
210
Bin Mengf58fc342020-03-09 19:35:28 -0700211config SBI
212 bool
213 default y if RISCV_SMODE || SPL_RISCV_SMODE
214
Bin Mengff0fa6c2020-04-16 08:09:32 -0700215choice
216 prompt "SBI support"
Bin Mengfa16ec22020-04-16 08:09:33 -0700217 default SBI_V02
Bin Mengff0fa6c2020-04-16 08:09:32 -0700218
Bin Meng1b3c8d62020-03-09 19:35:30 -0700219config SBI_V01
220 bool "SBI v0.1 support"
Bin Meng1b3c8d62020-03-09 19:35:30 -0700221 depends on SBI
222 help
223 This config allows kernel to use SBI v0.1 APIs. This will be
224 deprecated in future once legacy M-mode software are no longer in use.
225
Bin Mengff0fa6c2020-04-16 08:09:32 -0700226config SBI_V02
227 bool "SBI v0.2 support"
228 depends on SBI
229 help
230 This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
231 scalable and extendable to handle future needs for RISC-V supervisor
232 interfaces. For example, with SBI v0.2 HSM extension, only a single
233 hart need to boot and enter operating system. The booting hart can
234 bring up secondary harts one by one afterwards.
235
236 Choose this option if OpenSBI v0.7 or above release is used together
237 with U-Boot.
238
239endchoice
240
Lukas Auerf152feb2019-03-17 19:28:34 +0100241config SBI_IPI
242 bool
Bin Mengf58fc342020-03-09 19:35:28 -0700243 depends on SBI
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200244 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auerf152feb2019-03-17 19:28:34 +0100245 depends on SMP
246
Rick Chenbdce3892019-04-30 13:49:33 +0800247config XIP
248 bool "XIP mode"
249 help
250 XIP (eXecute In Place) is a method for executing code directly
251 from a NOR flash memory without copying the code to ram.
252 Say yes here if U-Boot boots from flash directly.
253
Sean Andersonfd1f6e92019-12-25 00:27:44 -0500254config SHOW_REGS
255 bool "Show registers on unhandled exception"
256
Sean Andersonb8bc1202020-06-24 06:41:19 -0400257config RISCV_PRIV_1_9
258 bool "Use version 1.9 of the RISC-V priviledged specification"
259 help
260 Older versions of the RISC-V priviledged specification had
261 separate counter enable CSRs for each privilege mode. Writing
262 to the unified mcounteren CSR on a processor implementing the
263 old specification will result in an illegal instruction
264 exception. In addition to counter CSR changes, the way virtual
265 memory is configured was also changed.
266
Lukas Auer3dea63c2019-03-17 19:28:37 +0100267config STACK_SIZE_SHIFT
268 int
Lukas Auer6b20dc12019-10-20 20:53:47 +0200269 default 14
Lukas Auer3dea63c2019-03-17 19:28:37 +0100270
Bin Meng1c17e552020-06-25 18:16:08 -0700271config OF_BOARD_FIXUP
Sean Anderson32cef692020-09-05 09:22:11 -0400272 default y if OF_SEPARATE && RISCV_SMODE
Bin Meng1c17e552020-06-25 18:16:08 -0700273
Heinrich Schuchardt8f0dc4c2021-03-27 12:37:04 +0100274config USE_ARCH_MEMCPY
275 bool "Use an assembly optimized implementation of memcpy"
276 default y
277 help
278 Enable the generation of an optimized version of memcpy.
279 Such an implementation may be faster under some conditions
280 but may increase the binary size.
281
282config SPL_USE_ARCH_MEMCPY
283 bool "Use an assembly optimized implementation of memcpy for SPL"
284 default y if USE_ARCH_MEMCPY
285 depends on SPL
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 TPL_USE_ARCH_MEMCPY
292 bool "Use an assembly optimized implementation of memcpy for TPL"
293 default y if USE_ARCH_MEMCPY
294 depends on TPL
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 USE_ARCH_MEMMOVE
301 bool "Use an assembly optimized implementation of memmove"
302 default y
303 help
304 Enable the generation of an optimized version of memmove.
305 Such an implementation may be faster under some conditions
306 but may increase the binary size.
307
308config SPL_USE_ARCH_MEMMOVE
309 bool "Use an assembly optimized implementation of memmove for SPL"
310 default y if USE_ARCH_MEMCPY
311 depends on SPL
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 TPL_USE_ARCH_MEMMOVE
318 bool "Use an assembly optimized implementation of memmove for TPL"
319 default y if USE_ARCH_MEMCPY
320 depends on TPL
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 USE_ARCH_MEMSET
327 bool "Use an assembly optimized implementation of memset"
328 default y
329 help
330 Enable the generation of an optimized version of memset.
331 Such an implementation may be faster under some conditions
332 but may increase the binary size.
333
334config SPL_USE_ARCH_MEMSET
335 bool "Use an assembly optimized implementation of memset for SPL"
336 default y if USE_ARCH_MEMSET
337 depends on SPL
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 TPL_USE_ARCH_MEMSET
344 bool "Use an assembly optimized implementation of memset for TPL"
345 default y if USE_ARCH_MEMSET
346 depends on TPL
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
Rick Chenf94c44e2017-12-26 13:55:52 +0800352endmenu