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