blob: a252cdbb7138d8c2aa3c1418ce390ccec260570b [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"
Anup Patel1240cd62019-02-25 08:14:10 +000059source "arch/riscv/cpu/generic/Kconfig"
Rick Chen842d5802018-11-07 09:34:06 +080060
61# architecture-specific options below
62
Rick Chen64d4ead2017-12-26 13:55:52 +080063choice
Lukas Auer54ebfe72018-11-22 11:26:12 +010064 prompt "Base ISA"
65 default ARCH_RV32I
Rick Chen64d4ead2017-12-26 13:55:52 +080066
Lukas Auer54ebfe72018-11-22 11:26:12 +010067config ARCH_RV32I
68 bool "RV32I"
Rick Chen64d4ead2017-12-26 13:55:52 +080069 select 32BIT
70 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010071 Choose this option to target the RV32I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080072
Lukas Auer54ebfe72018-11-22 11:26:12 +010073config ARCH_RV64I
74 bool "RV64I"
Rick Chen64d4ead2017-12-26 13:55:52 +080075 select 64BIT
Lukas Auer7ab1df02018-11-22 11:26:13 +010076 select PHYS_64BIT
Rick Chen64d4ead2017-12-26 13:55:52 +080077 help
Lukas Auer54ebfe72018-11-22 11:26:12 +010078 Choose this option to target the RV64I base integer instruction set.
Rick Chen64d4ead2017-12-26 13:55:52 +080079
80endchoice
81
Lukas Auerecc5d832018-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 Patel27881772018-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 Auer61346592019-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 Auer002012f2018-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 Chen64d4ead2017-12-26 13:55:52 +0800144config 32BIT
145 bool
146
147config 64BIT
148 bool
149
Bin Mengb6ee5e12018-12-12 06:12:30 -0800150config SIFIVE_CLINT
151 bool
Lukas Auer61346592019-08-21 21:14:43 +0200152 depends on RISCV_MMODE || SPL_RISCV_MMODE
Bin Mengb6ee5e12018-12-12 06:12:30 -0800153 select REGMAP
154 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200155 select SPL_REGMAP if SPL
156 select SPL_SYSCON if SPL
Bin Mengb6ee5e12018-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 Chen6df4ed02019-04-02 15:56:39 +0800161config ANDES_PLIC
162 bool
Lukas Auer61346592019-08-21 21:14:43 +0200163 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen6df4ed02019-04-02 15:56:39 +0800164 select REGMAP
165 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200166 select SPL_REGMAP if SPL
167 select SPL_SYSCON if SPL
Rick Chen6df4ed02019-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 Chen73766772019-04-02 15:56:40 +0800172config ANDES_PLMT
173 bool
Lukas Auer61346592019-08-21 21:14:43 +0200174 depends on RISCV_MMODE || SPL_RISCV_MMODE
Rick Chen73766772019-04-02 15:56:40 +0800175 select REGMAP
176 select SYSCON
Lukas Auer61346592019-08-21 21:14:43 +0200177 select SPL_REGMAP if SPL
178 select SPL_SYSCON if SPL
Rick Chen73766772019-04-02 15:56:40 +0800179 help
180 The Andes PLMT block holds memory-mapped mtime register
181 associated with timer tick.
182
Anup Patelf3c84792018-12-12 06:12:31 -0800183config RISCV_RDTIME
184 bool
Lukas Auer61346592019-08-21 21:14:43 +0200185 default y if RISCV_SMODE || SPL_RISCV_SMODE
Anup Patelf3c84792018-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 Mengdada2d12018-12-12 06:12:33 -0800191config SYS_MALLOC_F_LEN
192 default 0x1000
193
Lukas Auer83d573d2019-03-17 19:28:32 +0100194config SMP
195 bool "Symmetric Multi-Processing"
Bin Meng49975222020-04-16 08:09:31 -0700196 depends on SBI_V01 || !RISCV_SMODE
Lukas Auer83d573d2019-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 Mengb161f902020-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 Auer83d573d2019-03-17 19:28:32 +0100215config NR_CPUS
216 int "Maximum number of CPUs (2-32)"
217 range 2 32
Bin Mengb161f902020-04-16 08:09:30 -0700218 depends on SMP || SPL_SMP
Lukas Auer83d573d2019-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 Mengee3bcd02020-03-09 19:35:28 -0700225config SBI
226 bool
227 default y if RISCV_SMODE || SPL_RISCV_SMODE
228
Bin Meng887d8092020-03-09 19:35:30 -0700229config SBI_V01
230 bool "SBI v0.1 support"
231 default y
232 depends on SBI
233 help
234 This config allows kernel to use SBI v0.1 APIs. This will be
235 deprecated in future once legacy M-mode software are no longer in use.
236
Lukas Auere79178b2019-03-17 19:28:34 +0100237config SBI_IPI
238 bool
Bin Mengee3bcd02020-03-09 19:35:28 -0700239 depends on SBI
Lukas Auer61346592019-08-21 21:14:43 +0200240 default y if RISCV_SMODE || SPL_RISCV_SMODE
Lukas Auere79178b2019-03-17 19:28:34 +0100241 depends on SMP
242
Rick Chene5e6c362019-04-30 13:49:33 +0800243config XIP
244 bool "XIP mode"
245 help
246 XIP (eXecute In Place) is a method for executing code directly
247 from a NOR flash memory without copying the code to ram.
248 Say yes here if U-Boot boots from flash directly.
249
Sean Andersone8b46a12019-12-25 00:27:44 -0500250config SHOW_REGS
251 bool "Show registers on unhandled exception"
252
Lukas Auera3596652019-03-17 19:28:37 +0100253config STACK_SIZE_SHIFT
254 int
Lukas Auer03813702019-10-20 20:53:47 +0200255 default 14
Lukas Auera3596652019-03-17 19:28:37 +0100256
Rick Chen64d4ead2017-12-26 13:55:52 +0800257endmenu