Merge https://source.denx.de/u-boot/custodians/u-boot-riscv
[platform/kernel/u-boot.git] / arch / riscv / Kconfig
1 menu "RISC-V architecture"
2         depends on RISCV
3
4 config SYS_ARCH
5         default "riscv"
6
7 choice
8         prompt "Target select"
9         optional
10
11 config TARGET_AX25_AE350
12         bool "Support ax25-ae350"
13
14 config TARGET_MICROCHIP_ICICLE
15         bool "Support Microchip PolarFire-SoC Icicle Board"
16
17 config TARGET_QEMU_VIRT
18         bool "Support QEMU Virt Board"
19
20 config TARGET_SIFIVE_UNLEASHED
21         bool "Support SiFive Unleashed Board"
22
23 config TARGET_SIFIVE_UNMATCHED
24         bool "Support SiFive Unmatched Board"
25
26 config TARGET_SIPEED_MAIX
27         bool "Support Sipeed Maix Board"
28
29 config TARGET_OPENPITON_RISCV64
30         bool "Support RISC-V cores on OpenPiton SoC"
31
32 endchoice
33
34 config SYS_ICACHE_OFF
35         bool "Do not enable icache"
36         default n
37         help
38           Do not enable instruction cache in U-Boot.
39
40 config 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
47 config SYS_DCACHE_OFF
48         bool "Do not enable dcache"
49         default n
50         help
51           Do not enable data cache in U-Boot.
52
53 config 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
60 # board-specific options below
61 source "board/AndesTech/ax25-ae350/Kconfig"
62 source "board/emulation/qemu-riscv/Kconfig"
63 source "board/microchip/mpfs_icicle/Kconfig"
64 source "board/sifive/unleashed/Kconfig"
65 source "board/sifive/unmatched/Kconfig"
66 source "board/openpiton/riscv64/Kconfig"
67 source "board/sipeed/maix/Kconfig"
68
69 # platform-specific options below
70 source "arch/riscv/cpu/ax25/Kconfig"
71 source "arch/riscv/cpu/fu540/Kconfig"
72 source "arch/riscv/cpu/fu740/Kconfig"
73 source "arch/riscv/cpu/generic/Kconfig"
74
75 # architecture-specific options below
76
77 choice
78         prompt "Base ISA"
79         default ARCH_RV32I
80
81 config ARCH_RV32I
82         bool "RV32I"
83         select 32BIT
84         help
85           Choose this option to target the RV32I base integer instruction set.
86
87 config ARCH_RV64I
88         bool "RV64I"
89         select 64BIT
90         select PHYS_64BIT
91         help
92           Choose this option to target the RV64I base integer instruction set.
93
94 endchoice
95
96 choice
97         prompt "Code Model"
98         default CMODEL_MEDLOW
99
100 config 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
106 config 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
112 endchoice
113
114 choice
115         prompt "Run Mode"
116         default RISCV_MMODE
117
118 config RISCV_MMODE
119         bool "Machine"
120         help
121           Choose this option to build U-Boot for RISC-V M-Mode.
122
123 config RISCV_SMODE
124         bool "Supervisor"
125         help
126           Choose this option to build U-Boot for RISC-V S-Mode.
127
128 endchoice
129
130 choice
131         prompt "SPL Run Mode"
132         default SPL_RISCV_MMODE
133         depends on SPL
134
135 config SPL_RISCV_MMODE
136         bool "Machine"
137         help
138           Choose this option to build U-Boot SPL for RISC-V M-Mode.
139
140 config SPL_RISCV_SMODE
141         bool "Supervisor"
142         help
143           Choose this option to build U-Boot SPL for RISC-V S-Mode.
144
145 endchoice
146
147 config 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
155 config RISCV_ISA_A
156         def_bool y
157
158 config 32BIT
159         bool
160
161 config 64BIT
162         bool
163
164 config DMA_ADDR_T_64BIT
165         bool
166         default y if 64BIT
167
168 config SIFIVE_CLINT
169         bool
170         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
175 config SPL_SIFIVE_CLINT
176         bool
177         depends on SPL_RISCV_MMODE
178         help
179           The SiFive CLINT block holds memory-mapped control and status registers
180           associated with software and timer interrupts.
181
182 config SIFIVE_CACHE
183         bool
184         help
185           This enables the operations to configure SiFive cache
186
187 config ANDES_PLIC
188         bool
189         depends on RISCV_MMODE || SPL_RISCV_MMODE
190         select REGMAP
191         select SYSCON
192         select SPL_REGMAP if SPL
193         select SPL_SYSCON if SPL
194         help
195           The Andes PLIC block holds memory-mapped claim and pending registers
196           associated with software interrupt.
197
198 config SYS_MALLOC_F_LEN
199         default 0x1000
200
201 config SMP
202         bool "Symmetric Multi-Processing"
203         depends on SBI_V01 || !RISCV_SMODE
204         help
205           This enables support for systems with more than one CPU. If
206           you say N here, U-Boot will run on single and multiprocessor
207           machines, but will use only one CPU of a multiprocessor
208           machine. If you say Y here, U-Boot will run on many, but not
209           all, single processor machines.
210
211 config SPL_SMP
212         bool "Symmetric Multi-Processing in SPL"
213         depends on SPL && SPL_RISCV_MMODE
214         default y
215         help
216           This enables support for systems with more than one CPU in SPL.
217           If you say N here, U-Boot SPL will run on single and multiprocessor
218           machines, but will use only one CPU of a multiprocessor
219           machine. If you say Y here, U-Boot SPL will run on many, but not
220           all, single processor machines.
221
222 config NR_CPUS
223         int "Maximum number of CPUs (2-32)"
224         range 2 32
225         depends on SMP || SPL_SMP
226         default 8
227         help
228           On multiprocessor machines, U-Boot sets up a stack for each CPU.
229           Stack memory is pre-allocated. U-Boot must therefore know the
230           maximum number of CPUs that may be present.
231
232 config SBI
233         bool
234         default y if RISCV_SMODE || SPL_RISCV_SMODE
235
236 choice
237         prompt "SBI support"
238         default SBI_V02
239
240 config SBI_V01
241         bool "SBI v0.1 support"
242         depends on SBI
243         help
244           This config allows kernel to use SBI v0.1 APIs. This will be
245           deprecated in future once legacy M-mode software are no longer in use.
246
247 config SBI_V02
248         bool "SBI v0.2 support"
249         depends on SBI
250         help
251           This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
252           scalable and extendable to handle future needs for RISC-V supervisor
253           interfaces. For example, with SBI v0.2 HSM extension, only a single
254           hart need to boot and enter operating system. The booting hart can
255           bring up secondary harts one by one afterwards.
256
257           Choose this option if OpenSBI v0.7 or above release is used together
258           with U-Boot.
259
260 endchoice
261
262 config SBI_IPI
263         bool
264         depends on SBI
265         default y if RISCV_SMODE || SPL_RISCV_SMODE
266         depends on SMP
267
268 config XIP
269         bool "XIP mode"
270         help
271           XIP (eXecute In Place) is a method for executing code directly
272           from a NOR flash memory without copying the code to ram.
273           Say yes here if U-Boot boots from flash directly.
274
275 config SHOW_REGS
276         bool "Show registers on unhandled exception"
277
278 config RISCV_PRIV_1_9
279         bool "Use version 1.9 of the RISC-V priviledged specification"
280         help
281           Older versions of the RISC-V priviledged specification had
282           separate counter enable CSRs for each privilege mode. Writing
283           to the unified mcounteren CSR on a processor implementing the
284           old specification will result in an illegal instruction
285           exception. In addition to counter CSR changes, the way virtual
286           memory is configured was also changed.
287
288 config STACK_SIZE_SHIFT
289         int
290         default 14
291
292 config OF_BOARD_FIXUP
293         default y if OF_SEPARATE && RISCV_SMODE
294
295 menu "Use assembly optimized implementation of memory routines"
296
297 config USE_ARCH_MEMCPY
298         bool "Use an assembly optimized implementation of memcpy"
299         default y
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
305 config SPL_USE_ARCH_MEMCPY
306         bool "Use an assembly optimized implementation of memcpy for SPL"
307         default y if USE_ARCH_MEMCPY
308         depends on SPL
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
314 config TPL_USE_ARCH_MEMCPY
315         bool "Use an assembly optimized implementation of memcpy for TPL"
316         default y if USE_ARCH_MEMCPY
317         depends on TPL
318         help
319           Enable the generation of an optimized version of memcpy.
320           Such an implementation may be faster under some conditions
321           but may increase the binary size.
322
323 config USE_ARCH_MEMMOVE
324         bool "Use an assembly optimized implementation of memmove"
325         default y
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
331 config SPL_USE_ARCH_MEMMOVE
332         bool "Use an assembly optimized implementation of memmove for SPL"
333         default y if USE_ARCH_MEMCPY
334         depends on SPL
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
340 config TPL_USE_ARCH_MEMMOVE
341         bool "Use an assembly optimized implementation of memmove for TPL"
342         default y if USE_ARCH_MEMCPY
343         depends on TPL
344         help
345           Enable the generation of an optimized version of memmove.
346           Such an implementation may be faster under some conditions
347           but may increase the binary size.
348
349 config USE_ARCH_MEMSET
350         bool "Use an assembly optimized implementation of memset"
351         default y
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
357 config SPL_USE_ARCH_MEMSET
358         bool "Use an assembly optimized implementation of memset for SPL"
359         default y if USE_ARCH_MEMSET
360         depends on SPL
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
366 config TPL_USE_ARCH_MEMSET
367         bool "Use an assembly optimized implementation of memset for TPL"
368         default y if USE_ARCH_MEMSET
369         depends on TPL
370         help
371           Enable the generation of an optimized version of memset.
372           Such an implementation may be faster under some conditions
373           but may increase the binary size.
374
375 endmenu
376
377 endmenu