riscv: fix build break after macro-to-function conversion in generic cacheflush.h
[sfrench/cifs-2.6.git] / arch / riscv / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # For a description of the syntax of this configuration file,
4 # see Documentation/kbuild/kconfig-language.txt.
5 #
6
7 config 64BIT
8         bool
9
10 config 32BIT
11         bool
12
13 config RISCV
14         def_bool y
15         # even on 32-bit, physical (and DMA) addresses are > 32-bits
16         select PHYS_ADDR_T_64BIT
17         select OF
18         select OF_EARLY_FLATTREE
19         select OF_IRQ
20         select ARCH_WANT_FRAME_POINTERS
21         select CLONE_BACKWARDS
22         select COMMON_CLK
23         select GENERIC_CLOCKEVENTS
24         select GENERIC_CPU_DEVICES
25         select GENERIC_IRQ_SHOW
26         select GENERIC_PCI_IOMAP
27         select GENERIC_SCHED_CLOCK
28         select GENERIC_STRNCPY_FROM_USER
29         select GENERIC_STRNLEN_USER
30         select GENERIC_SMP_IDLE_THREAD
31         select GENERIC_ATOMIC64 if !64BIT
32         select HAVE_ARCH_AUDITSYSCALL
33         select HAVE_MEMBLOCK_NODE_MAP
34         select HAVE_DMA_CONTIGUOUS
35         select HAVE_FUTEX_CMPXCHG if FUTEX
36         select HAVE_PERF_EVENTS
37         select HAVE_SYSCALL_TRACEPOINTS
38         select IRQ_DOMAIN
39         select SPARSE_IRQ
40         select SYSCTL_EXCEPTION_TRACE
41         select HAVE_ARCH_TRACEHOOK
42         select HAVE_PCI
43         select MODULES_USE_ELF_RELA if MODULES
44         select MODULE_SECTIONS if MODULES
45         select THREAD_INFO_IN_TASK
46         select PCI_DOMAINS_GENERIC if PCI
47         select PCI_MSI if PCI
48         select RISCV_TIMER
49         select GENERIC_IRQ_MULTI_HANDLER
50         select ARCH_HAS_PTE_SPECIAL
51         select ARCH_HAS_MMIOWB
52         select HAVE_EBPF_JIT if 64BIT
53         select ARCH_HAS_GIGANTIC_PAGE
54         select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
55
56 config MMU
57         def_bool y
58
59 config ZONE_DMA32
60         bool
61         default y if 64BIT
62
63 config PAGE_OFFSET
64         hex
65         default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
66         default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
67         default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
68
69 config ARCH_WANT_GENERAL_HUGETLB
70         def_bool y
71
72 config SYS_SUPPORTS_HUGETLBFS
73         def_bool y
74
75 config STACKTRACE_SUPPORT
76         def_bool y
77
78 config TRACE_IRQFLAGS_SUPPORT
79         def_bool y
80
81 config GENERIC_BUG
82         def_bool y
83         depends on BUG
84         select GENERIC_BUG_RELATIVE_POINTERS if 64BIT
85
86 config GENERIC_BUG_RELATIVE_POINTERS
87         bool
88
89 config GENERIC_CALIBRATE_DELAY
90         def_bool y
91
92 config GENERIC_CSUM
93         def_bool y
94
95 config GENERIC_HWEIGHT
96         def_bool y
97
98 config FIX_EARLYCON_MEM
99         def_bool y
100
101 config PGTABLE_LEVELS
102         int
103         default 3 if 64BIT
104         default 2
105
106 source "arch/riscv/Kconfig.socs"
107
108 menu "Platform type"
109
110 choice
111         prompt "Base ISA"
112         default ARCH_RV64I
113         help
114           This selects the base ISA that this kernel will target and must match
115           the target platform.
116
117 config ARCH_RV32I
118         bool "RV32I"
119         select 32BIT
120         select GENERIC_LIB_ASHLDI3
121         select GENERIC_LIB_ASHRDI3
122         select GENERIC_LIB_LSHRDI3
123         select GENERIC_LIB_UCMPDI2
124
125 config ARCH_RV64I
126         bool "RV64I"
127         select 64BIT
128         select ARCH_SUPPORTS_INT128 if GCC_VERSION >= 50000
129         select HAVE_FUNCTION_TRACER
130         select HAVE_FUNCTION_GRAPH_TRACER
131         select HAVE_FTRACE_MCOUNT_RECORD
132         select HAVE_DYNAMIC_FTRACE
133         select HAVE_DYNAMIC_FTRACE_WITH_REGS
134         select SWIOTLB
135
136 endchoice
137
138 # We must be able to map all physical memory into the kernel, but the compiler
139 # is still a bit more efficient when generating code if it's setup in a manner
140 # such that it can only map 2GiB of memory.
141 choice
142         prompt "Kernel Code Model"
143         default CMODEL_MEDLOW if 32BIT
144         default CMODEL_MEDANY if 64BIT
145
146         config CMODEL_MEDLOW
147                 bool "medium low code model"
148         config CMODEL_MEDANY
149                 bool "medium any code model"
150 endchoice
151
152 config MODULE_SECTIONS
153         bool
154         select HAVE_MOD_ARCH_SPECIFIC
155
156 choice
157         prompt "Maximum Physical Memory"
158         default MAXPHYSMEM_2GB if 32BIT
159         default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
160         default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
161
162         config MAXPHYSMEM_2GB
163                 bool "2GiB"
164         config MAXPHYSMEM_128GB
165                 depends on 64BIT && CMODEL_MEDANY
166                 bool "128GiB"
167 endchoice
168
169
170 config SMP
171         bool "Symmetric Multi-Processing"
172         help
173           This enables support for systems with more than one CPU.  If
174           you say N here, the kernel will run on single and
175           multiprocessor machines, but will use only one CPU of a
176           multiprocessor machine. If you say Y here, the kernel will run
177           on many, but not all, single processor machines. On a single
178           processor machine, the kernel will run faster if you say N
179           here.
180
181           If you don't know what to do here, say N.
182
183 config NR_CPUS
184         int "Maximum number of CPUs (2-32)"
185         range 2 32
186         depends on SMP
187         default "8"
188
189 choice
190         prompt "CPU Tuning"
191         default TUNE_GENERIC
192
193 config TUNE_GENERIC
194         bool "generic"
195
196 endchoice
197
198 config RISCV_ISA_C
199         bool "Emit compressed instructions when building Linux"
200         default y
201         help
202            Adds "C" to the ISA subsets that the toolchain is allowed to emit
203            when building Linux, which results in compressed instructions in the
204            Linux binary.
205
206            If you don't know what to do here, say Y.
207
208 menu "supported PMU type"
209         depends on PERF_EVENTS
210
211 config RISCV_BASE_PMU
212         bool "Base Performance Monitoring Unit"
213         def_bool y
214         help
215           A base PMU that serves as a reference implementation and has limited
216           feature of perf.  It can run on any RISC-V machines so serves as the
217           fallback, but this option can also be disable to reduce kernel size.
218
219 endmenu
220
221 config FPU
222         bool "FPU support"
223         default y
224         help
225           Say N here if you want to disable all floating-point related procedure
226           in the kernel.
227
228           If you don't know what to do here, say Y.
229
230 endmenu
231
232 menu "Kernel features"
233
234 source "kernel/Kconfig.hz"
235
236 endmenu
237
238 menu "Boot options"
239
240 config CMDLINE
241         string "Built-in kernel command line"
242         help
243           For most platforms, the arguments for the kernel's command line
244           are provided at run-time, during boot. However, there are cases
245           where either no arguments are being provided or the provided
246           arguments are insufficient or even invalid.
247
248           When that occurs, it is possible to define a built-in command
249           line here and choose how the kernel should use it later on.
250
251 choice
252         prompt "Built-in command line usage" if CMDLINE != ""
253         default CMDLINE_FALLBACK
254         help
255           Choose how the kernel will handle the provided built-in command
256           line.
257
258 config CMDLINE_FALLBACK
259         bool "Use bootloader kernel arguments if available"
260         help
261           Use the built-in command line as fallback in case we get nothing
262           during boot. This is the default behaviour.
263
264 config CMDLINE_EXTEND
265         bool "Extend bootloader kernel arguments"
266         help
267           The command-line arguments provided during boot will be
268           appended to the built-in command line. This is useful in
269           cases where the provided arguments are insufficient and
270           you don't want to or cannot modify them.
271
272
273 config CMDLINE_FORCE
274         bool "Always use the default kernel command string"
275         help
276           Always use the built-in command line, even if we get one during
277           boot. This is useful in case you need to override the provided
278           command line on systems where you don't have or want control
279           over it.
280
281 endchoice
282
283 endmenu
284
285 menu "Power management options"
286
287 source "kernel/power/Kconfig"
288
289 endmenu