Merge tag 'dm-pull-6jul21' of https://source.denx.de/u-boot/custodians/u-boot-dm
[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 ANDES_PLIC
183         bool
184         depends on RISCV_MMODE || SPL_RISCV_MMODE
185         select REGMAP
186         select SYSCON
187         select SPL_REGMAP if SPL
188         select SPL_SYSCON if SPL
189         help
190           The Andes PLIC block holds memory-mapped claim and pending registers
191           associated with software interrupt.
192
193 config SYS_MALLOC_F_LEN
194         default 0x1000
195
196 config SMP
197         bool "Symmetric Multi-Processing"
198         depends on SBI_V01 || !RISCV_SMODE
199         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
206 config 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
217 config NR_CPUS
218         int "Maximum number of CPUs (2-32)"
219         range 2 32
220         depends on SMP || SPL_SMP
221         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
227 config SBI
228         bool
229         default y if RISCV_SMODE || SPL_RISCV_SMODE
230
231 choice
232         prompt "SBI support"
233         default SBI_V02
234
235 config SBI_V01
236         bool "SBI v0.1 support"
237         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
242 config 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
255 endchoice
256
257 config SBI_IPI
258         bool
259         depends on SBI
260         default y if RISCV_SMODE || SPL_RISCV_SMODE
261         depends on SMP
262
263 config 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
270 config SHOW_REGS
271         bool "Show registers on unhandled exception"
272
273 config 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
283 config STACK_SIZE_SHIFT
284         int
285         default 14
286
287 config OF_BOARD_FIXUP
288         default y if OF_SEPARATE && RISCV_SMODE
289
290 menu "Use assembly optimized implementation of memory routines"
291
292 config 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
300 config 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
309 config 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
318 config 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
326 config 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
335 config 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
344 config 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
352 config 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
361 config 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
370 endmenu
371
372 endmenu