Merge branch '2021-05-17-assorted-fixes'
[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_SIPEED_MAIX
24         bool "Support Sipeed Maix Board"
25
26 endchoice
27
28 config SYS_ICACHE_OFF
29         bool "Do not enable icache"
30         default n
31         help
32           Do not enable instruction cache in U-Boot.
33
34 config 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
41 config SYS_DCACHE_OFF
42         bool "Do not enable dcache"
43         default n
44         help
45           Do not enable data cache in U-Boot.
46
47 config 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
54 # board-specific options below
55 source "board/AndesTech/ax25-ae350/Kconfig"
56 source "board/emulation/qemu-riscv/Kconfig"
57 source "board/microchip/mpfs_icicle/Kconfig"
58 source "board/sifive/unleashed/Kconfig"
59 source "board/sipeed/maix/Kconfig"
60
61 # platform-specific options below
62 source "arch/riscv/cpu/ax25/Kconfig"
63 source "arch/riscv/cpu/fu540/Kconfig"
64 source "arch/riscv/cpu/generic/Kconfig"
65
66 # architecture-specific options below
67
68 choice
69         prompt "Base ISA"
70         default ARCH_RV32I
71
72 config ARCH_RV32I
73         bool "RV32I"
74         select 32BIT
75         help
76           Choose this option to target the RV32I base integer instruction set.
77
78 config ARCH_RV64I
79         bool "RV64I"
80         select 64BIT
81         select PHYS_64BIT
82         help
83           Choose this option to target the RV64I base integer instruction set.
84
85 endchoice
86
87 choice
88         prompt "Code Model"
89         default CMODEL_MEDLOW
90
91 config 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
97 config 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
103 endchoice
104
105 choice
106         prompt "Run Mode"
107         default RISCV_MMODE
108
109 config RISCV_MMODE
110         bool "Machine"
111         help
112           Choose this option to build U-Boot for RISC-V M-Mode.
113
114 config RISCV_SMODE
115         bool "Supervisor"
116         help
117           Choose this option to build U-Boot for RISC-V S-Mode.
118
119 endchoice
120
121 choice
122         prompt "SPL Run Mode"
123         default SPL_RISCV_MMODE
124         depends on SPL
125
126 config SPL_RISCV_MMODE
127         bool "Machine"
128         help
129           Choose this option to build U-Boot SPL for RISC-V M-Mode.
130
131 config SPL_RISCV_SMODE
132         bool "Supervisor"
133         help
134           Choose this option to build U-Boot SPL for RISC-V S-Mode.
135
136 endchoice
137
138 config 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
146 config RISCV_ISA_A
147         def_bool y
148
149 config 32BIT
150         bool
151
152 config 64BIT
153         bool
154
155 config DMA_ADDR_T_64BIT
156         bool
157         default y if 64BIT
158
159 config SIFIVE_CLINT
160         bool
161         depends on RISCV_MMODE
162         help
163           The SiFive CLINT block holds memory-mapped control and status registers
164           associated with software and timer interrupts.
165
166 config SPL_SIFIVE_CLINT
167         bool
168         depends on SPL_RISCV_MMODE
169         help
170           The SiFive CLINT block holds memory-mapped control and status registers
171           associated with software and timer interrupts.
172
173 config ANDES_PLIC
174         bool
175         depends on RISCV_MMODE || SPL_RISCV_MMODE
176         select REGMAP
177         select SYSCON
178         select SPL_REGMAP if SPL
179         select SPL_SYSCON if SPL
180         help
181           The Andes PLIC block holds memory-mapped claim and pending registers
182           associated with software interrupt.
183
184 config SYS_MALLOC_F_LEN
185         default 0x1000
186
187 config SMP
188         bool "Symmetric Multi-Processing"
189         depends on SBI_V01 || !RISCV_SMODE
190         help
191           This enables support for systems with more than one CPU. If
192           you say N here, U-Boot will run on single and multiprocessor
193           machines, but will use only one CPU of a multiprocessor
194           machine. If you say Y here, U-Boot will run on many, but not
195           all, single processor machines.
196
197 config SPL_SMP
198         bool "Symmetric Multi-Processing in SPL"
199         depends on SPL && SPL_RISCV_MMODE
200         default y
201         help
202           This enables support for systems with more than one CPU in SPL.
203           If you say N here, U-Boot SPL will run on single and multiprocessor
204           machines, but will use only one CPU of a multiprocessor
205           machine. If you say Y here, U-Boot SPL will run on many, but not
206           all, single processor machines.
207
208 config NR_CPUS
209         int "Maximum number of CPUs (2-32)"
210         range 2 32
211         depends on SMP || SPL_SMP
212         default 8
213         help
214           On multiprocessor machines, U-Boot sets up a stack for each CPU.
215           Stack memory is pre-allocated. U-Boot must therefore know the
216           maximum number of CPUs that may be present.
217
218 config SBI
219         bool
220         default y if RISCV_SMODE || SPL_RISCV_SMODE
221
222 choice
223         prompt "SBI support"
224         default SBI_V02
225
226 config SBI_V01
227         bool "SBI v0.1 support"
228         depends on SBI
229         help
230           This config allows kernel to use SBI v0.1 APIs. This will be
231           deprecated in future once legacy M-mode software are no longer in use.
232
233 config SBI_V02
234         bool "SBI v0.2 support"
235         depends on SBI
236         help
237           This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
238           scalable and extendable to handle future needs for RISC-V supervisor
239           interfaces. For example, with SBI v0.2 HSM extension, only a single
240           hart need to boot and enter operating system. The booting hart can
241           bring up secondary harts one by one afterwards.
242
243           Choose this option if OpenSBI v0.7 or above release is used together
244           with U-Boot.
245
246 endchoice
247
248 config SBI_IPI
249         bool
250         depends on SBI
251         default y if RISCV_SMODE || SPL_RISCV_SMODE
252         depends on SMP
253
254 config XIP
255         bool "XIP mode"
256         help
257           XIP (eXecute In Place) is a method for executing code directly
258           from a NOR flash memory without copying the code to ram.
259           Say yes here if U-Boot boots from flash directly.
260
261 config SHOW_REGS
262         bool "Show registers on unhandled exception"
263
264 config RISCV_PRIV_1_9
265         bool "Use version 1.9 of the RISC-V priviledged specification"
266         help
267           Older versions of the RISC-V priviledged specification had
268           separate counter enable CSRs for each privilege mode. Writing
269           to the unified mcounteren CSR on a processor implementing the
270           old specification will result in an illegal instruction
271           exception. In addition to counter CSR changes, the way virtual
272           memory is configured was also changed.
273
274 config STACK_SIZE_SHIFT
275         int
276         default 14
277
278 config OF_BOARD_FIXUP
279         default y if OF_SEPARATE && RISCV_SMODE
280
281 menu "Use assembly optimized implementation of memory routines"
282
283 config USE_ARCH_MEMCPY
284         bool "Use an assembly optimized implementation of memcpy"
285         default y
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
291 config SPL_USE_ARCH_MEMCPY
292         bool "Use an assembly optimized implementation of memcpy for SPL"
293         default y if USE_ARCH_MEMCPY
294         depends on SPL
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 TPL_USE_ARCH_MEMCPY
301         bool "Use an assembly optimized implementation of memcpy for TPL"
302         default y if USE_ARCH_MEMCPY
303         depends on TPL
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 USE_ARCH_MEMMOVE
310         bool "Use an assembly optimized implementation of memmove"
311         default y
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
317 config SPL_USE_ARCH_MEMMOVE
318         bool "Use an assembly optimized implementation of memmove for SPL"
319         default y if USE_ARCH_MEMCPY
320         depends on SPL
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 TPL_USE_ARCH_MEMMOVE
327         bool "Use an assembly optimized implementation of memmove for TPL"
328         default y if USE_ARCH_MEMCPY
329         depends on TPL
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 USE_ARCH_MEMSET
336         bool "Use an assembly optimized implementation of memset"
337         default y
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
343 config SPL_USE_ARCH_MEMSET
344         bool "Use an assembly optimized implementation of memset for SPL"
345         default y if USE_ARCH_MEMSET
346         depends on SPL
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 TPL_USE_ARCH_MEMSET
353         bool "Use an assembly optimized implementation of memset for TPL"
354         default y if USE_ARCH_MEMSET
355         depends on TPL
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 endmenu
362
363 endmenu