Merge branch 'master' of git://git.denx.de/u-boot-spi
[platform/kernel/u-boot.git] / arch / riscv / Kconfig
1 menu "RISC-V architecture"
2         depends on RISCV
3
4 config SYS_ARCH
5         default "riscv"
6
7 choice
8         prompt "Target select"
9         optional
10
11 config TARGET_AX25_AE350
12         bool "Support ax25-ae350"
13
14 config TARGET_MICROCHIP_ICICLE
15         bool "Support Microchip PolarFire-SoC Icicle Board"
16
17 config TARGET_QEMU_VIRT
18         bool "Support QEMU Virt Board"
19
20 config TARGET_SIFIVE_FU540
21         bool "Support SiFive FU540 Board"
22
23 endchoice
24
25 config SYS_ICACHE_OFF
26         bool "Do not enable icache"
27         default n
28         help
29           Do not enable instruction cache in U-Boot.
30
31 config 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
38 config SYS_DCACHE_OFF
39         bool "Do not enable dcache"
40         default n
41         help
42           Do not enable data cache in U-Boot.
43
44 config 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
52 source "board/AndesTech/ax25-ae350/Kconfig"
53 source "board/emulation/qemu-riscv/Kconfig"
54 source "board/microchip/mpfs_icicle/Kconfig"
55 source "board/sifive/fu540/Kconfig"
56
57 # platform-specific options below
58 source "arch/riscv/cpu/ax25/Kconfig"
59 source "arch/riscv/cpu/generic/Kconfig"
60
61 # architecture-specific options below
62
63 choice
64         prompt "Base ISA"
65         default ARCH_RV32I
66
67 config ARCH_RV32I
68         bool "RV32I"
69         select 32BIT
70         help
71           Choose this option to target the RV32I base integer instruction set.
72
73 config 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
80 endchoice
81
82 choice
83         prompt "Code Model"
84         default CMODEL_MEDLOW
85
86 config 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
92 config 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
98 endchoice
99
100 choice
101         prompt "Run Mode"
102         default RISCV_MMODE
103
104 config RISCV_MMODE
105         bool "Machine"
106         help
107           Choose this option to build U-Boot for RISC-V M-Mode.
108
109 config RISCV_SMODE
110         bool "Supervisor"
111         help
112           Choose this option to build U-Boot for RISC-V S-Mode.
113
114 endchoice
115
116 config RISCV_ISA_C
117         bool "Emit compressed instructions"
118         default y
119         help
120           Adds "C" to the ISA subsets that the toolchain is allowed to emit
121           when building U-Boot, which results in compressed instructions in the
122           U-Boot binary.
123
124 config RISCV_ISA_A
125         def_bool y
126
127 config 32BIT
128         bool
129
130 config 64BIT
131         bool
132
133 config SIFIVE_CLINT
134         bool
135         depends on RISCV_MMODE
136         select REGMAP
137         select SYSCON
138         help
139           The SiFive CLINT block holds memory-mapped control and status registers
140           associated with software and timer interrupts.
141
142 config ANDES_PLIC
143         bool
144         depends on RISCV_MMODE
145         select REGMAP
146         select SYSCON
147         help
148           The Andes PLIC block holds memory-mapped claim and pending registers
149           associated with software interrupt.
150
151 config ANDES_PLMT
152         bool
153         depends on RISCV_MMODE
154         select REGMAP
155         select SYSCON
156         help
157           The Andes PLMT block holds memory-mapped mtime register
158           associated with timer tick.
159
160 config RISCV_RDTIME
161         bool
162         default y if RISCV_SMODE
163         help
164           The provides the riscv_get_time() API that is implemented using the
165           standard rdtime instruction. This is the case for S-mode U-Boot, and
166           is useful for processors that support rdtime in M-mode too.
167
168 config SYS_MALLOC_F_LEN
169         default 0x1000
170
171 config SMP
172         bool "Symmetric Multi-Processing"
173         help
174           This enables support for systems with more than one CPU. If
175           you say N here, U-Boot will run on single and multiprocessor
176           machines, but will use only one CPU of a multiprocessor
177           machine. If you say Y here, U-Boot will run on many, but not
178           all, single processor machines.
179
180 config NR_CPUS
181         int "Maximum number of CPUs (2-32)"
182         range 2 32
183         depends on SMP
184         default 8
185         help
186           On multiprocessor machines, U-Boot sets up a stack for each CPU.
187           Stack memory is pre-allocated. U-Boot must therefore know the
188           maximum number of CPUs that may be present.
189
190 config SBI_IPI
191         bool
192         default y if RISCV_SMODE
193         depends on SMP
194
195 config XIP
196         bool "XIP mode"
197         help
198           XIP (eXecute In Place) is a method for executing code directly
199           from a NOR flash memory without copying the code to ram.
200           Say yes here if U-Boot boots from flash directly.
201
202 config STACK_SIZE_SHIFT
203         int
204         default 13
205
206 endmenu