1# SPDX-License-Identifier: GPL-2.0-only
2config 64BIT
3	bool "64-bit kernel" if "$(ARCH)" = "sparc"
4	default "$(ARCH)" = "sparc64"
5	help
6	  SPARC is a family of RISC microprocessors designed and marketed by
7	  Sun Microsystems, incorporated.  They are very widely found in Sun
8	  workstations and clones.
9
10	  Say yes to build a 64-bit kernel - formerly known as sparc64
11	  Say no to build a 32-bit kernel - formerly known as sparc
12
13config SPARC
14	bool
15	default y
16	select ARCH_MIGHT_HAVE_PC_PARPORT if SPARC64 && PCI
17	select ARCH_MIGHT_HAVE_PC_SERIO
18	select DMA_OPS
19	select OF
20	select OF_PROMTREE
21	select HAVE_ASM_MODVERSIONS
22	select HAVE_IDE
23	select HAVE_OPROFILE
24	select HAVE_ARCH_KGDB if !SMP || SPARC64
25	select HAVE_ARCH_TRACEHOOK
26	select HAVE_ARCH_SECCOMP if SPARC64
27	select HAVE_EXIT_THREAD
28	select HAVE_PCI
29	select SYSCTL_EXCEPTION_TRACE
30	select RTC_CLASS
31	select RTC_DRV_M48T59
32	select RTC_SYSTOHC
33	select HAVE_ARCH_JUMP_LABEL if SPARC64
34	select GENERIC_IRQ_SHOW
35	select ARCH_WANT_IPC_PARSE_VERSION
36	select GENERIC_PCI_IOMAP
37	select HAVE_NMI_WATCHDOG if SPARC64
38	select HAVE_CBPF_JIT if SPARC32
39	select HAVE_EBPF_JIT if SPARC64
40	select HAVE_DEBUG_BUGVERBOSE
41	select GENERIC_SMP_IDLE_THREAD
42	select GENERIC_CLOCKEVENTS
43	select GENERIC_STRNCPY_FROM_USER
44	select GENERIC_STRNLEN_USER
45	select MODULES_USE_ELF_RELA
46	select PCI_SYSCALL if PCI
47	select PCI_MSI_ARCH_FALLBACKS if PCI_MSI
48	select ODD_RT_SIGACTION
49	select OLD_SIGSUSPEND
50	select CPU_NO_EFFICIENT_FFS
51	select LOCKDEP_SMALL if LOCKDEP
52	select NEED_DMA_MAP_STATE
53	select NEED_SG_DMA_LENGTH
54	select SET_FS
55
56config SPARC32
57	def_bool !64BIT
58	select ARCH_32BIT_OFF_T
59	select ARCH_HAS_SYNC_DMA_FOR_CPU
60	select GENERIC_ATOMIC64
61	select CLZ_TAB
62	select HAVE_UID16
63	select OLD_SIGACTION
64
65config SPARC64
66	def_bool 64BIT
67	select HAVE_FUNCTION_TRACER
68	select HAVE_FUNCTION_GRAPH_TRACER
69	select HAVE_KRETPROBES
70	select HAVE_KPROBES
71	select MMU_GATHER_RCU_TABLE_FREE if SMP
72	select HAVE_ARCH_TRANSPARENT_HUGEPAGE
73	select HAVE_DYNAMIC_FTRACE
74	select HAVE_FTRACE_MCOUNT_RECORD
75	select HAVE_SYSCALL_TRACEPOINTS
76	select HAVE_CONTEXT_TRACKING
77	select HAVE_TIF_NOHZ
78	select HAVE_DEBUG_KMEMLEAK
79	select IOMMU_HELPER
80	select SPARSE_IRQ
81	select RTC_DRV_CMOS
82	select RTC_DRV_BQ4802
83	select RTC_DRV_SUN4V
84	select RTC_DRV_STARFIRE
85	select HAVE_PERF_EVENTS
86	select PERF_USE_VMALLOC
87	select ARCH_HAVE_NMI_SAFE_CMPXCHG
88	select HAVE_C_RECORDMCOUNT
89	select HAVE_ARCH_AUDITSYSCALL
90	select ARCH_SUPPORTS_ATOMIC_RMW
91	select HAVE_NMI
92	select HAVE_REGS_AND_STACK_ACCESS_API
93	select ARCH_USE_QUEUED_RWLOCKS
94	select ARCH_USE_QUEUED_SPINLOCKS
95	select GENERIC_TIME_VSYSCALL
96	select ARCH_CLOCKSOURCE_DATA
97	select ARCH_HAS_PTE_SPECIAL
98	select PCI_DOMAINS if PCI
99	select ARCH_HAS_GIGANTIC_PAGE
100
101config ARCH_PROC_KCORE_TEXT
102	def_bool y
103
104config CPU_BIG_ENDIAN
105	def_bool y
106
107config ARCH_ATU
108	bool
109	default y if SPARC64
110
111config STACKTRACE_SUPPORT
112	bool
113	default y if SPARC64
114
115config LOCKDEP_SUPPORT
116	bool
117	default y if SPARC64
118
119config ARCH_HIBERNATION_POSSIBLE
120	def_bool y if SPARC64
121
122config AUDIT_ARCH
123	bool
124	default y
125
126config HAVE_SETUP_PER_CPU_AREA
127	def_bool y if SPARC64
128
129config NEED_PER_CPU_EMBED_FIRST_CHUNK
130	def_bool y if SPARC64
131
132config NEED_PER_CPU_PAGE_FIRST_CHUNK
133	def_bool y if SPARC64
134
135config MMU
136	bool
137	default y
138
139config HIGHMEM
140	bool
141	default y if SPARC32
142
143config ZONE_DMA
144	bool
145	default y if SPARC32
146
147config GENERIC_ISA_DMA
148	bool
149	default y if SPARC32
150
151config ARCH_SUPPORTS_DEBUG_PAGEALLOC
152	def_bool y if SPARC64
153
154config PGTABLE_LEVELS
155	default 4 if 64BIT
156	default 3
157
158config ARCH_SUPPORTS_UPROBES
159	def_bool y if SPARC64
160
161menu "Processor type and features"
162
163config SMP
164	bool "Symmetric multi-processing support"
165	help
166	  This enables support for systems with more than one CPU. If you have
167	  a system with only one CPU, say N. If you have a system with more
168	  than one CPU, say Y.
169
170	  If you say N here, the kernel will run on uni- and multiprocessor
171	  machines, but will use only one CPU of a multiprocessor machine. If
172	  you say Y here, the kernel will run on many, but not all,
173	  uniprocessor machines. On a uniprocessor machine, the kernel
174	  will run faster if you say N here.
175
176	  People using multiprocessor machines who say Y here should also say
177	  Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
178	  Management" code will be disabled if you say Y here.
179
180	  See also <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO
181	  available at <http://www.tldp.org/docs.html#howto>.
182
183	  If you don't know what to do here, say N.
184
185config NR_CPUS
186	int "Maximum number of CPUs"
187	depends on SMP
188	range 2 32 if SPARC32
189	range 2 4096 if SPARC64
190	default 32 if SPARC32
191	default 4096 if SPARC64
192
193source "kernel/Kconfig.hz"
194
195config GENERIC_HWEIGHT
196	bool
197	default y
198
199config GENERIC_CALIBRATE_DELAY
200	bool
201	default y
202
203config ARCH_MAY_HAVE_PC_FDC
204	bool
205	default y
206
207config EMULATED_CMPXCHG
208	bool
209	default y if SPARC32
210	help
211	  Sparc32 does not have a CAS instruction like sparc64. cmpxchg()
212	  is emulated, and therefore it is not completely atomic.
213
214# Makefile helpers
215config SPARC32_SMP
216	bool
217	default y
218	depends on SPARC32 && SMP
219
220config SPARC64_SMP
221	bool
222	default y
223	depends on SPARC64 && SMP
224
225config EARLYFB
226	bool "Support for early boot text console"
227	default y
228	depends on SPARC64
229	help
230	  Say Y here to enable a faster early framebuffer boot console.
231
232config HOTPLUG_CPU
233	bool "Support for hot-pluggable CPUs"
234	depends on SPARC64 && SMP
235	help
236	  Say Y here to experiment with turning CPUs off and on.  CPUs
237	  can be controlled through /sys/devices/system/cpu/cpu#.
238	  Say N if you want to disable CPU hotplug.
239
240if SPARC64
241source "drivers/cpufreq/Kconfig"
242endif
243
244config US3_MC
245	tristate "UltraSPARC-III Memory Controller driver"
246	depends on SPARC64
247	default y
248	help
249	  This adds a driver for the UltraSPARC-III memory controller.
250	  Loading this driver allows exact mnemonic strings to be
251	  printed in the event of a memory error, so that the faulty DIMM
252	  on the motherboard can be matched to the error.
253
254	  If in doubt, say Y, as this information can be very useful.
255
256# Global things across all Sun machines.
257config GENERIC_LOCKBREAK
258	bool
259	default y
260	depends on SPARC64 && SMP && PREEMPTION
261
262config NUMA
263	bool "NUMA support"
264	depends on SPARC64 && SMP
265
266config NODES_SHIFT
267	int "Maximum NUMA Nodes (as a power of 2)"
268	range 4 5 if SPARC64
269	default "5"
270	depends on NEED_MULTIPLE_NODES
271	help
272	  Specify the maximum number of NUMA Nodes available on the target
273	  system.  Increases memory reserved to accommodate various tables.
274
275config ARCH_SPARSEMEM_ENABLE
276	def_bool y if SPARC64
277	select SPARSEMEM_VMEMMAP_ENABLE
278
279config ARCH_SPARSEMEM_DEFAULT
280	def_bool y if SPARC64
281
282config FORCE_MAX_ZONEORDER
283	int "Maximum zone order"
284	default "13"
285	help
286	  The kernel memory allocator divides physically contiguous memory
287	  blocks into "zones", where each zone is a power of two number of
288	  pages.  This option selects the largest power of two that the kernel
289	  keeps in the memory allocator.  If you need to allocate very large
290	  blocks of physically contiguous memory, then you may need to
291	  increase this value.
292
293	  This config option is actually maximum order plus one. For example,
294	  a value of 13 means that the largest free memory block is 2^12 pages.
295
296if SPARC64
297source "kernel/power/Kconfig"
298endif
299
300config SCHED_SMT
301	bool "SMT (Hyperthreading) scheduler support"
302	depends on SPARC64 && SMP
303	default y
304	help
305	  SMT scheduler support improves the CPU scheduler's decision making
306	  when dealing with SPARC cpus at a cost of slightly increased overhead
307	  in some places. If unsure say N here.
308
309config SCHED_MC
310	bool "Multi-core scheduler support"
311	depends on SPARC64 && SMP
312	default y
313	help
314	  Multi-core scheduler support improves the CPU scheduler's decision
315	  making when dealing with multi-core CPU chips at a cost of slightly
316	  increased overhead in some places. If unsure say N here.
317
318config CMDLINE_BOOL
319	bool "Default bootloader kernel arguments"
320	depends on SPARC64
321
322config CMDLINE
323	string "Initial kernel command string"
324	depends on CMDLINE_BOOL
325	default "console=ttyS0,9600 root=/dev/sda1"
326	help
327	  Say Y here if you want to be able to pass default arguments to
328	  the kernel. This will be overridden by the bootloader, if you
329	  use one (such as SILO). This is most useful if you want to boot
330	  a kernel from TFTP, and want default options to be available
331	  with having them passed on the command line.
332
333	  NOTE: This option WILL override the PROM bootargs setting!
334
335config SUN_PM
336	bool
337	default y if SPARC32
338	help
339	  Enable power management and CPU standby features on supported
340	  SPARC platforms.
341
342config SPARC_LED
343	tristate "Sun4m LED driver"
344	depends on SPARC32
345	help
346	  This driver toggles the front-panel LED on sun4m systems
347	  in a user-specifiable manner.  Its state can be probed
348	  by reading /proc/led and its blinking mode can be changed
349	  via writes to /proc/led
350
351config SERIAL_CONSOLE
352	bool
353	depends on SPARC32
354	default y
355	help
356	  If you say Y here, it will be possible to use a serial port as the
357	  system console (the system console is the device which receives all
358	  kernel messages and warnings and which allows logins in single user
359	  mode). This could be useful if some terminal or printer is connected
360	  to that serial port.
361
362	  Even if you say Y here, the currently visible virtual console
363	  (/dev/tty0) will still be used as the system console by default, but
364	  you can alter that using a kernel command line option such as
365	  "console=ttyS1". (Try "man bootparam" or see the documentation of
366	  your boot loader (silo) about how to pass options to the kernel at
367	  boot time.)
368
369	  If you don't have a graphics card installed and you say Y here, the
370	  kernel will automatically use the first serial line, /dev/ttyS0, as
371	  system console.
372
373	  If unsure, say N.
374
375config SPARC_LEON
376	bool "Sparc Leon processor family"
377	depends on SPARC32
378	select USB_EHCI_BIG_ENDIAN_MMIO
379	select USB_EHCI_BIG_ENDIAN_DESC
380	select USB_UHCI_BIG_ENDIAN_MMIO
381	select USB_UHCI_BIG_ENDIAN_DESC
382	help
383	  If you say Y here if you are running on a SPARC-LEON processor.
384	  The LEON processor is a synthesizable VHDL model of the
385	  SPARC-v8 standard. LEON is  part of the GRLIB collection of
386	  IP cores that are distributed under GPL. GRLIB can be downloaded
387	  from www.gaisler.com. You can download a sparc-linux cross-compilation
388	  toolchain at www.gaisler.com.
389
390if SPARC_LEON
391menu "U-Boot options"
392
393config UBOOT_LOAD_ADDR
394	hex "uImage Load Address"
395	default 0x40004000
396	help
397	 U-Boot kernel load address, the address in physical address space
398	 where u-boot will place the Linux kernel before booting it.
399	 This address is normally the base address of main memory + 0x4000.
400
401config UBOOT_FLASH_ADDR
402	hex "uImage.o Load Address"
403	default 0x00080000
404	help
405	 Optional setting only affecting the uImage.o ELF-image used to
406	 download the uImage file to the target using a ELF-loader other than
407	 U-Boot. It may for example be used to download an uImage to FLASH with
408	 the GRMON utility before even starting u-boot.
409
410config UBOOT_ENTRY_ADDR
411	hex "uImage Entry Address"
412	default 0xf0004000
413	help
414	 Do not change this unless you know what you're doing. This is
415	 hardcoded by the SPARC32 and LEON port.
416
417	 This is the virtual address u-boot jumps to when booting the Linux
418	 Kernel.
419
420endmenu
421endif
422
423endmenu
424
425menu "Bus options (PCI etc.)"
426config SBUS
427	bool
428	default y
429
430config SBUSCHAR
431	bool
432	default y
433
434config SUN_LDOMS
435	bool "Sun Logical Domains support"
436	depends on SPARC64
437	help
438	  Say Y here is you want to support virtual devices via
439	  Logical Domains.
440
441config PCIC_PCI
442	bool
443	depends on PCI && SPARC32 && !SPARC_LEON
444	default y
445
446config LEON_PCI
447	bool
448	depends on PCI && SPARC_LEON
449	default y
450
451config SPARC_GRPCI1
452	bool "GRPCI Host Bridge Support"
453	depends on LEON_PCI
454	default y
455	help
456	  Say Y here to include the GRPCI Host Bridge Driver. The GRPCI
457	  PCI host controller is typically found in GRLIB SPARC32/LEON
458	  systems. The driver has one property (all_pci_errors) controlled
459	  from the bootloader that makes the GRPCI to generate interrupts
460	  on detected PCI Parity and System errors.
461
462config SPARC_GRPCI2
463	bool "GRPCI2 Host Bridge Support"
464	depends on LEON_PCI
465	default y
466	help
467	  Say Y here to include the GRPCI2 Host Bridge Driver.
468
469config SUN_OPENPROMFS
470	tristate "Openprom tree appears in /proc/openprom"
471	help
472	  If you say Y, the OpenPROM device tree will be available as a
473	  virtual file system, which you can mount to /proc/openprom by "mount
474	  -t openpromfs none /proc/openprom".
475
476	  To compile the /proc/openprom support as a module, choose M here: the
477	  module will be called openpromfs.
478
479	  Only choose N if you know in advance that you will not need to modify
480	  OpenPROM settings on the running system.
481
482# Makefile helpers
483config SPARC64_PCI
484	bool
485	default y
486	depends on SPARC64 && PCI
487
488config SPARC64_PCI_MSI
489	bool
490	default y
491	depends on SPARC64_PCI && PCI_MSI
492
493endmenu
494
495config COMPAT
496	bool
497	depends on SPARC64
498	default y
499	select COMPAT_BINFMT_ELF
500	select HAVE_UID16
501	select ARCH_WANT_OLD_COMPAT_IPC
502	select COMPAT_OLD_SIGACTION
503
504config SYSVIPC_COMPAT
505	bool
506	depends on COMPAT && SYSVIPC
507	default y
508
509source "drivers/sbus/char/Kconfig"
510