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