blob: ae8ff7b765786841971eedfa06cb4257418e375d [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
Bin Meng510e3792018-09-26 06:55:21 -070014config TARGET_QEMU_VIRT
15 bool "Support QEMU Virt Board"
16
Anup Patel3fda0262019-02-25 08:15:19 +000017config TARGET_SIFIVE_FU540
18 bool "Support SiFive FU540 Board"
19
Rick Chenf94c44e2017-12-26 13:55:52 +080020endchoice
21
Rick Chen52923c62018-11-07 09:34:06 +080022# board-specific options below
Rick Chen6f4dd622018-05-29 09:54:40 +080023source "board/AndesTech/ax25-ae350/Kconfig"
Bin Meng510e3792018-09-26 06:55:21 -070024source "board/emulation/qemu-riscv/Kconfig"
Anup Patel3fda0262019-02-25 08:15:19 +000025source "board/sifive/fu540/Kconfig"
Rick Chenf94c44e2017-12-26 13:55:52 +080026
Rick Chen52923c62018-11-07 09:34:06 +080027# platform-specific options below
28source "arch/riscv/cpu/ax25/Kconfig"
Anup Patelfdff1f92019-02-25 08:14:10 +000029source "arch/riscv/cpu/generic/Kconfig"
Rick Chen52923c62018-11-07 09:34:06 +080030
31# architecture-specific options below
32
Rick Chenf94c44e2017-12-26 13:55:52 +080033choice
Lukas Auer862e2e72018-11-22 11:26:12 +010034 prompt "Base ISA"
35 default ARCH_RV32I
Rick Chenf94c44e2017-12-26 13:55:52 +080036
Lukas Auer862e2e72018-11-22 11:26:12 +010037config ARCH_RV32I
38 bool "RV32I"
Rick Chenf94c44e2017-12-26 13:55:52 +080039 select 32BIT
40 help
Lukas Auer862e2e72018-11-22 11:26:12 +010041 Choose this option to target the RV32I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080042
Lukas Auer862e2e72018-11-22 11:26:12 +010043config ARCH_RV64I
44 bool "RV64I"
Rick Chenf94c44e2017-12-26 13:55:52 +080045 select 64BIT
Lukas Auer71158562018-11-22 11:26:13 +010046 select PHYS_64BIT
Rick Chenf94c44e2017-12-26 13:55:52 +080047 help
Lukas Auer862e2e72018-11-22 11:26:12 +010048 Choose this option to target the RV64I base integer instruction set.
Rick Chenf94c44e2017-12-26 13:55:52 +080049
50endchoice
51
Lukas Auer8176ea42018-12-12 06:12:23 -080052choice
53 prompt "Code Model"
54 default CMODEL_MEDLOW
55
56config CMODEL_MEDLOW
57 bool "medium low code model"
58 help
59 U-Boot and its statically defined symbols must lie within a single 2 GiB
60 address range and must lie between absolute addresses -2 GiB and +2 GiB.
61
62config CMODEL_MEDANY
63 bool "medium any code model"
64 help
65 U-Boot and its statically defined symbols must be within any single 2 GiB
66 address range.
67
68endchoice
69
Anup Patel3cfc8252018-12-12 06:12:29 -080070choice
71 prompt "Run Mode"
72 default RISCV_MMODE
73
74config RISCV_MMODE
75 bool "Machine"
76 help
77 Choose this option to build U-Boot for RISC-V M-Mode.
78
79config RISCV_SMODE
80 bool "Supervisor"
81 help
82 Choose this option to build U-Boot for RISC-V S-Mode.
83
84endchoice
85
Lukas Auerd57ffa62018-11-22 11:26:14 +010086config RISCV_ISA_C
87 bool "Emit compressed instructions"
88 default y
89 help
90 Adds "C" to the ISA subsets that the toolchain is allowed to emit
91 when building U-Boot, which results in compressed instructions in the
92 U-Boot binary.
93
94config RISCV_ISA_A
95 def_bool y
96
Rick Chenf94c44e2017-12-26 13:55:52 +080097config 32BIT
98 bool
99
100config 64BIT
101 bool
102
Bin Meng644a3cd2018-12-12 06:12:30 -0800103config SIFIVE_CLINT
104 bool
105 depends on RISCV_MMODE
106 select REGMAP
107 select SYSCON
108 help
109 The SiFive CLINT block holds memory-mapped control and status registers
110 associated with software and timer interrupts.
111
Rick Chen0d389462019-04-02 15:56:39 +0800112config ANDES_PLIC
113 bool
114 depends on RISCV_MMODE
115 select REGMAP
116 select SYSCON
117 help
118 The Andes PLIC block holds memory-mapped claim and pending registers
119 associated with software interrupt.
120
Rick Chena1f24872019-04-02 15:56:40 +0800121config ANDES_PLMT
122 bool
123 depends on RISCV_MMODE
124 select REGMAP
125 select SYSCON
126 help
127 The Andes PLMT block holds memory-mapped mtime register
128 associated with timer tick.
129
Anup Patel511107d2018-12-12 06:12:31 -0800130config RISCV_RDTIME
131 bool
132 default y if RISCV_SMODE
133 help
134 The provides the riscv_get_time() API that is implemented using the
135 standard rdtime instruction. This is the case for S-mode U-Boot, and
136 is useful for processors that support rdtime in M-mode too.
137
Bin Meng92b64fe2018-12-12 06:12:33 -0800138config SYS_MALLOC_F_LEN
139 default 0x1000
140
Lukas Auerfa33f082019-03-17 19:28:32 +0100141config SMP
142 bool "Symmetric Multi-Processing"
143 help
144 This enables support for systems with more than one CPU. If
145 you say N here, U-Boot will run on single and multiprocessor
146 machines, but will use only one CPU of a multiprocessor
147 machine. If you say Y here, U-Boot will run on many, but not
148 all, single processor machines.
149
150config NR_CPUS
151 int "Maximum number of CPUs (2-32)"
152 range 2 32
153 depends on SMP
154 default 8
155 help
156 On multiprocessor machines, U-Boot sets up a stack for each CPU.
157 Stack memory is pre-allocated. U-Boot must therefore know the
158 maximum number of CPUs that may be present.
159
Lukas Auerf152feb2019-03-17 19:28:34 +0100160config SBI_IPI
161 bool
162 default y if RISCV_SMODE
163 depends on SMP
164
Lukas Auer3dea63c2019-03-17 19:28:37 +0100165config STACK_SIZE_SHIFT
166 int
167 default 13
168
Rick Chenf94c44e2017-12-26 13:55:52 +0800169endmenu