riscv: Add basic support for SBI v0.2
[oweals/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 endchoice
24
25 config SYS_ICACHE_OFF
26         bool "Do not enable icache"
27         default n
28         help
29           Do not enable instruction cache in U-Boot.
30
31 config SPL_SYS_ICACHE_OFF
32         bool "Do not enable icache in SPL"
33         depends on SPL
34         default SYS_ICACHE_OFF
35         help
36           Do not enable instruction cache in SPL.
37
38 config SYS_DCACHE_OFF
39         bool "Do not enable dcache"
40         default n
41         help
42           Do not enable data cache in U-Boot.
43
44 config SPL_SYS_DCACHE_OFF
45         bool "Do not enable dcache in SPL"
46         depends on SPL
47         default SYS_DCACHE_OFF
48         help
49           Do not enable data cache in SPL.
50
51 # board-specific options below
52 source "board/AndesTech/ax25-ae350/Kconfig"
53 source "board/emulation/qemu-riscv/Kconfig"
54 source "board/microchip/mpfs_icicle/Kconfig"
55 source "board/sifive/fu540/Kconfig"
56
57 # platform-specific options below
58 source "arch/riscv/cpu/ax25/Kconfig"
59 source "arch/riscv/cpu/generic/Kconfig"
60
61 # architecture-specific options below
62
63 choice
64         prompt "Base ISA"
65         default ARCH_RV32I
66
67 config ARCH_RV32I
68         bool "RV32I"
69         select 32BIT
70         help
71           Choose this option to target the RV32I base integer instruction set.
72
73 config ARCH_RV64I
74         bool "RV64I"
75         select 64BIT
76         select PHYS_64BIT
77         help
78           Choose this option to target the RV64I base integer instruction set.
79
80 endchoice
81
82 choice
83         prompt "Code Model"
84         default CMODEL_MEDLOW
85
86 config CMODEL_MEDLOW
87         bool "medium low code model"
88         help
89           U-Boot and its statically defined symbols must lie within a single 2 GiB
90           address range and must lie between absolute addresses -2 GiB and +2 GiB.
91
92 config CMODEL_MEDANY
93         bool "medium any code model"
94         help
95           U-Boot and its statically defined symbols must be within any single 2 GiB
96           address range.
97
98 endchoice
99
100 choice
101         prompt "Run Mode"
102         default RISCV_MMODE
103
104 config RISCV_MMODE
105         bool "Machine"
106         help
107           Choose this option to build U-Boot for RISC-V M-Mode.
108
109 config RISCV_SMODE
110         bool "Supervisor"
111         help
112           Choose this option to build U-Boot for RISC-V S-Mode.
113
114 endchoice
115
116 choice
117         prompt "SPL Run Mode"
118         default SPL_RISCV_MMODE
119         depends on SPL
120
121 config SPL_RISCV_MMODE
122         bool "Machine"
123         help
124           Choose this option to build U-Boot SPL for RISC-V M-Mode.
125
126 config SPL_RISCV_SMODE
127         bool "Supervisor"
128         help
129           Choose this option to build U-Boot SPL for RISC-V S-Mode.
130
131 endchoice
132
133 config RISCV_ISA_C
134         bool "Emit compressed instructions"
135         default y
136         help
137           Adds "C" to the ISA subsets that the toolchain is allowed to emit
138           when building U-Boot, which results in compressed instructions in the
139           U-Boot binary.
140
141 config RISCV_ISA_A
142         def_bool y
143
144 config 32BIT
145         bool
146
147 config 64BIT
148         bool
149
150 config SIFIVE_CLINT
151         bool
152         depends on RISCV_MMODE || SPL_RISCV_MMODE
153         select REGMAP
154         select SYSCON
155         select SPL_REGMAP if SPL
156         select SPL_SYSCON if SPL
157         help
158           The SiFive CLINT block holds memory-mapped control and status registers
159           associated with software and timer interrupts.
160
161 config ANDES_PLIC
162         bool
163         depends on RISCV_MMODE || SPL_RISCV_MMODE
164         select REGMAP
165         select SYSCON
166         select SPL_REGMAP if SPL
167         select SPL_SYSCON if SPL
168         help
169           The Andes PLIC block holds memory-mapped claim and pending registers
170           associated with software interrupt.
171
172 config ANDES_PLMT
173         bool
174         depends on RISCV_MMODE || SPL_RISCV_MMODE
175         select REGMAP
176         select SYSCON
177         select SPL_REGMAP if SPL
178         select SPL_SYSCON if SPL
179         help
180           The Andes PLMT block holds memory-mapped mtime register
181           associated with timer tick.
182
183 config RISCV_RDTIME
184         bool
185         default y if RISCV_SMODE || SPL_RISCV_SMODE
186         help
187           The provides the riscv_get_time() API that is implemented using the
188           standard rdtime instruction. This is the case for S-mode U-Boot, and
189           is useful for processors that support rdtime in M-mode too.
190
191 config SYS_MALLOC_F_LEN
192         default 0x1000
193
194 config SMP
195         bool "Symmetric Multi-Processing"
196         help
197           This enables support for systems with more than one CPU. If
198           you say N here, U-Boot will run on single and multiprocessor
199           machines, but will use only one CPU of a multiprocessor
200           machine. If you say Y here, U-Boot will run on many, but not
201           all, single processor machines.
202
203 config NR_CPUS
204         int "Maximum number of CPUs (2-32)"
205         range 2 32
206         depends on SMP
207         default 8
208         help
209           On multiprocessor machines, U-Boot sets up a stack for each CPU.
210           Stack memory is pre-allocated. U-Boot must therefore know the
211           maximum number of CPUs that may be present.
212
213 config SBI
214         bool
215         default y if RISCV_SMODE || SPL_RISCV_SMODE
216
217 config SBI_IPI
218         bool
219         depends on SBI
220         default y if RISCV_SMODE || SPL_RISCV_SMODE
221         depends on SMP
222
223 config XIP
224         bool "XIP mode"
225         help
226           XIP (eXecute In Place) is a method for executing code directly
227           from a NOR flash memory without copying the code to ram.
228           Say yes here if U-Boot boots from flash directly.
229
230 config SHOW_REGS
231         bool "Show registers on unhandled exception"
232
233 config STACK_SIZE_SHIFT
234         int
235         default 14
236
237 config SPL_LDSCRIPT
238         default "arch/riscv/cpu/u-boot-spl.lds"
239
240 endmenu