• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1menu "RISC-V architecture"
2	depends on RISCV
3
4config SYS_ARCH
5	default "riscv"
6
7choice
8	prompt "Target select"
9	optional
10
11config TARGET_AX25_AE350
12	bool "Support ax25-ae350"
13
14config TARGET_MICROCHIP_ICICLE
15	bool "Support Microchip PolarFire-SoC Icicle Board"
16
17config TARGET_QEMU_VIRT
18	bool "Support QEMU Virt Board"
19
20config TARGET_SIFIVE_FU540
21	bool "Support SiFive FU540 Board"
22
23endchoice
24
25config SYS_ICACHE_OFF
26	bool "Do not enable icache"
27	default n
28	help
29	  Do not enable instruction cache in U-Boot.
30
31config 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
38config SYS_DCACHE_OFF
39	bool "Do not enable dcache"
40	default n
41	help
42	  Do not enable data cache in U-Boot.
43
44config 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
52source "board/AndesTech/ax25-ae350/Kconfig"
53source "board/emulation/qemu-riscv/Kconfig"
54source "board/microchip/mpfs_icicle/Kconfig"
55source "board/sifive/fu540/Kconfig"
56
57# platform-specific options below
58source "arch/riscv/cpu/ax25/Kconfig"
59source "arch/riscv/cpu/generic/Kconfig"
60
61# architecture-specific options below
62
63choice
64	prompt "Base ISA"
65	default ARCH_RV32I
66
67config ARCH_RV32I
68	bool "RV32I"
69	select 32BIT
70	help
71	  Choose this option to target the RV32I base integer instruction set.
72
73config 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
80endchoice
81
82choice
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
100choice
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
116choice
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
133config 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
144config 32BIT
145	bool
146
147config 64BIT
148	bool
149
150config 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
161config 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
172config 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
183config 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
191config SYS_MALLOC_F_LEN
192	default 0x1000
193
194config 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
203config 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
213config SBI_IPI
214	bool
215	default y if RISCV_SMODE || SPL_RISCV_SMODE
216	depends on SMP
217
218config XIP
219	bool "XIP mode"
220	help
221	  XIP (eXecute In Place) is a method for executing code directly
222	  from a NOR flash memory without copying the code to ram.
223	  Say yes here if U-Boot boots from flash directly.
224
225config STACK_SIZE_SHIFT
226	int
227	default 14
228
229config SPL_LDSCRIPT
230	default "arch/riscv/cpu/u-boot-spl.lds"
231
232endmenu
233