blob: d9854f5283986ff031fc18b67ad6621032227d06 [file] [log] [blame]
Bin Meng117a4332018-09-26 06:55:06 -07001menu "RISC-V architecture"
Rick Chenf94c44e2017-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 Chen6f4dd622018-05-29 09:54:40 +080011config TARGET_AX25_AE350
12 bool "Support ax25-ae350"
Rick Chenf94c44e2017-12-26 13:55:52 +080013
Padmarao Begari39494822019-05-28 15:47:51 +053014config TARGET_MICROCHIP_ICICLE
15 bool "Support Microchip PolarFire-SoC Icicle Board"
16
Bin Meng510e3792018-09-26 06:55:21 -070017config TARGET_QEMU_VIRT
18 bool "Support QEMU Virt Board"
19
Anup Patel3fda0262019-02-25 08:15:19 +000020config TARGET_SIFIVE_FU540
21 bool "Support SiFive FU540 Board"
22
Rick Chenf94c44e2017-12-26 13:55:52 +080023endchoice
24
Trevor Woernera0aba8a2019-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 Woerner10015022019-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 Woernera0aba8a2019-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 Woerner10015022019-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 Chen52923c62018-11-07 09:34:06 +080051# board-specific options below
Rick Chen6f4dd622018-05-29 09:54:40 +080052source "board/AndesTech/ax25-ae350/Kconfig"
Bin Meng510e3792018-09-26 06:55:21 -070053source "board/emulation/qemu-riscv/Kconfig"
Padmarao Begari39494822019-05-28 15:47:51 +053054source "board/microchip/mpfs_icicle/Kconfig"
Anup Patel3fda0262019-02-25 08:15:19 +000055source "board/sifive/fu540/Kconfig"
Rick Chenf94c44e2017-12-26 13:55:52 +080056
Rick Chen52923c62018-11-07 09:34:06 +080057# platform-specific options below
58source "arch/riscv/cpu/ax25/Kconfig"
Pragnesh Patel7c45fc92020-05-29 11:33:34 +053059source "arch/riscv/cpu/fu540/Kconfig"
Anup Patelfdff1f92019-02-25 08:14:10 +000060source "arch/riscv/cpu/generic/Kconfig"
Rick Chen52923c62018-11-07 09:34:06 +080061
62# architecture-specific options below
63
Rick Chenf94c44e2017-12-26 13:55:52 +080064choice
Lukas Auer862e2e72018-11-22 11:26:12 +010065 prompt "Base ISA"
66 default ARCH_RV32I
Rick Chenf94c44e2017-12-26 13:55:52 +080067
Lukas Auer862e2e72018-11-22 11:26:12 +010068config ARCH_RV32I
69 bool "RV32I"
Rick Chenf94c44e2017-12-26 13:55:52 +080070 select 32BIT
71 help
Lukas Auer862e2e72018-11-22 11:26:12 +010072 Choose this option to target the RV32I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080073
Lukas Auer862e2e72018-11-22 11:26:12 +010074config ARCH_RV64I
75 bool "RV64I"
Rick Chenf94c44e2017-12-26 13:55:52 +080076 select 64BIT
Lukas Auer71158562018-11-22 11:26:13 +010077 select PHYS_64BIT
Rick Chenf94c44e2017-12-26 13:55:52 +080078 help
Lukas Auer862e2e72018-11-22 11:26:12 +010079 Choose this option to target the RV64I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080080
81endchoice
82
Lukas Auer8176ea42018-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 Patel3cfc8252018-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 Auerfbfd92b2019-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 Auerd57ffa62018-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 Chenf94c44e2017-12-26 13:55:52 +0800145config 32BIT
146 bool
147
148config 64BIT
149 bool
150
Bin Meng644a3cd2018-12-12 06:12:30 -0800151config SIFIVE_CLINT
152 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200153 depends on RISCV_MMODE || SPL_RISCV_MMODE
Bin Meng644a3cd2018-12-12 06:12:30 -0800154 select REGMAP
155 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200156 select SPL_REGMAP if SPL
157 select SPL_SYSCON if SPL
Bin Meng644a3cd2018-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 Chen0d389462019-04-02 15:56:39 +0800162config ANDES_PLIC
163 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200164 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen0d389462019-04-02 15:56:39 +0800165 select REGMAP
166 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200167 select SPL_REGMAP if SPL
168 select SPL_SYSCON if SPL
Rick Chen0d389462019-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 Chena1f24872019-04-02 15:56:40 +0800173config ANDES_PLMT
174 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200175 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chena1f24872019-04-02 15:56:40 +0800176 select REGMAP
177 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200178 select SPL_REGMAP if SPL
179 select SPL_SYSCON if SPL
Rick Chena1f24872019-04-02 15:56:40 +0800180 help
181 The Andes PLMT block holds memory-mapped mtime register
182 associated with timer tick.
183
Anup Patel511107d2018-12-12 06:12:31 -0800184config RISCV_RDTIME
185 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200186 default y if RISCV_SMODE || SPL_RISCV_SMODE
Anup Patel511107d2018-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 Meng92b64fe2018-12-12 06:12:33 -0800192config SYS_MALLOC_F_LEN
193 default 0x1000
194
Lukas Auerfa33f082019-03-17 19:28:32 +0100195config SMP
196 bool "Symmetric Multi-Processing"
Bin Meng6fa022e2020-04-16 08:09:31 -0700197 depends on SBI_V01 || !RISCV_SMODE
Lukas Auerfa33f082019-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 Meng191636e2020-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 Auerfa33f082019-03-17 19:28:32 +0100216config NR_CPUS
217 int "Maximum number of CPUs (2-32)"
218 range 2 32
Bin Meng191636e2020-04-16 08:09:30 -0700219 depends on SMP || SPL_SMP
Lukas Auerfa33f082019-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 Mengf58fc342020-03-09 19:35:28 -0700226config SBI
227 bool
228 default y if RISCV_SMODE || SPL_RISCV_SMODE
229
Bin Mengff0fa6c2020-04-16 08:09:32 -0700230choice
231 prompt "SBI support"
Bin Mengfa16ec22020-04-16 08:09:33 -0700232 default SBI_V02
Bin Mengff0fa6c2020-04-16 08:09:32 -0700233
Bin Meng1b3c8d62020-03-09 19:35:30 -0700234config SBI_V01
235 bool "SBI v0.1 support"
Bin Meng1b3c8d62020-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 Mengff0fa6c2020-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 Auerf152feb2019-03-17 19:28:34 +0100256config SBI_IPI
257 bool
Bin Mengf58fc342020-03-09 19:35:28 -0700258 depends on SBI
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200259 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auerf152feb2019-03-17 19:28:34 +0100260 depends on SMP
261
Rick Chenbdce3892019-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 Andersonfd1f6e92019-12-25 00:27:44 -0500269config SHOW_REGS
270 bool "Show registers on unhandled exception"
271
Lukas Auer3dea63c2019-03-17 19:28:37 +0100272config STACK_SIZE_SHIFT
273 int
Lukas Auer6b20dc12019-10-20 20:53:47 +0200274 default 14
Lukas Auer3dea63c2019-03-17 19:28:37 +0100275
Rick Chenf94c44e2017-12-26 13:55:52 +0800276endmenu