blob: fb5fe5affff1f3979279d030113872aee9755418 [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"
Anup Patelfdff1f92019-02-25 08:14:10 +000059source "arch/riscv/cpu/generic/Kconfig"
Rick Chen52923c62018-11-07 09:34:06 +080060
61# architecture-specific options below
62
Rick Chenf94c44e2017-12-26 13:55:52 +080063choice
Lukas Auer862e2e72018-11-22 11:26:12 +010064 prompt "Base ISA"
65 default ARCH_RV32I
Rick Chenf94c44e2017-12-26 13:55:52 +080066
Lukas Auer862e2e72018-11-22 11:26:12 +010067config ARCH_RV32I
68 bool "RV32I"
Rick Chenf94c44e2017-12-26 13:55:52 +080069 select 32BIT
70 help
Lukas Auer862e2e72018-11-22 11:26:12 +010071 Choose this option to target the RV32I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080072
Lukas Auer862e2e72018-11-22 11:26:12 +010073config ARCH_RV64I
74 bool "RV64I"
Rick Chenf94c44e2017-12-26 13:55:52 +080075 select 64BIT
Lukas Auer71158562018-11-22 11:26:13 +010076 select PHYS_64BIT
Rick Chenf94c44e2017-12-26 13:55:52 +080077 help
Lukas Auer862e2e72018-11-22 11:26:12 +010078 Choose this option to target the RV64I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080079
80endchoice
81
Lukas Auer8176ea42018-12-12 06:12:23 -080082choice
83 prompt "Code Model"
84 default CMODEL_MEDLOW
85
86config 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
92config 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
98endchoice
99
Anup Patel3cfc8252018-12-12 06:12:29 -0800100choice
101 prompt "Run Mode"
102 default RISCV_MMODE
103
104config RISCV_MMODE
105 bool "Machine"
106 help
107 Choose this option to build U-Boot for RISC-V M-Mode.
108
109config RISCV_SMODE
110 bool "Supervisor"
111 help
112 Choose this option to build U-Boot for RISC-V S-Mode.
113
114endchoice
115
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200116choice
117 prompt "SPL Run Mode"
118 default SPL_RISCV_MMODE
119 depends on SPL
120
121config SPL_RISCV_MMODE
122 bool "Machine"
123 help
124 Choose this option to build U-Boot SPL for RISC-V M-Mode.
125
126config SPL_RISCV_SMODE
127 bool "Supervisor"
128 help
129 Choose this option to build U-Boot SPL for RISC-V S-Mode.
130
131endchoice
132
Lukas Auerd57ffa62018-11-22 11:26:14 +0100133config 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
141config RISCV_ISA_A
142 def_bool y
143
Rick Chenf94c44e2017-12-26 13:55:52 +0800144config 32BIT
145 bool
146
147config 64BIT
148 bool
149
Bin Meng644a3cd2018-12-12 06:12:30 -0800150config SIFIVE_CLINT
151 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200152 depends on RISCV_MMODE || SPL_RISCV_MMODE
Bin Meng644a3cd2018-12-12 06:12:30 -0800153 select REGMAP
154 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200155 select SPL_REGMAP if SPL
156 select SPL_SYSCON if SPL
Bin Meng644a3cd2018-12-12 06:12:30 -0800157 help
158 The SiFive CLINT block holds memory-mapped control and status registers
159 associated with software and timer interrupts.
160
Rick Chen0d389462019-04-02 15:56:39 +0800161config ANDES_PLIC
162 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200163 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen0d389462019-04-02 15:56:39 +0800164 select REGMAP
165 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200166 select SPL_REGMAP if SPL
167 select SPL_SYSCON if SPL
Rick Chen0d389462019-04-02 15:56:39 +0800168 help
169 The Andes PLIC block holds memory-mapped claim and pending registers
170 associated with software interrupt.
171
Rick Chena1f24872019-04-02 15:56:40 +0800172config ANDES_PLMT
173 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200174 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chena1f24872019-04-02 15:56:40 +0800175 select REGMAP
176 select SYSCON
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200177 select SPL_REGMAP if SPL
178 select SPL_SYSCON if SPL
Rick Chena1f24872019-04-02 15:56:40 +0800179 help
180 The Andes PLMT block holds memory-mapped mtime register
181 associated with timer tick.
182
Anup Patel511107d2018-12-12 06:12:31 -0800183config RISCV_RDTIME
184 bool
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200185 default y if RISCV_SMODE || SPL_RISCV_SMODE
Anup Patel511107d2018-12-12 06:12:31 -0800186 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
Bin Meng92b64fe2018-12-12 06:12:33 -0800191config SYS_MALLOC_F_LEN
192 default 0x1000
193
Lukas Auerfa33f082019-03-17 19:28:32 +0100194config SMP
195 bool "Symmetric Multi-Processing"
Bin Meng6fa022e2020-04-16 08:09:31 -0700196 depends on SBI_V01 || !RISCV_SMODE
Lukas Auerfa33f082019-03-17 19:28:32 +0100197 help
198 This enables support for systems with more than one CPU. If
199 you say N here, U-Boot 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 will run on many, but not
202 all, single processor machines.
203
Bin Meng191636e2020-04-16 08:09:30 -0700204config SPL_SMP
205 bool "Symmetric Multi-Processing in SPL"
206 depends on SPL && SPL_RISCV_MMODE
207 default y
208 help
209 This enables support for systems with more than one CPU in SPL.
210 If you say N here, U-Boot SPL will run on single and multiprocessor
211 machines, but will use only one CPU of a multiprocessor
212 machine. If you say Y here, U-Boot SPL will run on many, but not
213 all, single processor machines.
214
Lukas Auerfa33f082019-03-17 19:28:32 +0100215config NR_CPUS
216 int "Maximum number of CPUs (2-32)"
217 range 2 32
Bin Meng191636e2020-04-16 08:09:30 -0700218 depends on SMP || SPL_SMP
Lukas Auerfa33f082019-03-17 19:28:32 +0100219 default 8
220 help
221 On multiprocessor machines, U-Boot sets up a stack for each CPU.
222 Stack memory is pre-allocated. U-Boot must therefore know the
223 maximum number of CPUs that may be present.
224
Bin Mengf58fc342020-03-09 19:35:28 -0700225config SBI
226 bool
227 default y if RISCV_SMODE || SPL_RISCV_SMODE
228
Bin Mengff0fa6c2020-04-16 08:09:32 -0700229choice
230 prompt "SBI support"
Bin Mengfa16ec22020-04-16 08:09:33 -0700231 default SBI_V02
Bin Mengff0fa6c2020-04-16 08:09:32 -0700232
Bin Meng1b3c8d62020-03-09 19:35:30 -0700233config SBI_V01
234 bool "SBI v0.1 support"
Bin Meng1b3c8d62020-03-09 19:35:30 -0700235 depends on SBI
236 help
237 This config allows kernel to use SBI v0.1 APIs. This will be
238 deprecated in future once legacy M-mode software are no longer in use.
239
Bin Mengff0fa6c2020-04-16 08:09:32 -0700240config SBI_V02
241 bool "SBI v0.2 support"
242 depends on SBI
243 help
244 This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
245 scalable and extendable to handle future needs for RISC-V supervisor
246 interfaces. For example, with SBI v0.2 HSM extension, only a single
247 hart need to boot and enter operating system. The booting hart can
248 bring up secondary harts one by one afterwards.
249
250 Choose this option if OpenSBI v0.7 or above release is used together
251 with U-Boot.
252
253endchoice
254
Lukas Auerf152feb2019-03-17 19:28:34 +0100255config SBI_IPI
256 bool
Bin Mengf58fc342020-03-09 19:35:28 -0700257 depends on SBI
Lukas Auerfbfd92b2019-08-21 21:14:43 +0200258 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auerf152feb2019-03-17 19:28:34 +0100259 depends on SMP
260
Rick Chenbdce3892019-04-30 13:49:33 +0800261config XIP
262 bool "XIP mode"
263 help
264 XIP (eXecute In Place) is a method for executing code directly
265 from a NOR flash memory without copying the code to ram.
266 Say yes here if U-Boot boots from flash directly.
267
Sean Andersonfd1f6e92019-12-25 00:27:44 -0500268config SHOW_REGS
269 bool "Show registers on unhandled exception"
270
Lukas Auer3dea63c2019-03-17 19:28:37 +0100271config STACK_SIZE_SHIFT
272 int
Lukas Auer6b20dc12019-10-20 20:53:47 +0200273 default 14
Lukas Auer3dea63c2019-03-17 19:28:37 +0100274
Rick Chenf94c44e2017-12-26 13:55:52 +0800275endmenu