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