blob: ec5631c6404c85d6e48716eb76bbeb7b985276df [file] [log] [blame]
Bin Meng6b697752018-09-26 06:55:06 -07001menu "RISC-V architecture"
Rick Chen64d4ead2017-12-26 13:55:52 +08002 depends on RISCV
3
4config SYS_ARCH
5 default "riscv"
6
7choice
8 prompt "Target select"
9 optional
10
Rick Chenb66af372018-05-29 09:54:40 +080011config TARGET_AX25_AE350
12 bool "Support ax25-ae350"
Rick Chen64d4ead2017-12-26 13:55:52 +080013
Padmarao Begari4216f342019-05-28 15:47:51 +053014config TARGET_MICROCHIP_ICICLE
15 bool "Support Microchip PolarFire-SoC Icicle Board"
16
Bin Meng8a8694d2018-09-26 06:55:21 -070017config TARGET_QEMU_VIRT
18 bool "Support QEMU Virt Board"
19
Anup Patel7a167f22019-02-25 08:15:19 +000020config TARGET_SIFIVE_FU540
21 bool "Support SiFive FU540 Board"
22
Rick Chen64d4ead2017-12-26 13:55:52 +080023endchoice
24
Trevor Woernerba64b8b2019-05-03 09:40:59 -040025config SYS_ICACHE_OFF
26 bool "Do not enable icache"
27 default n
28 help
29 Do not enable instruction cache in U-Boot.
30
Trevor Woerner43ec7e02019-05-03 09:41:00 -040031config 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
Trevor Woernerba64b8b2019-05-03 09:40:59 -040038config SYS_DCACHE_OFF
39 bool "Do not enable dcache"
40 default n
41 help
42 Do not enable data cache in U-Boot.
43
Trevor Woerner43ec7e02019-05-03 09:41:00 -040044config 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
Rick Chen842d5802018-11-07 09:34:06 +080051# board-specific options below
Rick Chenb66af372018-05-29 09:54:40 +080052source "board/AndesTech/ax25-ae350/Kconfig"
Bin Meng8a8694d2018-09-26 06:55:21 -070053source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari4216f342019-05-28 15:47:51 +053054source "board/microchip/mpfs_icicle/Kconfig"
Anup Patel7a167f22019-02-25 08:15:19 +000055source "board/sifive/fu540/Kconfig"
Rick Chen64d4ead2017-12-26 13:55:52 +080056
Rick Chen842d5802018-11-07 09:34:06 +080057# platform-specific options below
58source "arch/riscv/cpu/ax25/Kconfig"
Pragnesh Patel25269c02020-05-29 11:33:34 +053059source "arch/riscv/cpu/fu540/Kconfig"
Anup Patel1240cd62019-02-25 08:14:10 +000060source "arch/riscv/cpu/generic/Kconfig"
Rick Chen842d5802018-11-07 09:34:06 +080061
62# architecture-specific options below
63
Rick Chen64d4ead2017-12-26 13:55:52 +080064choice
Lukas Auer54ebfe72018-11-22 11:26:12 +010065 prompt "Base ISA"
66 default ARCH_RV32I
Rick Chen64d4ead2017-12-26 13:55:52 +080067
Lukas Auer54ebfe72018-11-22 11:26:12 +010068config ARCH_RV32I
69 bool "RV32I"
Rick Chen64d4ead2017-12-26 13:55:52 +080070 select 32BIT
71 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010072 Choose this option to target the RV32I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080073
Lukas Auer54ebfe72018-11-22 11:26:12 +010074config ARCH_RV64I
75 bool "RV64I"
Rick Chen64d4ead2017-12-26 13:55:52 +080076 select 64BIT
Lukas Auer7ab1df02018-11-22 11:26:13 +010077 select PHYS_64BIT
Rick Chen64d4ead2017-12-26 13:55:52 +080078 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010079 Choose this option to target the RV64I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080080
81endchoice
82
Lukas Auerecc5d832018-12-12 06:12:23 -080083choice
84 prompt "Code Model"
85 default CMODEL_MEDLOW
86
87config CMODEL_MEDLOW
88 bool "medium low code model"
89 help
90 U-Boot and its statically defined symbols must lie within a single 2 GiB
91 address range and must lie between absolute addresses -2 GiB and +2 GiB.
92
93config CMODEL_MEDANY
94 bool "medium any code model"
95 help
96 U-Boot and its statically defined symbols must be within any single 2 GiB
97 address range.
98
99endchoice
100
Anup Patel27881772018-12-12 06:12:29 -0800101choice
102 prompt "Run Mode"
103 default RISCV_MMODE
104
105config RISCV_MMODE
106 bool "Machine"
107 help
108 Choose this option to build U-Boot for RISC-V M-Mode.
109
110config RISCV_SMODE
111 bool "Supervisor"
112 help
113 Choose this option to build U-Boot for RISC-V S-Mode.
114
115endchoice
116
Lukas Auer61346592019-08-21 21:14:43 +0200117choice
118 prompt "SPL Run Mode"
119 default SPL_RISCV_MMODE
120 depends on SPL
121
122config SPL_RISCV_MMODE
123 bool "Machine"
124 help
125 Choose this option to build U-Boot SPL for RISC-V M-Mode.
126
127config SPL_RISCV_SMODE
128 bool "Supervisor"
129 help
130 Choose this option to build U-Boot SPL for RISC-V S-Mode.
131
132endchoice
133
Lukas Auer002012f2018-11-22 11:26:14 +0100134config RISCV_ISA_C
135 bool "Emit compressed instructions"
136 default y
137 help
138 Adds "C" to the ISA subsets that the toolchain is allowed to emit
139 when building U-Boot, which results in compressed instructions in the
140 U-Boot binary.
141
142config RISCV_ISA_A
143 def_bool y
144
Rick Chen64d4ead2017-12-26 13:55:52 +0800145config 32BIT
146 bool
147
148config 64BIT
149 bool
150
Bin Mengb6ee5e12018-12-12 06:12:30 -0800151config SIFIVE_CLINT
152 bool
Lukas Auer61346592019-08-21 21:14:43 +0200153 depends on RISCV_MMODE || SPL_RISCV_MMODE
Bin Mengb6ee5e12018-12-12 06:12:30 -0800154 select REGMAP
155 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200156 select SPL_REGMAP if SPL
157 select SPL_SYSCON if SPL
Bin Mengb6ee5e12018-12-12 06:12:30 -0800158 help
159 The SiFive CLINT block holds memory-mapped control and status registers
160 associated with software and timer interrupts.
161
Rick Chen6df4ed02019-04-02 15:56:39 +0800162config ANDES_PLIC
163 bool
Lukas Auer61346592019-08-21 21:14:43 +0200164 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen6df4ed02019-04-02 15:56:39 +0800165 select REGMAP
166 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200167 select SPL_REGMAP if SPL
168 select SPL_SYSCON if SPL
Rick Chen6df4ed02019-04-02 15:56:39 +0800169 help
170 The Andes PLIC block holds memory-mapped claim and pending registers
171 associated with software interrupt.
172
Rick Chen73766772019-04-02 15:56:40 +0800173config ANDES_PLMT
174 bool
Lukas Auer61346592019-08-21 21:14:43 +0200175 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen73766772019-04-02 15:56:40 +0800176 select REGMAP
177 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200178 select SPL_REGMAP if SPL
179 select SPL_SYSCON if SPL
Rick Chen73766772019-04-02 15:56:40 +0800180 help
181 The Andes PLMT block holds memory-mapped mtime register
182 associated with timer tick.
183
Anup Patelf3c84792018-12-12 06:12:31 -0800184config RISCV_RDTIME
185 bool
Lukas Auer61346592019-08-21 21:14:43 +0200186 default y if RISCV_SMODE || SPL_RISCV_SMODE
Anup Patelf3c84792018-12-12 06:12:31 -0800187 help
188 The provides the riscv_get_time() API that is implemented using the
189 standard rdtime instruction. This is the case for S-mode U-Boot, and
190 is useful for processors that support rdtime in M-mode too.
191
Bin Mengdada2d12018-12-12 06:12:33 -0800192config SYS_MALLOC_F_LEN
193 default 0x1000
194
Lukas Auer83d573d2019-03-17 19:28:32 +0100195config SMP
196 bool "Symmetric Multi-Processing"
Bin Meng49975222020-04-16 08:09:31 -0700197 depends on SBI_V01 || !RISCV_SMODE
Lukas Auer83d573d2019-03-17 19:28:32 +0100198 help
199 This enables support for systems with more than one CPU. If
200 you say N here, U-Boot will run on single and multiprocessor
201 machines, but will use only one CPU of a multiprocessor
202 machine. If you say Y here, U-Boot will run on many, but not
203 all, single processor machines.
204
Bin Mengb161f902020-04-16 08:09:30 -0700205config SPL_SMP
206 bool "Symmetric Multi-Processing in SPL"
207 depends on SPL && SPL_RISCV_MMODE
208 default y
209 help
210 This enables support for systems with more than one CPU in SPL.
211 If you say N here, U-Boot SPL will run on single and multiprocessor
212 machines, but will use only one CPU of a multiprocessor
213 machine. If you say Y here, U-Boot SPL will run on many, but not
214 all, single processor machines.
215
Lukas Auer83d573d2019-03-17 19:28:32 +0100216config NR_CPUS
217 int "Maximum number of CPUs (2-32)"
218 range 2 32
Bin Mengb161f902020-04-16 08:09:30 -0700219 depends on SMP || SPL_SMP
Lukas Auer83d573d2019-03-17 19:28:32 +0100220 default 8
221 help
222 On multiprocessor machines, U-Boot sets up a stack for each CPU.
223 Stack memory is pre-allocated. U-Boot must therefore know the
224 maximum number of CPUs that may be present.
225
Bin Mengee3bcd02020-03-09 19:35:28 -0700226config SBI
227 bool
228 default y if RISCV_SMODE || SPL_RISCV_SMODE
229
Bin Menga75325e2020-04-16 08:09:32 -0700230choice
231 prompt "SBI support"
Bin Meng3aecc4b2020-04-16 08:09:33 -0700232 default SBI_V02
Bin Menga75325e2020-04-16 08:09:32 -0700233
Bin Meng887d8092020-03-09 19:35:30 -0700234config SBI_V01
235 bool "SBI v0.1 support"
Bin Meng887d8092020-03-09 19:35:30 -0700236 depends on SBI
237 help
238 This config allows kernel to use SBI v0.1 APIs. This will be
239 deprecated in future once legacy M-mode software are no longer in use.
240
Bin Menga75325e2020-04-16 08:09:32 -0700241config SBI_V02
242 bool "SBI v0.2 support"
243 depends on SBI
244 help
245 This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
246 scalable and extendable to handle future needs for RISC-V supervisor
247 interfaces. For example, with SBI v0.2 HSM extension, only a single
248 hart need to boot and enter operating system. The booting hart can
249 bring up secondary harts one by one afterwards.
250
251 Choose this option if OpenSBI v0.7 or above release is used together
252 with U-Boot.
253
254endchoice
255
Lukas Auere79178b2019-03-17 19:28:34 +0100256config SBI_IPI
257 bool
Bin Mengee3bcd02020-03-09 19:35:28 -0700258 depends on SBI
Lukas Auer61346592019-08-21 21:14:43 +0200259 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auere79178b2019-03-17 19:28:34 +0100260 depends on SMP
261
Rick Chene5e6c362019-04-30 13:49:33 +0800262config XIP
263 bool "XIP mode"
264 help
265 XIP (eXecute In Place) is a method for executing code directly
266 from a NOR flash memory without copying the code to ram.
267 Say yes here if U-Boot boots from flash directly.
268
Sean Andersone8b46a12019-12-25 00:27:44 -0500269config SHOW_REGS
270 bool "Show registers on unhandled exception"
271
Sean Anderson7f4b6662020-06-24 06:41:19 -0400272config RISCV_PRIV_1_9
273 bool "Use version 1.9 of the RISC-V priviledged specification"
274 help
275 Older versions of the RISC-V priviledged specification had
276 separate counter enable CSRs for each privilege mode. Writing
277 to the unified mcounteren CSR on a processor implementing the
278 old specification will result in an illegal instruction
279 exception. In addition to counter CSR changes, the way virtual
280 memory is configured was also changed.
281
Lukas Auera3596652019-03-17 19:28:37 +0100282config STACK_SIZE_SHIFT
283 int
Lukas Auer03813702019-10-20 20:53:47 +0200284 default 14
Lukas Auera3596652019-03-17 19:28:37 +0100285
Rick Chen64d4ead2017-12-26 13:55:52 +0800286endmenu