Merge branch 'next' of https://gitlab.denx.de/u-boot/custodians/u-boot-riscv into...
[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_FU540
21         bool "Support SiFive FU540 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/fu540/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 SIFIVE_CLINT
156         bool
157         depends on RISCV_MMODE || SPL_RISCV_MMODE
158         help
159           The SiFive CLINT block holds memory-mapped control and status registers
160           associated with software and timer interrupts.
161
162 config ANDES_PLIC
163         bool
164         depends on RISCV_MMODE || SPL_RISCV_MMODE
165         select REGMAP
166         select SYSCON
167         select SPL_REGMAP if SPL
168         select SPL_SYSCON if SPL
169         help
170           The Andes PLIC block holds memory-mapped claim and pending registers
171           associated with software interrupt.
172
173 config ANDES_PLMT
174         bool
175         depends on RISCV_MMODE || SPL_RISCV_MMODE
176         help
177           The Andes PLMT block holds memory-mapped mtime register
178           associated with timer tick.
179
180 config SYS_MALLOC_F_LEN
181         default 0x1000
182
183 config SMP
184         bool "Symmetric Multi-Processing"
185         depends on SBI_V01 || !RISCV_SMODE
186         help
187           This enables support for systems with more than one CPU. If
188           you say N here, U-Boot will run on single and multiprocessor
189           machines, but will use only one CPU of a multiprocessor
190           machine. If you say Y here, U-Boot will run on many, but not
191           all, single processor machines.
192
193 config SPL_SMP
194         bool "Symmetric Multi-Processing in SPL"
195         depends on SPL && SPL_RISCV_MMODE
196         default y
197         help
198           This enables support for systems with more than one CPU in SPL.
199           If you say N here, U-Boot SPL will run on single and multiprocessor
200           machines, but will use only one CPU of a multiprocessor
201           machine. If you say Y here, U-Boot SPL will run on many, but not
202           all, single processor machines.
203
204 config NR_CPUS
205         int "Maximum number of CPUs (2-32)"
206         range 2 32
207         depends on SMP || SPL_SMP
208         default 8
209         help
210           On multiprocessor machines, U-Boot sets up a stack for each CPU.
211           Stack memory is pre-allocated. U-Boot must therefore know the
212           maximum number of CPUs that may be present.
213
214 config SBI
215         bool
216         default y if RISCV_SMODE || SPL_RISCV_SMODE
217
218 choice
219         prompt "SBI support"
220         default SBI_V02
221
222 config SBI_V01
223         bool "SBI v0.1 support"
224         depends on SBI
225         help
226           This config allows kernel to use SBI v0.1 APIs. This will be
227           deprecated in future once legacy M-mode software are no longer in use.
228
229 config SBI_V02
230         bool "SBI v0.2 support"
231         depends on SBI
232         help
233           This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
234           scalable and extendable to handle future needs for RISC-V supervisor
235           interfaces. For example, with SBI v0.2 HSM extension, only a single
236           hart need to boot and enter operating system. The booting hart can
237           bring up secondary harts one by one afterwards.
238
239           Choose this option if OpenSBI v0.7 or above release is used together
240           with U-Boot.
241
242 endchoice
243
244 config SBI_IPI
245         bool
246         depends on SBI
247         default y if RISCV_SMODE || SPL_RISCV_SMODE
248         depends on SMP
249
250 config XIP
251         bool "XIP mode"
252         help
253           XIP (eXecute In Place) is a method for executing code directly
254           from a NOR flash memory without copying the code to ram.
255           Say yes here if U-Boot boots from flash directly.
256
257 config SHOW_REGS
258         bool "Show registers on unhandled exception"
259
260 config RISCV_PRIV_1_9
261         bool "Use version 1.9 of the RISC-V priviledged specification"
262         help
263           Older versions of the RISC-V priviledged specification had
264           separate counter enable CSRs for each privilege mode. Writing
265           to the unified mcounteren CSR on a processor implementing the
266           old specification will result in an illegal instruction
267           exception. In addition to counter CSR changes, the way virtual
268           memory is configured was also changed.
269
270 config STACK_SIZE_SHIFT
271         int
272         default 14
273
274 config OF_BOARD_FIXUP
275         default y if OF_SEPARATE
276
277 endmenu