xref: /linux-6.15/arch/mips/Kconfig (revision 8690bbcf)
1# SPDX-License-Identifier: GPL-2.0
2config MIPS
3	bool
4	default y
5	select ARCH_32BIT_OFF_T if !64BIT
6	select ARCH_BINFMT_ELF_STATE if MIPS_FP_SUPPORT
7	select ARCH_HAS_CPU_CACHE_ALIASING
8	select ARCH_HAS_CPU_FINALIZE_INIT
9	select ARCH_HAS_CURRENT_STACK_POINTER if !CC_IS_CLANG || CLANG_VERSION >= 140000
10	select ARCH_HAS_DEBUG_VIRTUAL if !64BIT
11	select ARCH_HAS_FORTIFY_SOURCE
12	select ARCH_HAS_KCOV
13	select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE if !EVA
14	select ARCH_HAS_PTE_SPECIAL if !(32BIT && CPU_HAS_RIXI)
15	select ARCH_HAS_STRNCPY_FROM_USER
16	select ARCH_HAS_STRNLEN_USER
17	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
18	select ARCH_HAS_UBSAN_SANITIZE_ALL
19	select ARCH_HAS_GCOV_PROFILE_ALL
20	select ARCH_KEEP_MEMBLOCK
21	select ARCH_USE_BUILTIN_BSWAP
22	select ARCH_USE_CMPXCHG_LOCKREF if 64BIT
23	select ARCH_USE_MEMTEST
24	select ARCH_USE_QUEUED_RWLOCKS
25	select ARCH_USE_QUEUED_SPINLOCKS
26	select ARCH_SUPPORTS_HUGETLBFS if CPU_SUPPORTS_HUGEPAGES
27	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
28	select ARCH_WANT_IPC_PARSE_VERSION
29	select ARCH_WANT_LD_ORPHAN_WARN
30	select BUILDTIME_TABLE_SORT
31	select CLONE_BACKWARDS
32	select CPU_NO_EFFICIENT_FFS if (TARGET_ISA_REV < 1)
33	select CPU_PM if CPU_IDLE
34	select GENERIC_ATOMIC64 if !64BIT
35	select GENERIC_CMOS_UPDATE
36	select GENERIC_CPU_AUTOPROBE
37	select GENERIC_GETTIMEOFDAY
38	select GENERIC_IOMAP
39	select GENERIC_IRQ_PROBE
40	select GENERIC_IRQ_SHOW
41	select GENERIC_ISA_DMA if EISA
42	select GENERIC_LIB_ASHLDI3
43	select GENERIC_LIB_ASHRDI3
44	select GENERIC_LIB_CMPDI2
45	select GENERIC_LIB_LSHRDI3
46	select GENERIC_LIB_UCMPDI2
47	select GENERIC_SCHED_CLOCK if !CAVIUM_OCTEON_SOC
48	select GENERIC_SMP_IDLE_THREAD
49	select GENERIC_IDLE_POLL_SETUP
50	select GENERIC_TIME_VSYSCALL
51	select GUP_GET_PXX_LOW_HIGH if CPU_MIPS32 && PHYS_ADDR_T_64BIT
52	select HAS_IOPORT if !NO_IOPORT_MAP || ISA
53	select HAVE_ARCH_COMPILER_H
54	select HAVE_ARCH_JUMP_LABEL
55	select HAVE_ARCH_KGDB if MIPS_FP_SUPPORT
56	select HAVE_ARCH_MMAP_RND_BITS if MMU
57	select HAVE_ARCH_MMAP_RND_COMPAT_BITS if MMU && COMPAT
58	select HAVE_ARCH_SECCOMP_FILTER
59	select HAVE_ARCH_TRACEHOOK
60	select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES
61	select HAVE_ASM_MODVERSIONS
62	select HAVE_CONTEXT_TRACKING_USER
63	select HAVE_TIF_NOHZ
64	select HAVE_C_RECORDMCOUNT
65	select HAVE_DEBUG_KMEMLEAK
66	select HAVE_DEBUG_STACKOVERFLOW
67	select HAVE_DMA_CONTIGUOUS
68	select HAVE_DYNAMIC_FTRACE
69	select HAVE_EBPF_JIT if !CPU_MICROMIPS
70	select HAVE_EXIT_THREAD
71	select HAVE_FAST_GUP
72	select HAVE_FTRACE_MCOUNT_RECORD
73	select HAVE_FUNCTION_GRAPH_TRACER
74	select HAVE_FUNCTION_TRACER
75	select HAVE_GCC_PLUGINS
76	select HAVE_GENERIC_VDSO
77	select HAVE_IOREMAP_PROT
78	select HAVE_IRQ_EXIT_ON_IRQ_STACK
79	select HAVE_IRQ_TIME_ACCOUNTING
80	select HAVE_KPROBES
81	select HAVE_KRETPROBES
82	select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
83	select HAVE_MOD_ARCH_SPECIFIC
84	select HAVE_NMI
85	select HAVE_PERF_EVENTS
86	select HAVE_PERF_REGS
87	select HAVE_PERF_USER_STACK_DUMP
88	select HAVE_REGS_AND_STACK_ACCESS_API
89	select HAVE_RSEQ
90	select HAVE_SPARSE_SYSCALL_NR
91	select HAVE_STACKPROTECTOR
92	select HAVE_SYSCALL_TRACEPOINTS
93	select HAVE_VIRT_CPU_ACCOUNTING_GEN if 64BIT || !SMP
94	select IRQ_FORCED_THREADING
95	select ISA if EISA
96	select LOCK_MM_AND_FIND_VMA
97	select MODULES_USE_ELF_REL if MODULES
98	select MODULES_USE_ELF_RELA if MODULES && 64BIT
99	select PERF_USE_VMALLOC
100	select PCI_MSI_ARCH_FALLBACKS if PCI_MSI
101	select RTC_LIB
102	select SYSCTL_EXCEPTION_TRACE
103	select TRACE_IRQFLAGS_SUPPORT
104	select ARCH_HAS_ELFCORE_COMPAT
105	select HAVE_ARCH_KCSAN if 64BIT
106
107config MIPS_FIXUP_BIGPHYS_ADDR
108	bool
109
110config MIPS_GENERIC
111	bool
112
113config MACH_INGENIC
114	bool
115	select SYS_SUPPORTS_32BIT_KERNEL
116	select SYS_SUPPORTS_LITTLE_ENDIAN
117	select SYS_SUPPORTS_ZBOOT
118	select DMA_NONCOHERENT
119	select IRQ_MIPS_CPU
120	select PINCTRL
121	select GPIOLIB
122	select COMMON_CLK
123	select GENERIC_IRQ_CHIP
124	select BUILTIN_DTB if MIPS_NO_APPENDED_DTB
125	select USE_OF
126	select CPU_SUPPORTS_CPUFREQ
127	select MIPS_EXTERNAL_TIMER
128
129menu "Machine selection"
130
131choice
132	prompt "System type"
133	default MIPS_GENERIC_KERNEL
134
135config MIPS_GENERIC_KERNEL
136	bool "Generic board-agnostic MIPS kernel"
137	select MIPS_GENERIC
138	select BOOT_RAW
139	select BUILTIN_DTB
140	select CEVT_R4K
141	select CLKSRC_MIPS_GIC
142	select COMMON_CLK
143	select CPU_MIPSR2_IRQ_EI
144	select CPU_MIPSR2_IRQ_VI
145	select CSRC_R4K
146	select DMA_NONCOHERENT
147	select HAVE_PCI
148	select IRQ_MIPS_CPU
149	select MIPS_AUTO_PFN_OFFSET
150	select MIPS_CPU_SCACHE
151	select MIPS_GIC
152	select MIPS_L1_CACHE_SHIFT_7
153	select NO_EXCEPT_FILL
154	select PCI_DRIVERS_GENERIC
155	select SMP_UP if SMP
156	select SWAP_IO_SPACE
157	select SYS_HAS_CPU_MIPS32_R1
158	select SYS_HAS_CPU_MIPS32_R2
159	select SYS_HAS_CPU_MIPS32_R5
160	select SYS_HAS_CPU_MIPS32_R6
161	select SYS_HAS_CPU_MIPS64_R1
162	select SYS_HAS_CPU_MIPS64_R2
163	select SYS_HAS_CPU_MIPS64_R5
164	select SYS_HAS_CPU_MIPS64_R6
165	select SYS_SUPPORTS_32BIT_KERNEL
166	select SYS_SUPPORTS_64BIT_KERNEL
167	select SYS_SUPPORTS_BIG_ENDIAN
168	select SYS_SUPPORTS_HIGHMEM
169	select SYS_SUPPORTS_LITTLE_ENDIAN
170	select SYS_SUPPORTS_MICROMIPS
171	select SYS_SUPPORTS_MIPS16
172	select SYS_SUPPORTS_MIPS_CPS
173	select SYS_SUPPORTS_MULTITHREADING
174	select SYS_SUPPORTS_RELOCATABLE
175	select SYS_SUPPORTS_SMARTMIPS
176	select SYS_SUPPORTS_ZBOOT
177	select UHI_BOOT
178	select USB_EHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN
179	select USB_EHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
180	select USB_OHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN
181	select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
182	select USB_UHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN
183	select USB_UHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
184	select USE_OF
185	help
186	  Select this to build a kernel which aims to support multiple boards,
187	  generally using a flattened device tree passed from the bootloader
188	  using the boot protocol defined in the UHI (Unified Hosting
189	  Interface) specification.
190
191config MIPS_ALCHEMY
192	bool "Alchemy processor based machines"
193	select PHYS_ADDR_T_64BIT
194	select CEVT_R4K
195	select CSRC_R4K
196	select IRQ_MIPS_CPU
197	select DMA_NONCOHERENT		# Au1000,1500,1100 aren't, rest is
198	select MIPS_FIXUP_BIGPHYS_ADDR if PCI
199	select SYS_HAS_CPU_MIPS32_R1
200	select SYS_SUPPORTS_32BIT_KERNEL
201	select SYS_SUPPORTS_APM_EMULATION
202	select GPIOLIB
203	select SYS_SUPPORTS_ZBOOT
204	select COMMON_CLK
205
206config ATH25
207	bool "Atheros AR231x/AR531x SoC support"
208	select CEVT_R4K
209	select CSRC_R4K
210	select DMA_NONCOHERENT
211	select IRQ_MIPS_CPU
212	select IRQ_DOMAIN
213	select SYS_HAS_CPU_MIPS32_R1
214	select SYS_SUPPORTS_BIG_ENDIAN
215	select SYS_SUPPORTS_32BIT_KERNEL
216	select SYS_HAS_EARLY_PRINTK
217	help
218	  Support for Atheros AR231x and Atheros AR531x based boards
219
220config ATH79
221	bool "Atheros AR71XX/AR724X/AR913X based boards"
222	select ARCH_HAS_RESET_CONTROLLER
223	select BOOT_RAW
224	select CEVT_R4K
225	select CSRC_R4K
226	select DMA_NONCOHERENT
227	select GPIOLIB
228	select PINCTRL
229	select COMMON_CLK
230	select IRQ_MIPS_CPU
231	select SYS_HAS_CPU_MIPS32_R2
232	select SYS_HAS_EARLY_PRINTK
233	select SYS_SUPPORTS_32BIT_KERNEL
234	select SYS_SUPPORTS_BIG_ENDIAN
235	select SYS_SUPPORTS_MIPS16
236	select SYS_SUPPORTS_ZBOOT_UART_PROM
237	select USE_OF
238	select USB_EHCI_ROOT_HUB_TT if USB_EHCI_HCD_PLATFORM
239	help
240	  Support for the Atheros AR71XX/AR724X/AR913X SoCs.
241
242config BMIPS_GENERIC
243	bool "Broadcom Generic BMIPS kernel"
244	select ARCH_HAS_RESET_CONTROLLER
245	select ARCH_HAS_SYNC_DMA_FOR_CPU_ALL
246	select BOOT_RAW
247	select NO_EXCEPT_FILL
248	select USE_OF
249	select CEVT_R4K
250	select CSRC_R4K
251	select SYNC_R4K
252	select COMMON_CLK
253	select BCM6345_L1_IRQ
254	select BCM7038_L1_IRQ
255	select BCM7120_L2_IRQ
256	select BRCMSTB_L2_IRQ
257	select IRQ_MIPS_CPU
258	select DMA_NONCOHERENT
259	select SYS_SUPPORTS_32BIT_KERNEL
260	select SYS_SUPPORTS_LITTLE_ENDIAN
261	select SYS_SUPPORTS_BIG_ENDIAN
262	select SYS_SUPPORTS_HIGHMEM
263	select SYS_HAS_CPU_BMIPS32_3300
264	select SYS_HAS_CPU_BMIPS4350
265	select SYS_HAS_CPU_BMIPS4380
266	select SYS_HAS_CPU_BMIPS5000
267	select SWAP_IO_SPACE
268	select USB_EHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN
269	select USB_EHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
270	select USB_OHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN
271	select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
272	select HARDIRQS_SW_RESEND
273	select HAVE_PCI
274	select PCI_DRIVERS_GENERIC
275	select FW_CFE
276	help
277	  Build a generic DT-based kernel image that boots on select
278	  BCM33xx cable modem chips, BCM63xx DSL chips, and BCM7xxx set-top
279	  box chips.  Note that CONFIG_CPU_BIG_ENDIAN/CONFIG_CPU_LITTLE_ENDIAN
280	  must be set appropriately for your board.
281
282config BCM47XX
283	bool "Broadcom BCM47XX based boards"
284	select BOOT_RAW
285	select CEVT_R4K
286	select CSRC_R4K
287	select DMA_NONCOHERENT
288	select HAVE_PCI
289	select IRQ_MIPS_CPU
290	select SYS_HAS_CPU_MIPS32_R1
291	select NO_EXCEPT_FILL
292	select SYS_SUPPORTS_32BIT_KERNEL
293	select SYS_SUPPORTS_LITTLE_ENDIAN
294	select SYS_SUPPORTS_MIPS16
295	select SYS_SUPPORTS_ZBOOT
296	select SYS_HAS_EARLY_PRINTK
297	select USE_GENERIC_EARLY_PRINTK_8250
298	select GPIOLIB
299	select LEDS_GPIO_REGISTER
300	select BCM47XX_NVRAM
301	select BCM47XX_SPROM
302	select BCM47XX_SSB if !BCM47XX_BCMA
303	help
304	  Support for BCM47XX based boards
305
306config BCM63XX
307	bool "Broadcom BCM63XX based boards"
308	select BOOT_RAW
309	select CEVT_R4K
310	select CSRC_R4K
311	select SYNC_R4K
312	select DMA_NONCOHERENT
313	select IRQ_MIPS_CPU
314	select SYS_SUPPORTS_32BIT_KERNEL
315	select SYS_SUPPORTS_BIG_ENDIAN
316	select SYS_HAS_EARLY_PRINTK
317	select SYS_HAS_CPU_BMIPS32_3300
318	select SYS_HAS_CPU_BMIPS4350
319	select SYS_HAS_CPU_BMIPS4380
320	select SWAP_IO_SPACE
321	select GPIOLIB
322	select MIPS_L1_CACHE_SHIFT_4
323	select HAVE_LEGACY_CLK
324	help
325	  Support for BCM63XX based boards
326
327config MIPS_COBALT
328	bool "Cobalt Server"
329	select CEVT_R4K
330	select CSRC_R4K
331	select CEVT_GT641XX
332	select DMA_NONCOHERENT
333	select FORCE_PCI
334	select I8253
335	select I8259
336	select IRQ_MIPS_CPU
337	select IRQ_GT641XX
338	select PCI_GT64XXX_PCI0
339	select SYS_HAS_CPU_NEVADA
340	select SYS_HAS_EARLY_PRINTK
341	select SYS_SUPPORTS_32BIT_KERNEL
342	select SYS_SUPPORTS_64BIT_KERNEL
343	select SYS_SUPPORTS_LITTLE_ENDIAN
344	select USE_GENERIC_EARLY_PRINTK_8250
345
346config MACH_DECSTATION
347	bool "DECstations"
348	select BOOT_ELF32
349	select CEVT_DS1287
350	select CEVT_R4K if CPU_R4X00
351	select CSRC_IOASIC
352	select CSRC_R4K if CPU_R4X00
353	select CPU_DADDI_WORKAROUNDS if 64BIT
354	select CPU_R4000_WORKAROUNDS if 64BIT
355	select CPU_R4400_WORKAROUNDS if 64BIT
356	select DMA_NONCOHERENT
357	select NO_IOPORT_MAP
358	select IRQ_MIPS_CPU
359	select SYS_HAS_CPU_R3000
360	select SYS_HAS_CPU_R4X00
361	select SYS_SUPPORTS_32BIT_KERNEL
362	select SYS_SUPPORTS_64BIT_KERNEL
363	select SYS_SUPPORTS_LITTLE_ENDIAN
364	select SYS_SUPPORTS_128HZ
365	select SYS_SUPPORTS_256HZ
366	select SYS_SUPPORTS_1024HZ
367	select MIPS_L1_CACHE_SHIFT_4
368	help
369	  This enables support for DEC's MIPS based workstations.  For details
370	  see the Linux/MIPS FAQ on <http://www.linux-mips.org/> and the
371	  DECstation porting pages on <http://decstation.unix-ag.org/>.
372
373	  If you have one of the following DECstation Models you definitely
374	  want to choose R4xx0 for the CPU Type:
375
376		DECstation 5000/50
377		DECstation 5000/150
378		DECstation 5000/260
379		DECsystem 5900/260
380
381	  otherwise choose R3000.
382
383config MACH_JAZZ
384	bool "Jazz family of machines"
385	select ARC_MEMORY
386	select ARC_PROMLIB
387	select ARCH_MIGHT_HAVE_PC_PARPORT
388	select ARCH_MIGHT_HAVE_PC_SERIO
389	select DMA_OPS
390	select FW_ARC
391	select FW_ARC32
392	select ARCH_MAY_HAVE_PC_FDC
393	select CEVT_R4K
394	select CSRC_R4K
395	select DEFAULT_SGI_PARTITION if CPU_BIG_ENDIAN
396	select GENERIC_ISA_DMA
397	select HAVE_PCSPKR_PLATFORM
398	select IRQ_MIPS_CPU
399	select I8253
400	select I8259
401	select ISA
402	select SYS_HAS_CPU_R4X00
403	select SYS_SUPPORTS_32BIT_KERNEL
404	select SYS_SUPPORTS_64BIT_KERNEL
405	select SYS_SUPPORTS_100HZ
406	select SYS_SUPPORTS_LITTLE_ENDIAN
407	help
408	  This a family of machines based on the MIPS R4030 chipset which was
409	  used by several vendors to build RISC/os and Windows NT workstations.
410	  Members include the Acer PICA, MIPS Magnum 4000, MIPS Millennium and
411	  Olivetti M700-10 workstations.
412
413config MACH_INGENIC_SOC
414	bool "Ingenic SoC based machines"
415	select MIPS_GENERIC
416	select MACH_INGENIC
417	select SYS_SUPPORTS_ZBOOT_UART16550
418	select CPU_SUPPORTS_CPUFREQ
419	select MIPS_EXTERNAL_TIMER
420
421config LANTIQ
422	bool "Lantiq based platforms"
423	select DMA_NONCOHERENT
424	select IRQ_MIPS_CPU
425	select CEVT_R4K
426	select CSRC_R4K
427	select NO_EXCEPT_FILL
428	select SYS_HAS_CPU_MIPS32_R1
429	select SYS_HAS_CPU_MIPS32_R2
430	select SYS_SUPPORTS_BIG_ENDIAN
431	select SYS_SUPPORTS_32BIT_KERNEL
432	select SYS_SUPPORTS_MIPS16
433	select SYS_SUPPORTS_MULTITHREADING
434	select SYS_SUPPORTS_VPE_LOADER
435	select SYS_HAS_EARLY_PRINTK
436	select GPIOLIB
437	select SWAP_IO_SPACE
438	select BOOT_RAW
439	select HAVE_LEGACY_CLK
440	select USE_OF
441	select PINCTRL
442	select PINCTRL_LANTIQ
443	select ARCH_HAS_RESET_CONTROLLER
444	select RESET_CONTROLLER
445
446config MACH_LOONGSON32
447	bool "Loongson 32-bit family of machines"
448	select SYS_SUPPORTS_ZBOOT
449	help
450	  This enables support for the Loongson-1 family of machines.
451
452	  Loongson-1 is a family of 32-bit MIPS-compatible SoCs developed by
453	  the Institute of Computing Technology (ICT), Chinese Academy of
454	  Sciences (CAS).
455
456config MACH_LOONGSON2EF
457	bool "Loongson-2E/F family of machines"
458	select SYS_SUPPORTS_ZBOOT
459	help
460	  This enables the support of early Loongson-2E/F family of machines.
461
462config MACH_LOONGSON64
463	bool "Loongson 64-bit family of machines"
464	select ARCH_DMA_DEFAULT_COHERENT
465	select ARCH_SPARSEMEM_ENABLE
466	select ARCH_MIGHT_HAVE_PC_PARPORT
467	select ARCH_MIGHT_HAVE_PC_SERIO
468	select GENERIC_ISA_DMA_SUPPORT_BROKEN
469	select BOOT_ELF32
470	select BOARD_SCACHE
471	select CSRC_R4K
472	select CEVT_R4K
473	select FORCE_PCI
474	select ISA
475	select I8259
476	select IRQ_MIPS_CPU
477	select NO_EXCEPT_FILL
478	select NR_CPUS_DEFAULT_64
479	select USE_GENERIC_EARLY_PRINTK_8250
480	select PCI_DRIVERS_GENERIC
481	select SYS_HAS_CPU_LOONGSON64
482	select SYS_HAS_EARLY_PRINTK
483	select SYS_SUPPORTS_SMP
484	select SYS_SUPPORTS_HOTPLUG_CPU
485	select SYS_SUPPORTS_NUMA
486	select SYS_SUPPORTS_64BIT_KERNEL
487	select SYS_SUPPORTS_HIGHMEM
488	select SYS_SUPPORTS_LITTLE_ENDIAN
489	select SYS_SUPPORTS_ZBOOT
490	select SYS_SUPPORTS_RELOCATABLE
491	select ZONE_DMA32
492	select COMMON_CLK
493	select USE_OF
494	select BUILTIN_DTB
495	select PCI_HOST_GENERIC
496	select HAVE_ARCH_NODEDATA_EXTENSION if NUMA
497	help
498	  This enables the support of Loongson-2/3 family of machines.
499
500	  Loongson-2 and Loongson-3 are 64-bit general-purpose processors with
501	  GS264/GS464/GS464E/GS464V microarchitecture (except old Loongson-2E
502	  and Loongson-2F which will be removed), developed by the Institute
503	  of Computing Technology (ICT), Chinese Academy of Sciences (CAS).
504
505config MIPS_MALTA
506	bool "MIPS Malta board"
507	select ARCH_MAY_HAVE_PC_FDC
508	select ARCH_MIGHT_HAVE_PC_PARPORT
509	select ARCH_MIGHT_HAVE_PC_SERIO
510	select BOOT_ELF32
511	select BOOT_RAW
512	select BUILTIN_DTB
513	select CEVT_R4K
514	select CLKSRC_MIPS_GIC
515	select COMMON_CLK
516	select CSRC_R4K
517	select DMA_NONCOHERENT
518	select GENERIC_ISA_DMA
519	select HAVE_PCSPKR_PLATFORM
520	select HAVE_PCI
521	select I8253
522	select I8259
523	select IRQ_MIPS_CPU
524	select MIPS_BONITO64
525	select MIPS_CPU_SCACHE
526	select MIPS_GIC
527	select MIPS_L1_CACHE_SHIFT_6
528	select MIPS_MSC
529	select PCI_GT64XXX_PCI0
530	select SMP_UP if SMP
531	select SWAP_IO_SPACE
532	select SYS_HAS_CPU_MIPS32_R1
533	select SYS_HAS_CPU_MIPS32_R2
534	select SYS_HAS_CPU_MIPS32_R3_5
535	select SYS_HAS_CPU_MIPS32_R5
536	select SYS_HAS_CPU_MIPS32_R6
537	select SYS_HAS_CPU_MIPS64_R1
538	select SYS_HAS_CPU_MIPS64_R2
539	select SYS_HAS_CPU_MIPS64_R6
540	select SYS_HAS_CPU_NEVADA
541	select SYS_HAS_CPU_RM7000
542	select SYS_SUPPORTS_32BIT_KERNEL
543	select SYS_SUPPORTS_64BIT_KERNEL
544	select SYS_SUPPORTS_BIG_ENDIAN
545	select SYS_SUPPORTS_HIGHMEM
546	select SYS_SUPPORTS_LITTLE_ENDIAN
547	select SYS_SUPPORTS_MICROMIPS
548	select SYS_SUPPORTS_MIPS16
549	select SYS_SUPPORTS_MIPS_CPS
550	select SYS_SUPPORTS_MULTITHREADING
551	select SYS_SUPPORTS_RELOCATABLE
552	select SYS_SUPPORTS_SMARTMIPS
553	select SYS_SUPPORTS_VPE_LOADER
554	select SYS_SUPPORTS_ZBOOT
555	select USE_OF
556	select WAR_ICACHE_REFILLS
557	select ZONE_DMA32 if 64BIT
558	help
559	  This enables support for the MIPS Technologies Malta evaluation
560	  board.
561
562config MACH_PIC32
563	bool "Microchip PIC32 Family"
564	help
565	  This enables support for the Microchip PIC32 family of platforms.
566
567	  Microchip PIC32 is a family of general-purpose 32 bit MIPS core
568	  microcontrollers.
569
570config MACH_NINTENDO64
571	bool "Nintendo 64 console"
572	select CEVT_R4K
573	select CSRC_R4K
574	select SYS_HAS_CPU_R4300
575	select SYS_SUPPORTS_BIG_ENDIAN
576	select SYS_SUPPORTS_ZBOOT
577	select SYS_SUPPORTS_32BIT_KERNEL
578	select SYS_SUPPORTS_64BIT_KERNEL
579	select DMA_NONCOHERENT
580	select IRQ_MIPS_CPU
581
582config RALINK
583	bool "Ralink based machines"
584	select CEVT_R4K
585	select COMMON_CLK
586	select CSRC_R4K
587	select BOOT_RAW
588	select DMA_NONCOHERENT
589	select IRQ_MIPS_CPU
590	select USE_OF
591	select SYS_HAS_CPU_MIPS32_R2
592	select SYS_SUPPORTS_32BIT_KERNEL
593	select SYS_SUPPORTS_LITTLE_ENDIAN
594	select SYS_SUPPORTS_MIPS16
595	select SYS_SUPPORTS_ZBOOT
596	select SYS_HAS_EARLY_PRINTK
597	select ARCH_HAS_RESET_CONTROLLER
598	select RESET_CONTROLLER
599
600config MACH_REALTEK_RTL
601	bool "Realtek RTL838x/RTL839x based machines"
602	select MIPS_GENERIC
603	select DMA_NONCOHERENT
604	select IRQ_MIPS_CPU
605	select CSRC_R4K
606	select CEVT_R4K
607	select SYS_HAS_CPU_MIPS32_R1
608	select SYS_HAS_CPU_MIPS32_R2
609	select SYS_SUPPORTS_BIG_ENDIAN
610	select SYS_SUPPORTS_32BIT_KERNEL
611	select SYS_SUPPORTS_MIPS16
612	select SYS_SUPPORTS_MULTITHREADING
613	select SYS_SUPPORTS_VPE_LOADER
614	select BOOT_RAW
615	select PINCTRL
616	select USE_OF
617
618config SGI_IP22
619	bool "SGI IP22 (Indy/Indigo2)"
620	select ARC_MEMORY
621	select ARC_PROMLIB
622	select FW_ARC
623	select FW_ARC32
624	select ARCH_MIGHT_HAVE_PC_SERIO
625	select BOOT_ELF32
626	select CEVT_R4K
627	select CSRC_R4K
628	select DEFAULT_SGI_PARTITION
629	select DMA_NONCOHERENT
630	select HAVE_EISA
631	select I8253
632	select I8259
633	select IP22_CPU_SCACHE
634	select IRQ_MIPS_CPU
635	select GENERIC_ISA_DMA_SUPPORT_BROKEN
636	select SGI_HAS_I8042
637	select SGI_HAS_INDYDOG
638	select SGI_HAS_HAL2
639	select SGI_HAS_SEEQ
640	select SGI_HAS_WD93
641	select SGI_HAS_ZILOG
642	select SWAP_IO_SPACE
643	select SYS_HAS_CPU_R4X00
644	select SYS_HAS_CPU_R5000
645	select SYS_HAS_EARLY_PRINTK
646	select SYS_SUPPORTS_32BIT_KERNEL
647	select SYS_SUPPORTS_64BIT_KERNEL
648	select SYS_SUPPORTS_BIG_ENDIAN
649	select WAR_R4600_V1_INDEX_ICACHEOP
650	select WAR_R4600_V1_HIT_CACHEOP
651	select WAR_R4600_V2_HIT_CACHEOP
652	select MIPS_L1_CACHE_SHIFT_7
653	help
654	  This are the SGI Indy, Challenge S and Indigo2, as well as certain
655	  OEM variants like the Tandem CMN B006S. To compile a Linux kernel
656	  that runs on these, say Y here.
657
658config SGI_IP27
659	bool "SGI IP27 (Origin200/2000)"
660	select ARCH_HAS_PHYS_TO_DMA
661	select ARCH_SPARSEMEM_ENABLE
662	select FW_ARC
663	select FW_ARC64
664	select ARC_CMDLINE_ONLY
665	select BOOT_ELF64
666	select DEFAULT_SGI_PARTITION
667	select FORCE_PCI
668	select SYS_HAS_EARLY_PRINTK
669	select HAVE_PCI
670	select IRQ_MIPS_CPU
671	select IRQ_DOMAIN_HIERARCHY
672	select NR_CPUS_DEFAULT_64
673	select PCI_DRIVERS_GENERIC
674	select PCI_XTALK_BRIDGE
675	select SYS_HAS_CPU_R10000
676	select SYS_SUPPORTS_64BIT_KERNEL
677	select SYS_SUPPORTS_BIG_ENDIAN
678	select SYS_SUPPORTS_NUMA
679	select SYS_SUPPORTS_SMP
680	select WAR_R10000_LLSC
681	select MIPS_L1_CACHE_SHIFT_7
682	select NUMA
683	select HAVE_ARCH_NODEDATA_EXTENSION
684	help
685	  This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
686	  workstations.  To compile a Linux kernel that runs on these, say Y
687	  here.
688
689config SGI_IP28
690	bool "SGI IP28 (Indigo2 R10k)"
691	select ARC_MEMORY
692	select ARC_PROMLIB
693	select FW_ARC
694	select FW_ARC64
695	select ARCH_MIGHT_HAVE_PC_SERIO
696	select BOOT_ELF64
697	select CEVT_R4K
698	select CSRC_R4K
699	select DEFAULT_SGI_PARTITION
700	select DMA_NONCOHERENT
701	select GENERIC_ISA_DMA_SUPPORT_BROKEN
702	select IRQ_MIPS_CPU
703	select HAVE_EISA
704	select I8253
705	select I8259
706	select SGI_HAS_I8042
707	select SGI_HAS_INDYDOG
708	select SGI_HAS_HAL2
709	select SGI_HAS_SEEQ
710	select SGI_HAS_WD93
711	select SGI_HAS_ZILOG
712	select SWAP_IO_SPACE
713	select SYS_HAS_CPU_R10000
714	select SYS_HAS_EARLY_PRINTK
715	select SYS_SUPPORTS_64BIT_KERNEL
716	select SYS_SUPPORTS_BIG_ENDIAN
717	select WAR_R10000_LLSC
718	select MIPS_L1_CACHE_SHIFT_7
719	help
720	  This is the SGI Indigo2 with R10000 processor.  To compile a Linux
721	  kernel that runs on these, say Y here.
722
723config SGI_IP30
724	bool "SGI IP30 (Octane/Octane2)"
725	select ARCH_HAS_PHYS_TO_DMA
726	select FW_ARC
727	select FW_ARC64
728	select BOOT_ELF64
729	select CEVT_R4K
730	select CSRC_R4K
731	select FORCE_PCI
732	select SYNC_R4K if SMP
733	select ZONE_DMA32
734	select HAVE_PCI
735	select IRQ_MIPS_CPU
736	select IRQ_DOMAIN_HIERARCHY
737	select PCI_DRIVERS_GENERIC
738	select PCI_XTALK_BRIDGE
739	select SYS_HAS_EARLY_PRINTK
740	select SYS_HAS_CPU_R10000
741	select SYS_SUPPORTS_64BIT_KERNEL
742	select SYS_SUPPORTS_BIG_ENDIAN
743	select SYS_SUPPORTS_SMP
744	select WAR_R10000_LLSC
745	select MIPS_L1_CACHE_SHIFT_7
746	select ARC_MEMORY
747	help
748	  These are the SGI Octane and Octane2 graphics workstations.  To
749	  compile a Linux kernel that runs on these, say Y here.
750
751config SGI_IP32
752	bool "SGI IP32 (O2)"
753	select ARC_MEMORY
754	select ARC_PROMLIB
755	select ARCH_HAS_PHYS_TO_DMA
756	select FW_ARC
757	select FW_ARC32
758	select BOOT_ELF32
759	select CEVT_R4K
760	select CSRC_R4K
761	select DMA_NONCOHERENT
762	select HAVE_PCI
763	select IRQ_MIPS_CPU
764	select R5000_CPU_SCACHE
765	select RM7000_CPU_SCACHE
766	select SYS_HAS_CPU_R5000
767	select SYS_HAS_CPU_R10000 if BROKEN
768	select SYS_HAS_CPU_RM7000
769	select SYS_HAS_CPU_NEVADA
770	select SYS_SUPPORTS_64BIT_KERNEL
771	select SYS_SUPPORTS_BIG_ENDIAN
772	select WAR_ICACHE_REFILLS
773	help
774	  If you want this kernel to run on SGI O2 workstation, say Y here.
775
776config SIBYTE_CRHONE
777	bool "Sibyte BCM91125C-CRhone"
778	select BOOT_ELF32
779	select SIBYTE_BCM1125
780	select SWAP_IO_SPACE
781	select SYS_HAS_CPU_SB1
782	select SYS_SUPPORTS_BIG_ENDIAN
783	select SYS_SUPPORTS_HIGHMEM
784	select SYS_SUPPORTS_LITTLE_ENDIAN
785
786config SIBYTE_RHONE
787	bool "Sibyte BCM91125E-Rhone"
788	select BOOT_ELF32
789	select SIBYTE_SB1250
790	select SWAP_IO_SPACE
791	select SYS_HAS_CPU_SB1
792	select SYS_SUPPORTS_BIG_ENDIAN
793	select SYS_SUPPORTS_LITTLE_ENDIAN
794
795config SIBYTE_SWARM
796	bool "Sibyte BCM91250A-SWARM"
797	select BOOT_ELF32
798	select HAVE_PATA_PLATFORM
799	select SIBYTE_SB1250
800	select SWAP_IO_SPACE
801	select SYS_HAS_CPU_SB1
802	select SYS_SUPPORTS_BIG_ENDIAN
803	select SYS_SUPPORTS_HIGHMEM
804	select SYS_SUPPORTS_LITTLE_ENDIAN
805	select ZONE_DMA32 if 64BIT
806	select SWIOTLB if ARCH_DMA_ADDR_T_64BIT && PCI
807
808config SIBYTE_LITTLESUR
809	bool "Sibyte BCM91250C2-LittleSur"
810	select BOOT_ELF32
811	select HAVE_PATA_PLATFORM
812	select SIBYTE_SB1250
813	select SWAP_IO_SPACE
814	select SYS_HAS_CPU_SB1
815	select SYS_SUPPORTS_BIG_ENDIAN
816	select SYS_SUPPORTS_HIGHMEM
817	select SYS_SUPPORTS_LITTLE_ENDIAN
818	select ZONE_DMA32 if 64BIT
819
820config SIBYTE_SENTOSA
821	bool "Sibyte BCM91250E-Sentosa"
822	select BOOT_ELF32
823	select SIBYTE_SB1250
824	select SWAP_IO_SPACE
825	select SYS_HAS_CPU_SB1
826	select SYS_SUPPORTS_BIG_ENDIAN
827	select SYS_SUPPORTS_LITTLE_ENDIAN
828	select SWIOTLB if ARCH_DMA_ADDR_T_64BIT && PCI
829
830config SIBYTE_BIGSUR
831	bool "Sibyte BCM91480B-BigSur"
832	select BOOT_ELF32
833	select NR_CPUS_DEFAULT_4
834	select SIBYTE_BCM1x80
835	select SWAP_IO_SPACE
836	select SYS_HAS_CPU_SB1
837	select SYS_SUPPORTS_BIG_ENDIAN
838	select SYS_SUPPORTS_HIGHMEM
839	select SYS_SUPPORTS_LITTLE_ENDIAN
840	select ZONE_DMA32 if 64BIT
841	select SWIOTLB if ARCH_DMA_ADDR_T_64BIT && PCI
842
843config SNI_RM
844	bool "SNI RM200/300/400"
845	select ARC_MEMORY
846	select ARC_PROMLIB
847	select FW_ARC if CPU_LITTLE_ENDIAN
848	select FW_ARC32 if CPU_LITTLE_ENDIAN
849	select FW_SNIPROM if CPU_BIG_ENDIAN
850	select ARCH_MAY_HAVE_PC_FDC
851	select ARCH_MIGHT_HAVE_PC_PARPORT
852	select ARCH_MIGHT_HAVE_PC_SERIO
853	select BOOT_ELF32
854	select CEVT_R4K
855	select CSRC_R4K
856	select DEFAULT_SGI_PARTITION if CPU_BIG_ENDIAN
857	select DMA_NONCOHERENT
858	select GENERIC_ISA_DMA
859	select HAVE_EISA
860	select HAVE_PCSPKR_PLATFORM
861	select HAVE_PCI
862	select IRQ_MIPS_CPU
863	select I8253
864	select I8259
865	select ISA
866	select MIPS_L1_CACHE_SHIFT_6
867	select SWAP_IO_SPACE if CPU_BIG_ENDIAN
868	select SYS_HAS_CPU_R4X00
869	select SYS_HAS_CPU_R5000
870	select SYS_HAS_CPU_R10000
871	select R5000_CPU_SCACHE
872	select SYS_HAS_EARLY_PRINTK
873	select SYS_SUPPORTS_32BIT_KERNEL
874	select SYS_SUPPORTS_64BIT_KERNEL
875	select SYS_SUPPORTS_BIG_ENDIAN
876	select SYS_SUPPORTS_HIGHMEM
877	select SYS_SUPPORTS_LITTLE_ENDIAN
878	select WAR_R4600_V2_HIT_CACHEOP
879	help
880	  The SNI RM200/300/400 are MIPS-based machines manufactured by
881	  Siemens Nixdorf Informationssysteme (SNI), parent company of Pyramid
882	  Technology and now in turn merged with Fujitsu.  Say Y here to
883	  support this machine type.
884
885config MACH_TX49XX
886	bool "Toshiba TX49 series based machines"
887	select WAR_TX49XX_ICACHE_INDEX_INV
888
889config MIKROTIK_RB532
890	bool "Mikrotik RB532 boards"
891	select CEVT_R4K
892	select CSRC_R4K
893	select DMA_NONCOHERENT
894	select HAVE_PCI
895	select IRQ_MIPS_CPU
896	select SYS_HAS_CPU_MIPS32_R1
897	select SYS_SUPPORTS_32BIT_KERNEL
898	select SYS_SUPPORTS_LITTLE_ENDIAN
899	select SWAP_IO_SPACE
900	select BOOT_RAW
901	select GPIOLIB
902	select MIPS_L1_CACHE_SHIFT_4
903	help
904	  Support the Mikrotik(tm) RouterBoard 532 series,
905	  based on the IDT RC32434 SoC.
906
907config CAVIUM_OCTEON_SOC
908	bool "Cavium Networks Octeon SoC based boards"
909	select CEVT_R4K
910	select ARCH_HAS_PHYS_TO_DMA
911	select HAVE_RAPIDIO
912	select PHYS_ADDR_T_64BIT
913	select SYS_SUPPORTS_64BIT_KERNEL
914	select SYS_SUPPORTS_BIG_ENDIAN
915	select EDAC_SUPPORT
916	select EDAC_ATOMIC_SCRUB
917	select SYS_SUPPORTS_LITTLE_ENDIAN
918	select SYS_SUPPORTS_HOTPLUG_CPU if CPU_BIG_ENDIAN
919	select SYS_HAS_EARLY_PRINTK
920	select SYS_HAS_CPU_CAVIUM_OCTEON
921	select HAVE_PCI
922	select HAVE_PLAT_DELAY
923	select HAVE_PLAT_FW_INIT_CMDLINE
924	select HAVE_PLAT_MEMCPY
925	select ZONE_DMA32
926	select GPIOLIB
927	select USE_OF
928	select ARCH_SPARSEMEM_ENABLE
929	select SYS_SUPPORTS_SMP
930	select NR_CPUS_DEFAULT_64
931	select MIPS_NR_CPU_NR_MAP_1024
932	select BUILTIN_DTB
933	select MTD
934	select MTD_COMPLEX_MAPPINGS
935	select SWIOTLB
936	select SYS_SUPPORTS_RELOCATABLE
937	help
938	  This option supports all of the Octeon reference boards from Cavium
939	  Networks. It builds a kernel that dynamically determines the Octeon
940	  CPU type and supports all known board reference implementations.
941	  Some of the supported boards are:
942		EBT3000
943		EBH3000
944		EBH3100
945		Thunder
946		Kodama
947		Hikari
948	  Say Y here for most Octeon reference boards.
949
950endchoice
951
952source "arch/mips/alchemy/Kconfig"
953source "arch/mips/ath25/Kconfig"
954source "arch/mips/ath79/Kconfig"
955source "arch/mips/bcm47xx/Kconfig"
956source "arch/mips/bcm63xx/Kconfig"
957source "arch/mips/bmips/Kconfig"
958source "arch/mips/generic/Kconfig"
959source "arch/mips/ingenic/Kconfig"
960source "arch/mips/jazz/Kconfig"
961source "arch/mips/lantiq/Kconfig"
962source "arch/mips/pic32/Kconfig"
963source "arch/mips/ralink/Kconfig"
964source "arch/mips/sgi-ip27/Kconfig"
965source "arch/mips/sibyte/Kconfig"
966source "arch/mips/txx9/Kconfig"
967source "arch/mips/cavium-octeon/Kconfig"
968source "arch/mips/loongson2ef/Kconfig"
969source "arch/mips/loongson32/Kconfig"
970source "arch/mips/loongson64/Kconfig"
971
972endmenu
973
974config GENERIC_HWEIGHT
975	bool
976	default y
977
978config GENERIC_CALIBRATE_DELAY
979	bool
980	default y
981
982config SCHED_OMIT_FRAME_POINTER
983	bool
984	default y
985
986#
987# Select some configuration options automatically based on user selections.
988#
989config FW_ARC
990	bool
991
992config ARCH_MAY_HAVE_PC_FDC
993	bool
994
995config BOOT_RAW
996	bool
997
998config CEVT_BCM1480
999	bool
1000
1001config CEVT_DS1287
1002	bool
1003
1004config CEVT_GT641XX
1005	bool
1006
1007config CEVT_R4K
1008	bool
1009
1010config CEVT_SB1250
1011	bool
1012
1013config CEVT_TXX9
1014	bool
1015
1016config CSRC_BCM1480
1017	bool
1018
1019config CSRC_IOASIC
1020	bool
1021
1022config CSRC_R4K
1023	select CLOCKSOURCE_WATCHDOG if CPU_FREQ
1024	bool
1025
1026config CSRC_SB1250
1027	bool
1028
1029config MIPS_CLOCK_VSYSCALL
1030	def_bool CSRC_R4K || CLKSRC_MIPS_GIC
1031
1032config GPIO_TXX9
1033	select GPIOLIB
1034	bool
1035
1036config FW_CFE
1037	bool
1038
1039config ARCH_SUPPORTS_UPROBES
1040	def_bool y
1041
1042config DMA_NONCOHERENT
1043	bool
1044	#
1045	# MIPS allows mixing "slightly different" Cacheability and Coherency
1046	# Attribute bits.  It is believed that the uncached access through
1047	# KSEG1 and the implementation specific "uncached accelerated" used
1048	# by pgprot_writcombine can be mixed, and the latter sometimes provides
1049	# significant advantages.
1050	#
1051	select ARCH_HAS_SETUP_DMA_OPS
1052	select ARCH_HAS_DMA_WRITE_COMBINE
1053	select ARCH_HAS_DMA_PREP_COHERENT
1054	select ARCH_HAS_SYNC_DMA_FOR_CPU
1055	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
1056	select ARCH_HAS_DMA_SET_UNCACHED
1057	select DMA_NONCOHERENT_MMAP
1058	select NEED_DMA_MAP_STATE
1059
1060config SYS_HAS_EARLY_PRINTK
1061	bool
1062
1063config SYS_SUPPORTS_HOTPLUG_CPU
1064	bool
1065
1066config MIPS_BONITO64
1067	bool
1068
1069config MIPS_MSC
1070	bool
1071
1072config SYNC_R4K
1073	bool
1074
1075config NO_IOPORT_MAP
1076	def_bool n
1077
1078config GENERIC_CSUM
1079	def_bool CPU_NO_LOAD_STORE_LR
1080
1081config GENERIC_ISA_DMA
1082	bool
1083	select ZONE_DMA if GENERIC_ISA_DMA_SUPPORT_BROKEN=n
1084	select ISA_DMA_API
1085
1086config GENERIC_ISA_DMA_SUPPORT_BROKEN
1087	bool
1088	select GENERIC_ISA_DMA
1089
1090config HAVE_PLAT_DELAY
1091	bool
1092
1093config HAVE_PLAT_FW_INIT_CMDLINE
1094	bool
1095
1096config HAVE_PLAT_MEMCPY
1097	bool
1098
1099config ISA_DMA_API
1100	bool
1101
1102config SYS_SUPPORTS_RELOCATABLE
1103	bool
1104	help
1105	  Selected if the platform supports relocating the kernel.
1106	  The platform must provide plat_get_fdt() if it selects CONFIG_USE_OF
1107	  to allow access to command line and entropy sources.
1108
1109#
1110# Endianness selection.  Sufficiently obscure so many users don't know what to
1111# answer,so we try hard to limit the available choices.  Also the use of a
1112# choice statement should be more obvious to the user.
1113#
1114choice
1115	prompt "Endianness selection"
1116	help
1117	  Some MIPS machines can be configured for either little or big endian
1118	  byte order. These modes require different kernels and a different
1119	  Linux distribution.  In general there is one preferred byteorder for a
1120	  particular system but some systems are just as commonly used in the
1121	  one or the other endianness.
1122
1123config CPU_BIG_ENDIAN
1124	bool "Big endian"
1125	depends on SYS_SUPPORTS_BIG_ENDIAN
1126
1127config CPU_LITTLE_ENDIAN
1128	bool "Little endian"
1129	depends on SYS_SUPPORTS_LITTLE_ENDIAN
1130
1131endchoice
1132
1133config EXPORT_UASM
1134	bool
1135
1136config SYS_SUPPORTS_APM_EMULATION
1137	bool
1138
1139config SYS_SUPPORTS_BIG_ENDIAN
1140	bool
1141
1142config SYS_SUPPORTS_LITTLE_ENDIAN
1143	bool
1144
1145config MIPS_HUGE_TLB_SUPPORT
1146	def_bool HUGETLB_PAGE || TRANSPARENT_HUGEPAGE
1147
1148config IRQ_TXX9
1149	bool
1150
1151config IRQ_GT641XX
1152	bool
1153
1154config PCI_GT64XXX_PCI0
1155	bool
1156
1157config PCI_XTALK_BRIDGE
1158	bool
1159
1160config NO_EXCEPT_FILL
1161	bool
1162
1163config MIPS_SPRAM
1164	bool
1165
1166config SWAP_IO_SPACE
1167	bool
1168
1169config SGI_HAS_INDYDOG
1170	bool
1171
1172config SGI_HAS_HAL2
1173	bool
1174
1175config SGI_HAS_SEEQ
1176	bool
1177
1178config SGI_HAS_WD93
1179	bool
1180
1181config SGI_HAS_ZILOG
1182	bool
1183
1184config SGI_HAS_I8042
1185	bool
1186
1187config DEFAULT_SGI_PARTITION
1188	bool
1189
1190config FW_ARC32
1191	bool
1192
1193config FW_SNIPROM
1194	bool
1195
1196config BOOT_ELF32
1197	bool
1198
1199config MIPS_L1_CACHE_SHIFT_4
1200	bool
1201
1202config MIPS_L1_CACHE_SHIFT_5
1203	bool
1204
1205config MIPS_L1_CACHE_SHIFT_6
1206	bool
1207
1208config MIPS_L1_CACHE_SHIFT_7
1209	bool
1210
1211config MIPS_L1_CACHE_SHIFT
1212	int
1213	default "7" if MIPS_L1_CACHE_SHIFT_7
1214	default "6" if MIPS_L1_CACHE_SHIFT_6
1215	default "5" if MIPS_L1_CACHE_SHIFT_5
1216	default "4" if MIPS_L1_CACHE_SHIFT_4
1217	default "5"
1218
1219config ARC_CMDLINE_ONLY
1220	bool
1221
1222config ARC_CONSOLE
1223	bool "ARC console support"
1224	depends on SGI_IP22 || SGI_IP28 || (SNI_RM && CPU_LITTLE_ENDIAN)
1225
1226config ARC_MEMORY
1227	bool
1228
1229config ARC_PROMLIB
1230	bool
1231
1232config FW_ARC64
1233	bool
1234
1235config BOOT_ELF64
1236	bool
1237
1238menu "CPU selection"
1239
1240choice
1241	prompt "CPU type"
1242	default CPU_R4X00
1243
1244config CPU_LOONGSON64
1245	bool "Loongson 64-bit CPU"
1246	depends on SYS_HAS_CPU_LOONGSON64
1247	select ARCH_HAS_PHYS_TO_DMA
1248	select CPU_MIPSR2
1249	select CPU_HAS_PREFETCH
1250	select CPU_SUPPORTS_64BIT_KERNEL
1251	select CPU_SUPPORTS_HIGHMEM
1252	select CPU_SUPPORTS_HUGEPAGES
1253	select CPU_SUPPORTS_MSA
1254	select CPU_DIEI_BROKEN if !LOONGSON3_ENHANCEMENT
1255	select CPU_MIPSR2_IRQ_VI
1256	select DMA_NONCOHERENT
1257	select WEAK_ORDERING
1258	select WEAK_REORDERING_BEYOND_LLSC
1259	select MIPS_ASID_BITS_VARIABLE
1260	select MIPS_PGD_C0_CONTEXT
1261	select MIPS_L1_CACHE_SHIFT_6
1262	select MIPS_FP_SUPPORT
1263	select GPIOLIB
1264	select SWIOTLB
1265	select HAVE_KVM
1266	help
1267	  The Loongson GSx64(GS264/GS464/GS464E/GS464V) series of processor
1268	  cores implements the MIPS64R2 instruction set with many extensions,
1269	  including most 64-bit Loongson-2 (2H, 2K) and Loongson-3 (3A1000,
1270	  3B1000, 3B1500, 3A2000, 3A3000 and 3A4000) processors. However, old
1271	  Loongson-2E/2F is not covered here and will be removed in future.
1272
1273config LOONGSON3_ENHANCEMENT
1274	bool "New Loongson-3 CPU Enhancements"
1275	default n
1276	depends on CPU_LOONGSON64
1277	help
1278	  New Loongson-3 cores (since Loongson-3A R2, as opposed to Loongson-3A
1279	  R1, Loongson-3B R1 and Loongson-3B R2) has many enhancements, such as
1280	  FTLB, L1-VCache, EI/DI/Wait/Prefetch instruction, DSP/DSPr2 ASE, User
1281	  Local register, Read-Inhibit/Execute-Inhibit, SFB (Store Fill Buffer),
1282	  Fast TLB refill support, etc.
1283
1284	  This option enable those enhancements which are not probed at run
1285	  time. If you want a generic kernel to run on all Loongson 3 machines,
1286	  please say 'N' here. If you want a high-performance kernel to run on
1287	  new Loongson-3 machines only, please say 'Y' here.
1288
1289config CPU_LOONGSON3_WORKAROUNDS
1290	bool "Loongson-3 LLSC Workarounds"
1291	default y if SMP
1292	depends on CPU_LOONGSON64
1293	help
1294	  Loongson-3 processors have the llsc issues which require workarounds.
1295	  Without workarounds the system may hang unexpectedly.
1296
1297	  Say Y, unless you know what you are doing.
1298
1299config CPU_LOONGSON3_CPUCFG_EMULATION
1300	bool "Emulate the CPUCFG instruction on older Loongson cores"
1301	default y
1302	depends on CPU_LOONGSON64
1303	help
1304	  Loongson-3A R4 and newer have the CPUCFG instruction available for
1305	  userland to query CPU capabilities, much like CPUID on x86. This
1306	  option provides emulation of the instruction on older Loongson
1307	  cores, back to Loongson-3A1000.
1308
1309	  If unsure, please say Y.
1310
1311config CPU_LOONGSON2E
1312	bool "Loongson 2E"
1313	depends on SYS_HAS_CPU_LOONGSON2E
1314	select CPU_LOONGSON2EF
1315	help
1316	  The Loongson 2E processor implements the MIPS III instruction set
1317	  with many extensions.
1318
1319	  It has an internal FPGA northbridge, which is compatible to
1320	  bonito64.
1321
1322config CPU_LOONGSON2F
1323	bool "Loongson 2F"
1324	depends on SYS_HAS_CPU_LOONGSON2F
1325	select CPU_LOONGSON2EF
1326	help
1327	  The Loongson 2F processor implements the MIPS III instruction set
1328	  with many extensions.
1329
1330	  Loongson2F have built-in DDR2 and PCIX controller. The PCIX controller
1331	  have a similar programming interface with FPGA northbridge used in
1332	  Loongson2E.
1333
1334config CPU_LOONGSON1B
1335	bool "Loongson 1B"
1336	depends on SYS_HAS_CPU_LOONGSON1B
1337	select CPU_LOONGSON32
1338	select LEDS_GPIO_REGISTER
1339	help
1340	  The Loongson 1B is a 32-bit SoC, which implements the MIPS32
1341	  Release 1 instruction set and part of the MIPS32 Release 2
1342	  instruction set.
1343
1344config CPU_LOONGSON1C
1345	bool "Loongson 1C"
1346	depends on SYS_HAS_CPU_LOONGSON1C
1347	select CPU_LOONGSON32
1348	select LEDS_GPIO_REGISTER
1349	help
1350	  The Loongson 1C is a 32-bit SoC, which implements the MIPS32
1351	  Release 1 instruction set and part of the MIPS32 Release 2
1352	  instruction set.
1353
1354config CPU_MIPS32_R1
1355	bool "MIPS32 Release 1"
1356	depends on SYS_HAS_CPU_MIPS32_R1
1357	select CPU_HAS_PREFETCH
1358	select CPU_SUPPORTS_32BIT_KERNEL
1359	select CPU_SUPPORTS_HIGHMEM
1360	help
1361	  Choose this option to build a kernel for release 1 or later of the
1362	  MIPS32 architecture.  Most modern embedded systems with a 32-bit
1363	  MIPS processor are based on a MIPS32 processor.  If you know the
1364	  specific type of processor in your system, choose those that one
1365	  otherwise CPU_MIPS32_R1 is a safe bet for any MIPS32 system.
1366	  Release 2 of the MIPS32 architecture is available since several
1367	  years so chances are you even have a MIPS32 Release 2 processor
1368	  in which case you should choose CPU_MIPS32_R2 instead for better
1369	  performance.
1370
1371config CPU_MIPS32_R2
1372	bool "MIPS32 Release 2"
1373	depends on SYS_HAS_CPU_MIPS32_R2
1374	select CPU_HAS_PREFETCH
1375	select CPU_SUPPORTS_32BIT_KERNEL
1376	select CPU_SUPPORTS_HIGHMEM
1377	select CPU_SUPPORTS_MSA
1378	select HAVE_KVM
1379	help
1380	  Choose this option to build a kernel for release 2 or later of the
1381	  MIPS32 architecture.  Most modern embedded systems with a 32-bit
1382	  MIPS processor are based on a MIPS32 processor.  If you know the
1383	  specific type of processor in your system, choose those that one
1384	  otherwise CPU_MIPS32_R1 is a safe bet for any MIPS32 system.
1385
1386config CPU_MIPS32_R5
1387	bool "MIPS32 Release 5"
1388	depends on SYS_HAS_CPU_MIPS32_R5
1389	select CPU_HAS_PREFETCH
1390	select CPU_SUPPORTS_32BIT_KERNEL
1391	select CPU_SUPPORTS_HIGHMEM
1392	select CPU_SUPPORTS_MSA
1393	select HAVE_KVM
1394	select MIPS_O32_FP64_SUPPORT
1395	help
1396	  Choose this option to build a kernel for release 5 or later of the
1397	  MIPS32 architecture.  New MIPS processors, starting with the Warrior
1398	  family, are based on a MIPS32r5 processor. If you own an older
1399	  processor, you probably need to select MIPS32r1 or MIPS32r2 instead.
1400
1401config CPU_MIPS32_R6
1402	bool "MIPS32 Release 6"
1403	depends on SYS_HAS_CPU_MIPS32_R6
1404	select CPU_HAS_PREFETCH
1405	select CPU_NO_LOAD_STORE_LR
1406	select CPU_SUPPORTS_32BIT_KERNEL
1407	select CPU_SUPPORTS_HIGHMEM
1408	select CPU_SUPPORTS_MSA
1409	select HAVE_KVM
1410	select MIPS_O32_FP64_SUPPORT
1411	help
1412	  Choose this option to build a kernel for release 6 or later of the
1413	  MIPS32 architecture.  New MIPS processors, starting with the Warrior
1414	  family, are based on a MIPS32r6 processor. If you own an older
1415	  processor, you probably need to select MIPS32r1 or MIPS32r2 instead.
1416
1417config CPU_MIPS64_R1
1418	bool "MIPS64 Release 1"
1419	depends on SYS_HAS_CPU_MIPS64_R1
1420	select CPU_HAS_PREFETCH
1421	select CPU_SUPPORTS_32BIT_KERNEL
1422	select CPU_SUPPORTS_64BIT_KERNEL
1423	select CPU_SUPPORTS_HIGHMEM
1424	select CPU_SUPPORTS_HUGEPAGES
1425	help
1426	  Choose this option to build a kernel for release 1 or later of the
1427	  MIPS64 architecture.  Many modern embedded systems with a 64-bit
1428	  MIPS processor are based on a MIPS64 processor.  If you know the
1429	  specific type of processor in your system, choose those that one
1430	  otherwise CPU_MIPS64_R1 is a safe bet for any MIPS64 system.
1431	  Release 2 of the MIPS64 architecture is available since several
1432	  years so chances are you even have a MIPS64 Release 2 processor
1433	  in which case you should choose CPU_MIPS64_R2 instead for better
1434	  performance.
1435
1436config CPU_MIPS64_R2
1437	bool "MIPS64 Release 2"
1438	depends on SYS_HAS_CPU_MIPS64_R2
1439	select CPU_HAS_PREFETCH
1440	select CPU_SUPPORTS_32BIT_KERNEL
1441	select CPU_SUPPORTS_64BIT_KERNEL
1442	select CPU_SUPPORTS_HIGHMEM
1443	select CPU_SUPPORTS_HUGEPAGES
1444	select CPU_SUPPORTS_MSA
1445	select HAVE_KVM
1446	help
1447	  Choose this option to build a kernel for release 2 or later of the
1448	  MIPS64 architecture.  Many modern embedded systems with a 64-bit
1449	  MIPS processor are based on a MIPS64 processor.  If you know the
1450	  specific type of processor in your system, choose those that one
1451	  otherwise CPU_MIPS64_R1 is a safe bet for any MIPS64 system.
1452
1453config CPU_MIPS64_R5
1454	bool "MIPS64 Release 5"
1455	depends on SYS_HAS_CPU_MIPS64_R5
1456	select CPU_HAS_PREFETCH
1457	select CPU_SUPPORTS_32BIT_KERNEL
1458	select CPU_SUPPORTS_64BIT_KERNEL
1459	select CPU_SUPPORTS_HIGHMEM
1460	select CPU_SUPPORTS_HUGEPAGES
1461	select CPU_SUPPORTS_MSA
1462	select MIPS_O32_FP64_SUPPORT if 32BIT || MIPS32_O32
1463	select HAVE_KVM
1464	help
1465	  Choose this option to build a kernel for release 5 or later of the
1466	  MIPS64 architecture.  This is a intermediate MIPS architecture
1467	  release partly implementing release 6 features. Though there is no
1468	  any hardware known to be based on this release.
1469
1470config CPU_MIPS64_R6
1471	bool "MIPS64 Release 6"
1472	depends on SYS_HAS_CPU_MIPS64_R6
1473	select CPU_HAS_PREFETCH
1474	select CPU_NO_LOAD_STORE_LR
1475	select CPU_SUPPORTS_32BIT_KERNEL
1476	select CPU_SUPPORTS_64BIT_KERNEL
1477	select CPU_SUPPORTS_HIGHMEM
1478	select CPU_SUPPORTS_HUGEPAGES
1479	select CPU_SUPPORTS_MSA
1480	select MIPS_O32_FP64_SUPPORT if 32BIT || MIPS32_O32
1481	select HAVE_KVM
1482	help
1483	  Choose this option to build a kernel for release 6 or later of the
1484	  MIPS64 architecture.  New MIPS processors, starting with the Warrior
1485	  family, are based on a MIPS64r6 processor. If you own an older
1486	  processor, you probably need to select MIPS64r1 or MIPS64r2 instead.
1487
1488config CPU_P5600
1489	bool "MIPS Warrior P5600"
1490	depends on SYS_HAS_CPU_P5600
1491	select CPU_HAS_PREFETCH
1492	select CPU_SUPPORTS_32BIT_KERNEL
1493	select CPU_SUPPORTS_HIGHMEM
1494	select CPU_SUPPORTS_MSA
1495	select CPU_SUPPORTS_CPUFREQ
1496	select CPU_MIPSR2_IRQ_VI
1497	select CPU_MIPSR2_IRQ_EI
1498	select HAVE_KVM
1499	select MIPS_O32_FP64_SUPPORT
1500	help
1501	  Choose this option to build a kernel for MIPS Warrior P5600 CPU.
1502	  It's based on MIPS32r5 ISA with XPA, EVA, dual/quad issue exec pipes,
1503	  MMU with two-levels TLB, UCA, MSA, MDU core level features and system
1504	  level features like up to six P5600 calculation cores, CM2 with L2
1505	  cache, IOCU/IOMMU (though might be unused depending on the system-
1506	  specific IP core configuration), GIC, CPC, virtualisation module,
1507	  eJTAG and PDtrace.
1508
1509config CPU_R3000
1510	bool "R3000"
1511	depends on SYS_HAS_CPU_R3000
1512	select CPU_HAS_WB
1513	select CPU_R3K_TLB
1514	select CPU_SUPPORTS_32BIT_KERNEL
1515	select CPU_SUPPORTS_HIGHMEM
1516	help
1517	  Please make sure to pick the right CPU type. Linux/MIPS is not
1518	  designed to be generic, i.e. Kernels compiled for R3000 CPUs will
1519	  *not* work on R4000 machines and vice versa.  However, since most
1520	  of the supported machines have an R4000 (or similar) CPU, R4x00
1521	  might be a safe bet.  If the resulting kernel does not work,
1522	  try to recompile with R3000.
1523
1524config CPU_R4300
1525	bool "R4300"
1526	depends on SYS_HAS_CPU_R4300
1527	select CPU_SUPPORTS_32BIT_KERNEL
1528	select CPU_SUPPORTS_64BIT_KERNEL
1529	help
1530	  MIPS Technologies R4300-series processors.
1531
1532config CPU_R4X00
1533	bool "R4x00"
1534	depends on SYS_HAS_CPU_R4X00
1535	select CPU_SUPPORTS_32BIT_KERNEL
1536	select CPU_SUPPORTS_64BIT_KERNEL
1537	select CPU_SUPPORTS_HUGEPAGES
1538	help
1539	  MIPS Technologies R4000-series processors other than 4300, including
1540	  the R4000, R4400, R4600, and 4700.
1541
1542config CPU_TX49XX
1543	bool "R49XX"
1544	depends on SYS_HAS_CPU_TX49XX
1545	select CPU_HAS_PREFETCH
1546	select CPU_SUPPORTS_32BIT_KERNEL
1547	select CPU_SUPPORTS_64BIT_KERNEL
1548	select CPU_SUPPORTS_HUGEPAGES
1549
1550config CPU_R5000
1551	bool "R5000"
1552	depends on SYS_HAS_CPU_R5000
1553	select CPU_SUPPORTS_32BIT_KERNEL
1554	select CPU_SUPPORTS_64BIT_KERNEL
1555	select CPU_SUPPORTS_HUGEPAGES
1556	help
1557	  MIPS Technologies R5000-series processors other than the Nevada.
1558
1559config CPU_R5500
1560	bool "R5500"
1561	depends on SYS_HAS_CPU_R5500
1562	select CPU_SUPPORTS_32BIT_KERNEL
1563	select CPU_SUPPORTS_64BIT_KERNEL
1564	select CPU_SUPPORTS_HUGEPAGES
1565	help
1566	  NEC VR5500 and VR5500A series processors implement 64-bit MIPS IV
1567	  instruction set.
1568
1569config CPU_NEVADA
1570	bool "RM52xx"
1571	depends on SYS_HAS_CPU_NEVADA
1572	select CPU_SUPPORTS_32BIT_KERNEL
1573	select CPU_SUPPORTS_64BIT_KERNEL
1574	select CPU_SUPPORTS_HUGEPAGES
1575	help
1576	  QED / PMC-Sierra RM52xx-series ("Nevada") processors.
1577
1578config CPU_R10000
1579	bool "R10000"
1580	depends on SYS_HAS_CPU_R10000
1581	select CPU_HAS_PREFETCH
1582	select CPU_SUPPORTS_32BIT_KERNEL
1583	select CPU_SUPPORTS_64BIT_KERNEL
1584	select CPU_SUPPORTS_HIGHMEM
1585	select CPU_SUPPORTS_HUGEPAGES
1586	help
1587	  MIPS Technologies R10000-series processors.
1588
1589config CPU_RM7000
1590	bool "RM7000"
1591	depends on SYS_HAS_CPU_RM7000
1592	select CPU_HAS_PREFETCH
1593	select CPU_SUPPORTS_32BIT_KERNEL
1594	select CPU_SUPPORTS_64BIT_KERNEL
1595	select CPU_SUPPORTS_HIGHMEM
1596	select CPU_SUPPORTS_HUGEPAGES
1597
1598config CPU_SB1
1599	bool "SB1"
1600	depends on SYS_HAS_CPU_SB1
1601	select CPU_SUPPORTS_32BIT_KERNEL
1602	select CPU_SUPPORTS_64BIT_KERNEL
1603	select CPU_SUPPORTS_HIGHMEM
1604	select CPU_SUPPORTS_HUGEPAGES
1605	select WEAK_ORDERING
1606
1607config CPU_CAVIUM_OCTEON
1608	bool "Cavium Octeon processor"
1609	depends on SYS_HAS_CPU_CAVIUM_OCTEON
1610	select CPU_HAS_PREFETCH
1611	select CPU_SUPPORTS_64BIT_KERNEL
1612	select WEAK_ORDERING
1613	select CPU_SUPPORTS_HIGHMEM
1614	select CPU_SUPPORTS_HUGEPAGES
1615	select USB_EHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
1616	select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
1617	select MIPS_L1_CACHE_SHIFT_7
1618	select HAVE_KVM
1619	help
1620	  The Cavium Octeon processor is a highly integrated chip containing
1621	  many ethernet hardware widgets for networking tasks. The processor
1622	  can have up to 16 Mips64v2 cores and 8 integrated gigabit ethernets.
1623	  Full details can be found at http://www.caviumnetworks.com.
1624
1625config CPU_BMIPS
1626	bool "Broadcom BMIPS"
1627	depends on SYS_HAS_CPU_BMIPS
1628	select CPU_MIPS32
1629	select CPU_BMIPS32_3300 if SYS_HAS_CPU_BMIPS32_3300
1630	select CPU_BMIPS4350 if SYS_HAS_CPU_BMIPS4350
1631	select CPU_BMIPS4380 if SYS_HAS_CPU_BMIPS4380
1632	select CPU_BMIPS5000 if SYS_HAS_CPU_BMIPS5000
1633	select CPU_SUPPORTS_32BIT_KERNEL
1634	select DMA_NONCOHERENT
1635	select IRQ_MIPS_CPU
1636	select SWAP_IO_SPACE
1637	select WEAK_ORDERING
1638	select CPU_SUPPORTS_HIGHMEM
1639	select CPU_HAS_PREFETCH
1640	select CPU_SUPPORTS_CPUFREQ
1641	select MIPS_EXTERNAL_TIMER
1642	select GENERIC_IRQ_MIGRATION if HOTPLUG_CPU
1643	help
1644	  Support for BMIPS32/3300/4350/4380 and BMIPS5000 processors.
1645
1646endchoice
1647
1648config CPU_MIPS32_3_5_FEATURES
1649	bool "MIPS32 Release 3.5 Features"
1650	depends on SYS_HAS_CPU_MIPS32_R3_5
1651	depends on CPU_MIPS32_R2 || CPU_MIPS32_R5 || CPU_MIPS32_R6 || \
1652		   CPU_P5600
1653	help
1654	  Choose this option to build a kernel for release 2 or later of the
1655	  MIPS32 architecture including features from the 3.5 release such as
1656	  support for Enhanced Virtual Addressing (EVA).
1657
1658config CPU_MIPS32_3_5_EVA
1659	bool "Enhanced Virtual Addressing (EVA)"
1660	depends on CPU_MIPS32_3_5_FEATURES
1661	select EVA
1662	default y
1663	help
1664	  Choose this option if you want to enable the Enhanced Virtual
1665	  Addressing (EVA) on your MIPS32 core (such as proAptiv).
1666	  One of its primary benefits is an increase in the maximum size
1667	  of lowmem (up to 3GB). If unsure, say 'N' here.
1668
1669config CPU_MIPS32_R5_FEATURES
1670	bool "MIPS32 Release 5 Features"
1671	depends on SYS_HAS_CPU_MIPS32_R5
1672	depends on CPU_MIPS32_R2 || CPU_MIPS32_R5 || CPU_P5600
1673	help
1674	  Choose this option to build a kernel for release 2 or later of the
1675	  MIPS32 architecture including features from release 5 such as
1676	  support for Extended Physical Addressing (XPA).
1677
1678config CPU_MIPS32_R5_XPA
1679	bool "Extended Physical Addressing (XPA)"
1680	depends on CPU_MIPS32_R5_FEATURES
1681	depends on !EVA
1682	depends on !PAGE_SIZE_4KB
1683	depends on SYS_SUPPORTS_HIGHMEM
1684	select XPA
1685	select HIGHMEM
1686	select PHYS_ADDR_T_64BIT
1687	default n
1688	help
1689	  Choose this option if you want to enable the Extended Physical
1690	  Addressing (XPA) on your MIPS32 core (such as P5600 series). The
1691	  benefit is to increase physical addressing equal to or greater
1692	  than 40 bits. Note that this has the side effect of turning on
1693	  64-bit addressing which in turn makes the PTEs 64-bit in size.
1694	  If unsure, say 'N' here.
1695
1696if CPU_LOONGSON2F
1697config CPU_NOP_WORKAROUNDS
1698	bool
1699
1700config CPU_JUMP_WORKAROUNDS
1701	bool
1702
1703config CPU_LOONGSON2F_WORKAROUNDS
1704	bool "Loongson 2F Workarounds"
1705	default y
1706	select CPU_NOP_WORKAROUNDS
1707	select CPU_JUMP_WORKAROUNDS
1708	help
1709	  Loongson 2F01 / 2F02 processors have the NOP & JUMP issues which
1710	  require workarounds.  Without workarounds the system may hang
1711	  unexpectedly.  For more information please refer to the gas
1712	  -mfix-loongson2f-nop and -mfix-loongson2f-jump options.
1713
1714	  Loongson 2F03 and later have fixed these issues and no workarounds
1715	  are needed.  The workarounds have no significant side effect on them
1716	  but may decrease the performance of the system so this option should
1717	  be disabled unless the kernel is intended to be run on 2F01 or 2F02
1718	  systems.
1719
1720	  If unsure, please say Y.
1721endif # CPU_LOONGSON2F
1722
1723config SYS_SUPPORTS_ZBOOT
1724	bool
1725	select HAVE_KERNEL_GZIP
1726	select HAVE_KERNEL_BZIP2
1727	select HAVE_KERNEL_LZ4
1728	select HAVE_KERNEL_LZMA
1729	select HAVE_KERNEL_LZO
1730	select HAVE_KERNEL_XZ
1731	select HAVE_KERNEL_ZSTD
1732
1733config SYS_SUPPORTS_ZBOOT_UART16550
1734	bool
1735	select SYS_SUPPORTS_ZBOOT
1736
1737config SYS_SUPPORTS_ZBOOT_UART_PROM
1738	bool
1739	select SYS_SUPPORTS_ZBOOT
1740
1741config CPU_LOONGSON2EF
1742	bool
1743	select CPU_SUPPORTS_32BIT_KERNEL
1744	select CPU_SUPPORTS_64BIT_KERNEL
1745	select CPU_SUPPORTS_HIGHMEM
1746	select CPU_SUPPORTS_HUGEPAGES
1747
1748config CPU_LOONGSON32
1749	bool
1750	select CPU_MIPS32
1751	select CPU_MIPSR2
1752	select CPU_HAS_PREFETCH
1753	select CPU_SUPPORTS_32BIT_KERNEL
1754	select CPU_SUPPORTS_HIGHMEM
1755	select CPU_SUPPORTS_CPUFREQ
1756
1757config CPU_BMIPS32_3300
1758	select SMP_UP if SMP
1759	bool
1760
1761config CPU_BMIPS4350
1762	bool
1763	select SYS_SUPPORTS_SMP
1764	select SYS_SUPPORTS_HOTPLUG_CPU
1765
1766config CPU_BMIPS4380
1767	bool
1768	select MIPS_L1_CACHE_SHIFT_6
1769	select SYS_SUPPORTS_SMP
1770	select SYS_SUPPORTS_HOTPLUG_CPU
1771	select CPU_HAS_RIXI
1772
1773config CPU_BMIPS5000
1774	bool
1775	select MIPS_CPU_SCACHE
1776	select MIPS_L1_CACHE_SHIFT_7
1777	select SYS_SUPPORTS_SMP
1778	select SYS_SUPPORTS_HOTPLUG_CPU
1779	select CPU_HAS_RIXI
1780
1781config SYS_HAS_CPU_LOONGSON64
1782	bool
1783	select CPU_SUPPORTS_CPUFREQ
1784	select CPU_HAS_RIXI
1785
1786config SYS_HAS_CPU_LOONGSON2E
1787	bool
1788
1789config SYS_HAS_CPU_LOONGSON2F
1790	bool
1791	select CPU_SUPPORTS_CPUFREQ
1792	select CPU_SUPPORTS_ADDRWINCFG if 64BIT
1793
1794config SYS_HAS_CPU_LOONGSON1B
1795	bool
1796
1797config SYS_HAS_CPU_LOONGSON1C
1798	bool
1799
1800config SYS_HAS_CPU_MIPS32_R1
1801	bool
1802
1803config SYS_HAS_CPU_MIPS32_R2
1804	bool
1805
1806config SYS_HAS_CPU_MIPS32_R3_5
1807	bool
1808
1809config SYS_HAS_CPU_MIPS32_R5
1810	bool
1811
1812config SYS_HAS_CPU_MIPS32_R6
1813	bool
1814
1815config SYS_HAS_CPU_MIPS64_R1
1816	bool
1817
1818config SYS_HAS_CPU_MIPS64_R2
1819	bool
1820
1821config SYS_HAS_CPU_MIPS64_R5
1822	bool
1823
1824config SYS_HAS_CPU_MIPS64_R6
1825	bool
1826
1827config SYS_HAS_CPU_P5600
1828	bool
1829
1830config SYS_HAS_CPU_R3000
1831	bool
1832
1833config SYS_HAS_CPU_R4300
1834	bool
1835
1836config SYS_HAS_CPU_R4X00
1837	bool
1838
1839config SYS_HAS_CPU_TX49XX
1840	bool
1841
1842config SYS_HAS_CPU_R5000
1843	bool
1844
1845config SYS_HAS_CPU_R5500
1846	bool
1847
1848config SYS_HAS_CPU_NEVADA
1849	bool
1850
1851config SYS_HAS_CPU_R10000
1852	bool
1853
1854config SYS_HAS_CPU_RM7000
1855	bool
1856
1857config SYS_HAS_CPU_SB1
1858	bool
1859
1860config SYS_HAS_CPU_CAVIUM_OCTEON
1861	bool
1862
1863config SYS_HAS_CPU_BMIPS
1864	bool
1865
1866config SYS_HAS_CPU_BMIPS32_3300
1867	bool
1868	select SYS_HAS_CPU_BMIPS
1869
1870config SYS_HAS_CPU_BMIPS4350
1871	bool
1872	select SYS_HAS_CPU_BMIPS
1873
1874config SYS_HAS_CPU_BMIPS4380
1875	bool
1876	select SYS_HAS_CPU_BMIPS
1877
1878config SYS_HAS_CPU_BMIPS5000
1879	bool
1880	select SYS_HAS_CPU_BMIPS
1881
1882#
1883# CPU may reorder R->R, R->W, W->R, W->W
1884# Reordering beyond LL and SC is handled in WEAK_REORDERING_BEYOND_LLSC
1885#
1886config WEAK_ORDERING
1887	bool
1888
1889#
1890# CPU may reorder reads and writes beyond LL/SC
1891# CPU may reorder R->LL, R->LL, W->LL, W->LL, R->SC, R->SC, W->SC, W->SC
1892#
1893config WEAK_REORDERING_BEYOND_LLSC
1894	bool
1895endmenu
1896
1897#
1898# These two indicate any level of the MIPS32 and MIPS64 architecture
1899#
1900config CPU_MIPS32
1901	bool
1902	default y if CPU_MIPS32_R1 || CPU_MIPS32_R2 || CPU_MIPS32_R5 || \
1903		     CPU_MIPS32_R6 || CPU_P5600
1904
1905config CPU_MIPS64
1906	bool
1907	default y if CPU_MIPS64_R1 || CPU_MIPS64_R2 || CPU_MIPS64_R5 || \
1908		     CPU_MIPS64_R6 || CPU_LOONGSON64 || CPU_CAVIUM_OCTEON
1909
1910#
1911# These indicate the revision of the architecture
1912#
1913config CPU_MIPSR1
1914	bool
1915	default y if CPU_MIPS32_R1 || CPU_MIPS64_R1
1916
1917config CPU_MIPSR2
1918	bool
1919	default y if CPU_MIPS32_R2 || CPU_MIPS64_R2 || CPU_CAVIUM_OCTEON
1920	select CPU_HAS_RIXI
1921	select CPU_HAS_DIEI if !CPU_DIEI_BROKEN
1922	select MIPS_SPRAM
1923
1924config CPU_MIPSR5
1925	bool
1926	default y if CPU_MIPS32_R5 || CPU_MIPS64_R5 || CPU_P5600
1927	select CPU_HAS_RIXI
1928	select CPU_HAS_DIEI if !CPU_DIEI_BROKEN
1929	select MIPS_SPRAM
1930
1931config CPU_MIPSR6
1932	bool
1933	default y if CPU_MIPS32_R6 || CPU_MIPS64_R6
1934	select CPU_HAS_RIXI
1935	select CPU_HAS_DIEI if !CPU_DIEI_BROKEN
1936	select HAVE_ARCH_BITREVERSE
1937	select MIPS_ASID_BITS_VARIABLE
1938	select MIPS_CRC_SUPPORT
1939	select MIPS_SPRAM
1940
1941config TARGET_ISA_REV
1942	int
1943	default 1 if CPU_MIPSR1
1944	default 2 if CPU_MIPSR2
1945	default 5 if CPU_MIPSR5
1946	default 6 if CPU_MIPSR6
1947	default 0
1948	help
1949	  Reflects the ISA revision being targeted by the kernel build. This
1950	  is effectively the Kconfig equivalent of MIPS_ISA_REV.
1951
1952config EVA
1953	bool
1954
1955config XPA
1956	bool
1957
1958config SYS_SUPPORTS_32BIT_KERNEL
1959	bool
1960config SYS_SUPPORTS_64BIT_KERNEL
1961	bool
1962config CPU_SUPPORTS_32BIT_KERNEL
1963	bool
1964config CPU_SUPPORTS_64BIT_KERNEL
1965	bool
1966config CPU_SUPPORTS_CPUFREQ
1967	bool
1968config CPU_SUPPORTS_ADDRWINCFG
1969	bool
1970config CPU_SUPPORTS_HUGEPAGES
1971	bool
1972	depends on !(32BIT && (PHYS_ADDR_T_64BIT || EVA))
1973config MIPS_PGD_C0_CONTEXT
1974	bool
1975	depends on 64BIT
1976	default y if (CPU_MIPSR2 || CPU_MIPSR6)
1977
1978#
1979# Set to y for ptrace access to watch registers.
1980#
1981config HARDWARE_WATCHPOINTS
1982	bool
1983	default y if CPU_MIPSR1 || CPU_MIPSR2 || CPU_MIPSR6
1984
1985menu "Kernel type"
1986
1987choice
1988	prompt "Kernel code model"
1989	help
1990	  You should only select this option if you have a workload that
1991	  actually benefits from 64-bit processing or if your machine has
1992	  large memory.  You will only be presented a single option in this
1993	  menu if your system does not support both 32-bit and 64-bit kernels.
1994
1995config 32BIT
1996	bool "32-bit kernel"
1997	depends on CPU_SUPPORTS_32BIT_KERNEL && SYS_SUPPORTS_32BIT_KERNEL
1998	select TRAD_SIGNALS
1999	help
2000	  Select this option if you want to build a 32-bit kernel.
2001
2002config 64BIT
2003	bool "64-bit kernel"
2004	depends on CPU_SUPPORTS_64BIT_KERNEL && SYS_SUPPORTS_64BIT_KERNEL
2005	help
2006	  Select this option if you want to build a 64-bit kernel.
2007
2008endchoice
2009
2010config MIPS_VA_BITS_48
2011	bool "48 bits virtual memory"
2012	depends on 64BIT
2013	help
2014	  Support a maximum at least 48 bits of application virtual
2015	  memory.  Default is 40 bits or less, depending on the CPU.
2016	  For page sizes 16k and above, this option results in a small
2017	  memory overhead for page tables.  For 4k page size, a fourth
2018	  level of page tables is added which imposes both a memory
2019	  overhead as well as slower TLB fault handling.
2020
2021	  If unsure, say N.
2022
2023config ZBOOT_LOAD_ADDRESS
2024	hex "Compressed kernel load address"
2025	default 0xffffffff80400000 if BCM47XX
2026	default 0x0
2027	depends on SYS_SUPPORTS_ZBOOT
2028	help
2029	  The address to load compressed kernel, aka vmlinuz.
2030
2031	  This is only used if non-zero.
2032
2033choice
2034	prompt "Kernel page size"
2035	default PAGE_SIZE_4KB
2036
2037config PAGE_SIZE_4KB
2038	bool "4kB"
2039	depends on !CPU_LOONGSON2EF && !CPU_LOONGSON64
2040	help
2041	  This option select the standard 4kB Linux page size.  On some
2042	  R3000-family processors this is the only available page size.  Using
2043	  4kB page size will minimize memory consumption and is therefore
2044	  recommended for low memory systems.
2045
2046config PAGE_SIZE_8KB
2047	bool "8kB"
2048	depends on CPU_CAVIUM_OCTEON
2049	depends on !MIPS_VA_BITS_48
2050	help
2051	  Using 8kB page size will result in higher performance kernel at
2052	  the price of higher memory consumption.  This option is available
2053	  only on cnMIPS processors.  Note that you will need a suitable Linux
2054	  distribution to support this.
2055
2056config PAGE_SIZE_16KB
2057	bool "16kB"
2058	depends on !CPU_R3000
2059	help
2060	  Using 16kB page size will result in higher performance kernel at
2061	  the price of higher memory consumption.  This option is available on
2062	  all non-R3000 family processors.  Note that you will need a suitable
2063	  Linux distribution to support this.
2064
2065config PAGE_SIZE_32KB
2066	bool "32kB"
2067	depends on CPU_CAVIUM_OCTEON
2068	depends on !MIPS_VA_BITS_48
2069	help
2070	  Using 32kB page size will result in higher performance kernel at
2071	  the price of higher memory consumption.  This option is available
2072	  only on cnMIPS cores.  Note that you will need a suitable Linux
2073	  distribution to support this.
2074
2075config PAGE_SIZE_64KB
2076	bool "64kB"
2077	depends on !CPU_R3000
2078	help
2079	  Using 64kB page size will result in higher performance kernel at
2080	  the price of higher memory consumption.  This option is available on
2081	  all non-R3000 family processor.  Not that at the time of this
2082	  writing this option is still high experimental.
2083
2084endchoice
2085
2086config ARCH_FORCE_MAX_ORDER
2087	int "Maximum zone order"
2088	default "13" if MIPS_HUGE_TLB_SUPPORT && PAGE_SIZE_64KB
2089	default "12" if MIPS_HUGE_TLB_SUPPORT && PAGE_SIZE_32KB
2090	default "11" if MIPS_HUGE_TLB_SUPPORT && PAGE_SIZE_16KB
2091	default "10"
2092	help
2093	  The kernel memory allocator divides physically contiguous memory
2094	  blocks into "zones", where each zone is a power of two number of
2095	  pages.  This option selects the largest power of two that the kernel
2096	  keeps in the memory allocator.  If you need to allocate very large
2097	  blocks of physically contiguous memory, then you may need to
2098	  increase this value.
2099
2100	  The page size is not necessarily 4KB.  Keep this in mind
2101	  when choosing a value for this option.
2102
2103config BOARD_SCACHE
2104	bool
2105
2106config IP22_CPU_SCACHE
2107	bool
2108	select BOARD_SCACHE
2109
2110#
2111# Support for a MIPS32 / MIPS64 style S-caches
2112#
2113config MIPS_CPU_SCACHE
2114	bool
2115	select BOARD_SCACHE
2116
2117config R5000_CPU_SCACHE
2118	bool
2119	select BOARD_SCACHE
2120
2121config RM7000_CPU_SCACHE
2122	bool
2123	select BOARD_SCACHE
2124
2125config SIBYTE_DMA_PAGEOPS
2126	bool "Use DMA to clear/copy pages"
2127	depends on CPU_SB1
2128	help
2129	  Instead of using the CPU to zero and copy pages, use a Data Mover
2130	  channel.  These DMA channels are otherwise unused by the standard
2131	  SiByte Linux port.  Seems to give a small performance benefit.
2132
2133config CPU_HAS_PREFETCH
2134	bool
2135
2136config CPU_GENERIC_DUMP_TLB
2137	bool
2138	default y if !CPU_R3000
2139
2140config MIPS_FP_SUPPORT
2141	bool "Floating Point support" if EXPERT
2142	default y
2143	help
2144	  Select y to include support for floating point in the kernel
2145	  including initialization of FPU hardware, FP context save & restore
2146	  and emulation of an FPU where necessary. Without this support any
2147	  userland program attempting to use floating point instructions will
2148	  receive a SIGILL.
2149
2150	  If you know that your userland will not attempt to use floating point
2151	  instructions then you can say n here to shrink the kernel a little.
2152
2153	  If unsure, say y.
2154
2155config CPU_R2300_FPU
2156	bool
2157	depends on MIPS_FP_SUPPORT
2158	default y if CPU_R3000
2159
2160config CPU_R3K_TLB
2161	bool
2162
2163config CPU_R4K_FPU
2164	bool
2165	depends on MIPS_FP_SUPPORT
2166	default y if !CPU_R2300_FPU
2167
2168config CPU_R4K_CACHE_TLB
2169	bool
2170	default y if !(CPU_R3K_TLB || CPU_SB1 || CPU_CAVIUM_OCTEON)
2171
2172config MIPS_MT_SMP
2173	bool "MIPS MT SMP support (1 TC on each available VPE)"
2174	default y
2175	depends on SYS_SUPPORTS_MULTITHREADING && !CPU_MIPSR6 && !CPU_MICROMIPS
2176	select CPU_MIPSR2_IRQ_VI
2177	select CPU_MIPSR2_IRQ_EI
2178	select SYNC_R4K
2179	select MIPS_MT
2180	select SMP
2181	select SMP_UP
2182	select SYS_SUPPORTS_SMP
2183	select SYS_SUPPORTS_SCHED_SMT
2184	select MIPS_PERF_SHARED_TC_COUNTERS
2185	help
2186	  This is a kernel model which is known as SMVP. This is supported
2187	  on cores with the MT ASE and uses the available VPEs to implement
2188	  virtual processors which supports SMP. This is equivalent to the
2189	  Intel Hyperthreading feature. For further information go to
2190	  <http://www.imgtec.com/mips/mips-multithreading.asp>.
2191
2192config MIPS_MT
2193	bool
2194
2195config SCHED_SMT
2196	bool "SMT (multithreading) scheduler support"
2197	depends on SYS_SUPPORTS_SCHED_SMT
2198	default n
2199	help
2200	  SMT scheduler support improves the CPU scheduler's decision making
2201	  when dealing with MIPS MT enabled cores at a cost of slightly
2202	  increased overhead in some places. If unsure say N here.
2203
2204config SYS_SUPPORTS_SCHED_SMT
2205	bool
2206
2207config SYS_SUPPORTS_MULTITHREADING
2208	bool
2209
2210config MIPS_MT_FPAFF
2211	bool "Dynamic FPU affinity for FP-intensive threads"
2212	default y
2213	depends on MIPS_MT_SMP
2214
2215config MIPSR2_TO_R6_EMULATOR
2216	bool "MIPS R2-to-R6 emulator"
2217	depends on CPU_MIPSR6
2218	depends on MIPS_FP_SUPPORT
2219	default y
2220	help
2221	  Choose this option if you want to run non-R6 MIPS userland code.
2222	  Even if you say 'Y' here, the emulator will still be disabled by
2223	  default. You can enable it using the 'mipsr2emu' kernel option.
2224	  The only reason this is a build-time option is to save ~14K from the
2225	  final kernel image.
2226
2227config SYS_SUPPORTS_VPE_LOADER
2228	bool
2229	depends on SYS_SUPPORTS_MULTITHREADING
2230	help
2231	  Indicates that the platform supports the VPE loader, and provides
2232	  physical_memsize.
2233
2234config MIPS_VPE_LOADER
2235	bool "VPE loader support."
2236	depends on SYS_SUPPORTS_VPE_LOADER && MODULES
2237	select CPU_MIPSR2_IRQ_VI
2238	select CPU_MIPSR2_IRQ_EI
2239	select MIPS_MT
2240	help
2241	  Includes a loader for loading an elf relocatable object
2242	  onto another VPE and running it.
2243
2244config MIPS_VPE_LOADER_MT
2245	bool
2246	default "y"
2247	depends on MIPS_VPE_LOADER
2248
2249config MIPS_VPE_LOADER_TOM
2250	bool "Load VPE program into memory hidden from linux"
2251	depends on MIPS_VPE_LOADER
2252	default y
2253	help
2254	  The loader can use memory that is present but has been hidden from
2255	  Linux using the kernel command line option "mem=xxMB". It's up to
2256	  you to ensure the amount you put in the option and the space your
2257	  program requires is less or equal to the amount physically present.
2258
2259config MIPS_VPE_APSP_API
2260	bool "Enable support for AP/SP API (RTLX)"
2261	depends on MIPS_VPE_LOADER
2262
2263config MIPS_VPE_APSP_API_MT
2264	bool
2265	default "y"
2266	depends on MIPS_VPE_APSP_API
2267
2268config MIPS_CPS
2269	bool "MIPS Coherent Processing System support"
2270	depends on SYS_SUPPORTS_MIPS_CPS
2271	select MIPS_CM
2272	select MIPS_CPS_PM if HOTPLUG_CPU
2273	select SMP
2274	select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU
2275	select SYNC_R4K if (CEVT_R4K || CSRC_R4K)
2276	select SYS_SUPPORTS_HOTPLUG_CPU
2277	select SYS_SUPPORTS_SCHED_SMT if CPU_MIPSR6
2278	select SYS_SUPPORTS_SMP
2279	select WEAK_ORDERING
2280	select GENERIC_IRQ_MIGRATION if HOTPLUG_CPU
2281	help
2282	  Select this if you wish to run an SMP kernel across multiple cores
2283	  within a MIPS Coherent Processing System. When this option is
2284	  enabled the kernel will probe for other cores and boot them with
2285	  no external assistance. It is safe to enable this when hardware
2286	  support is unavailable.
2287
2288config MIPS_CPS_PM
2289	depends on MIPS_CPS
2290	bool
2291
2292config MIPS_CM
2293	bool
2294	select MIPS_CPC
2295
2296config MIPS_CPC
2297	bool
2298
2299config SB1_PASS_2_WORKAROUNDS
2300	bool
2301	depends on CPU_SB1 && (CPU_SB1_PASS_2_2 || CPU_SB1_PASS_2)
2302	default y
2303
2304config SB1_PASS_2_1_WORKAROUNDS
2305	bool
2306	depends on CPU_SB1 && CPU_SB1_PASS_2
2307	default y
2308
2309choice
2310	prompt "SmartMIPS or microMIPS ASE support"
2311
2312config CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS
2313	bool "None"
2314	help
2315	  Select this if you want neither microMIPS nor SmartMIPS support
2316
2317config CPU_HAS_SMARTMIPS
2318	depends on SYS_SUPPORTS_SMARTMIPS
2319	bool "SmartMIPS"
2320	help
2321	  SmartMIPS is a extension of the MIPS32 architecture aimed at
2322	  increased security at both hardware and software level for
2323	  smartcards.  Enabling this option will allow proper use of the
2324	  SmartMIPS instructions by Linux applications.  However a kernel with
2325	  this option will not work on a MIPS core without SmartMIPS core.  If
2326	  you don't know you probably don't have SmartMIPS and should say N
2327	  here.
2328
2329config CPU_MICROMIPS
2330	depends on 32BIT && SYS_SUPPORTS_MICROMIPS && !CPU_MIPSR6
2331	bool "microMIPS"
2332	help
2333	  When this option is enabled the kernel will be built using the
2334	  microMIPS ISA
2335
2336endchoice
2337
2338config CPU_HAS_MSA
2339	bool "Support for the MIPS SIMD Architecture"
2340	depends on CPU_SUPPORTS_MSA
2341	depends on MIPS_FP_SUPPORT
2342	depends on 64BIT || MIPS_O32_FP64_SUPPORT
2343	help
2344	  MIPS SIMD Architecture (MSA) introduces 128 bit wide vector registers
2345	  and a set of SIMD instructions to operate on them. When this option
2346	  is enabled the kernel will support allocating & switching MSA
2347	  vector register contexts. If you know that your kernel will only be
2348	  running on CPUs which do not support MSA or that your userland will
2349	  not be making use of it then you may wish to say N here to reduce
2350	  the size & complexity of your kernel.
2351
2352	  If unsure, say Y.
2353
2354config CPU_HAS_WB
2355	bool
2356
2357config XKS01
2358	bool
2359
2360config CPU_HAS_DIEI
2361	depends on !CPU_DIEI_BROKEN
2362	bool
2363
2364config CPU_DIEI_BROKEN
2365	bool
2366
2367config CPU_HAS_RIXI
2368	bool
2369
2370config CPU_NO_LOAD_STORE_LR
2371	bool
2372	help
2373	  CPU lacks support for unaligned load and store instructions:
2374	  LWL, LWR, SWL, SWR (Load/store word left/right).
2375	  LDL, LDR, SDL, SDR (Load/store doubleword left/right, for 64bit
2376	  systems).
2377
2378#
2379# Vectored interrupt mode is an R2 feature
2380#
2381config CPU_MIPSR2_IRQ_VI
2382	bool
2383
2384#
2385# Extended interrupt mode is an R2 feature
2386#
2387config CPU_MIPSR2_IRQ_EI
2388	bool
2389
2390config CPU_HAS_SYNC
2391	bool
2392	depends on !CPU_R3000
2393	default y
2394
2395#
2396# CPU non-features
2397#
2398
2399# Work around the "daddi" and "daddiu" CPU errata:
2400#
2401# - The `daddi' instruction fails to trap on overflow.
2402#   "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
2403#   erratum #23
2404#
2405# - The `daddiu' instruction can produce an incorrect result.
2406#   "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
2407#   erratum #41
2408#   "MIPS R4000MC Errata, Processor Revision 2.2 and 3.0", erratum
2409#   #15
2410#   "MIPS R4400PC/SC Errata, Processor Revision 1.0", erratum #7
2411#   "MIPS R4400MC Errata, Processor Revision 1.0", erratum #5
2412config CPU_DADDI_WORKAROUNDS
2413	bool
2414
2415# Work around certain R4000 CPU errata (as implemented by GCC):
2416#
2417# - A double-word or a variable shift may give an incorrect result
2418#   if executed immediately after starting an integer division:
2419#   "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
2420#   erratum #28
2421#   "MIPS R4000MC Errata, Processor Revision 2.2 and 3.0", erratum
2422#   #19
2423#
2424# - A double-word or a variable shift may give an incorrect result
2425#   if executed while an integer multiplication is in progress:
2426#   "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
2427#   errata #16 & #28
2428#
2429# - An integer division may give an incorrect result if started in
2430#   a delay slot of a taken branch or a jump:
2431#   "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
2432#   erratum #52
2433config CPU_R4000_WORKAROUNDS
2434	bool
2435	select CPU_R4400_WORKAROUNDS
2436
2437# Work around certain R4400 CPU errata (as implemented by GCC):
2438#
2439# - A double-word or a variable shift may give an incorrect result
2440#   if executed immediately after starting an integer division:
2441#   "MIPS R4400MC Errata, Processor Revision 1.0", erratum #10
2442#   "MIPS R4400MC Errata, Processor Revision 2.0 & 3.0", erratum #4
2443config CPU_R4400_WORKAROUNDS
2444	bool
2445
2446config CPU_R4X00_BUGS64
2447	bool
2448	default y if SYS_HAS_CPU_R4X00 && 64BIT && (TARGET_ISA_REV < 1)
2449
2450config MIPS_ASID_SHIFT
2451	int
2452	default 6 if CPU_R3000
2453	default 0
2454
2455config MIPS_ASID_BITS
2456	int
2457	default 0 if MIPS_ASID_BITS_VARIABLE
2458	default 6 if CPU_R3000
2459	default 8
2460
2461config MIPS_ASID_BITS_VARIABLE
2462	bool
2463
2464config MIPS_CRC_SUPPORT
2465	bool
2466
2467# R4600 erratum.  Due to the lack of errata information the exact
2468# technical details aren't known.  I've experimentally found that disabling
2469# interrupts during indexed I-cache flushes seems to be sufficient to deal
2470# with the issue.
2471config WAR_R4600_V1_INDEX_ICACHEOP
2472	bool
2473
2474# Pleasures of the R4600 V1.x.  Cite from the IDT R4600 V1.7 errata:
2475#
2476#  18. The CACHE instructions Hit_Writeback_Invalidate_D, Hit_Writeback_D,
2477#      Hit_Invalidate_D and Create_Dirty_Excl_D should only be
2478#      executed if there is no other dcache activity. If the dcache is
2479#      accessed for another instruction immediately preceding when these
2480#      cache instructions are executing, it is possible that the dcache
2481#      tag match outputs used by these cache instructions will be
2482#      incorrect. These cache instructions should be preceded by at least
2483#      four instructions that are not any kind of load or store
2484#      instruction.
2485#
2486#      This is not allowed:    lw
2487#                              nop
2488#                              nop
2489#                              nop
2490#                              cache       Hit_Writeback_Invalidate_D
2491#
2492#      This is allowed:        lw
2493#                              nop
2494#                              nop
2495#                              nop
2496#                              nop
2497#                              cache       Hit_Writeback_Invalidate_D
2498config WAR_R4600_V1_HIT_CACHEOP
2499	bool
2500
2501# Writeback and invalidate the primary cache dcache before DMA.
2502#
2503# R4600 v2.0 bug: "The CACHE instructions Hit_Writeback_Inv_D,
2504# Hit_Writeback_D, Hit_Invalidate_D and Create_Dirty_Exclusive_D will only
2505# operate correctly if the internal data cache refill buffer is empty.  These
2506# CACHE instructions should be separated from any potential data cache miss
2507# by a load instruction to an uncached address to empty the response buffer."
2508# (Revision 2.0 device errata from IDT available on https://www.idt.com/
2509# in .pdf format.)
2510config WAR_R4600_V2_HIT_CACHEOP
2511	bool
2512
2513# From TX49/H2 manual: "If the instruction (i.e. CACHE) is issued for
2514# the line which this instruction itself exists, the following
2515# operation is not guaranteed."
2516#
2517# Workaround: do two phase flushing for Index_Invalidate_I
2518config WAR_TX49XX_ICACHE_INDEX_INV
2519	bool
2520
2521# The RM7000 processors and the E9000 cores have a bug (though PMC-Sierra
2522# opposes it being called that) where invalid instructions in the same
2523# I-cache line worth of instructions being fetched may case spurious
2524# exceptions.
2525config WAR_ICACHE_REFILLS
2526	bool
2527
2528# On the R10000 up to version 2.6 (not sure about 2.7) there is a bug that
2529# may cause ll / sc and lld / scd sequences to execute non-atomically.
2530config WAR_R10000_LLSC
2531	bool
2532
2533# 34K core erratum: "Problems Executing the TLBR Instruction"
2534config WAR_MIPS34K_MISSED_ITLB
2535	bool
2536
2537#
2538# - Highmem only makes sense for the 32-bit kernel.
2539# - The current highmem code will only work properly on physically indexed
2540#   caches such as R3000, SB1, R7000 or those that look like they're virtually
2541#   indexed such as R4000/R4400 SC and MC versions or R10000.  So for the
2542#   moment we protect the user and offer the highmem option only on machines
2543#   where it's known to be safe.  This will not offer highmem on a few systems
2544#   such as MIPS32 and MIPS64 CPUs which may have virtual and physically
2545#   indexed CPUs but we're playing safe.
2546# - We use SYS_SUPPORTS_HIGHMEM to offer highmem only for systems where we
2547#   know they might have memory configurations that could make use of highmem
2548#   support.
2549#
2550config HIGHMEM
2551	bool "High Memory Support"
2552	depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM && !CPU_MIPS32_3_5_EVA
2553	select KMAP_LOCAL
2554
2555config CPU_SUPPORTS_HIGHMEM
2556	bool
2557
2558config SYS_SUPPORTS_HIGHMEM
2559	bool
2560
2561config SYS_SUPPORTS_SMARTMIPS
2562	bool
2563
2564config SYS_SUPPORTS_MICROMIPS
2565	bool
2566
2567config SYS_SUPPORTS_MIPS16
2568	bool
2569	help
2570	  This option must be set if a kernel might be executed on a MIPS16-
2571	  enabled CPU even if MIPS16 is not actually being used.  In other
2572	  words, it makes the kernel MIPS16-tolerant.
2573
2574config CPU_SUPPORTS_MSA
2575	bool
2576
2577config ARCH_FLATMEM_ENABLE
2578	def_bool y
2579	depends on !NUMA && !CPU_LOONGSON2EF
2580
2581config ARCH_SPARSEMEM_ENABLE
2582	bool
2583
2584config NUMA
2585	bool "NUMA Support"
2586	depends on SYS_SUPPORTS_NUMA
2587	select SMP
2588	select HAVE_SETUP_PER_CPU_AREA
2589	select NEED_PER_CPU_EMBED_FIRST_CHUNK
2590	help
2591	  Say Y to compile the kernel to support NUMA (Non-Uniform Memory
2592	  Access).  This option improves performance on systems with more
2593	  than two nodes; on two node systems it is generally better to
2594	  leave it disabled; on single node systems leave this option
2595	  disabled.
2596
2597config SYS_SUPPORTS_NUMA
2598	bool
2599
2600config HAVE_ARCH_NODEDATA_EXTENSION
2601	bool
2602
2603config RELOCATABLE
2604	bool "Relocatable kernel"
2605	depends on SYS_SUPPORTS_RELOCATABLE
2606	depends on CPU_MIPS32_R2 || CPU_MIPS64_R2 || \
2607		   CPU_MIPS32_R5 || CPU_MIPS64_R5 || \
2608		   CPU_MIPS32_R6 || CPU_MIPS64_R6 || \
2609		   CPU_P5600 || CAVIUM_OCTEON_SOC || \
2610		   CPU_LOONGSON64
2611	help
2612	  This builds a kernel image that retains relocation information
2613	  so it can be loaded someplace besides the default 1MB.
2614	  The relocations make the kernel binary about 15% larger,
2615	  but are discarded at runtime
2616
2617config RELOCATION_TABLE_SIZE
2618	hex "Relocation table size"
2619	depends on RELOCATABLE
2620	range 0x0 0x01000000
2621	default "0x00200000" if CPU_LOONGSON64
2622	default "0x00100000"
2623	help
2624	  A table of relocation data will be appended to the kernel binary
2625	  and parsed at boot to fix up the relocated kernel.
2626
2627	  This option allows the amount of space reserved for the table to be
2628	  adjusted, although the default of 1Mb should be ok in most cases.
2629
2630	  The build will fail and a valid size suggested if this is too small.
2631
2632	  If unsure, leave at the default value.
2633
2634config RANDOMIZE_BASE
2635	bool "Randomize the address of the kernel image"
2636	depends on RELOCATABLE
2637	help
2638	  Randomizes the physical and virtual address at which the
2639	  kernel image is loaded, as a security feature that
2640	  deters exploit attempts relying on knowledge of the location
2641	  of kernel internals.
2642
2643	  Entropy is generated using any coprocessor 0 registers available.
2644
2645	  The kernel will be offset by up to RANDOMIZE_BASE_MAX_OFFSET.
2646
2647	  If unsure, say N.
2648
2649config RANDOMIZE_BASE_MAX_OFFSET
2650	hex "Maximum kASLR offset" if EXPERT
2651	depends on RANDOMIZE_BASE
2652	range 0x0 0x40000000 if EVA || 64BIT
2653	range 0x0 0x08000000
2654	default "0x01000000"
2655	help
2656	  When kASLR is active, this provides the maximum offset that will
2657	  be applied to the kernel image. It should be set according to the
2658	  amount of physical RAM available in the target system minus
2659	  PHYSICAL_START and must be a power of 2.
2660
2661	  This is limited by the size of KSEG0, 256Mb on 32-bit or 1Gb with
2662	  EVA or 64-bit. The default is 16Mb.
2663
2664config NODES_SHIFT
2665	int
2666	default "6"
2667	depends on NUMA
2668
2669config HW_PERF_EVENTS
2670	bool "Enable hardware performance counter support for perf events"
2671	depends on PERF_EVENTS && (CPU_MIPS32 || CPU_MIPS64 || CPU_R10000 || CPU_SB1 || CPU_CAVIUM_OCTEON || CPU_LOONGSON64)
2672	default y
2673	help
2674	  Enable hardware performance counter support for perf events. If
2675	  disabled, perf events will use software events only.
2676
2677config DMI
2678	bool "Enable DMI scanning"
2679	depends on MACH_LOONGSON64
2680	select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
2681	default y
2682	help
2683	  Enabled scanning of DMI to identify machine quirks. Say Y
2684	  here unless you have verified that your setup is not
2685	  affected by entries in the DMI blacklist. Required by PNP
2686	  BIOS code.
2687
2688config SMP
2689	bool "Multi-Processing support"
2690	depends on SYS_SUPPORTS_SMP
2691	help
2692	  This enables support for systems with more than one CPU. If you have
2693	  a system with only one CPU, say N. If you have a system with more
2694	  than one CPU, say Y.
2695
2696	  If you say N here, the kernel will run on uni- and multiprocessor
2697	  machines, but will use only one CPU of a multiprocessor machine. If
2698	  you say Y here, the kernel will run on many, but not all,
2699	  uniprocessor machines. On a uniprocessor machine, the kernel
2700	  will run faster if you say N here.
2701
2702	  People using multiprocessor machines who say Y here should also say
2703	  Y to "Enhanced Real Time Clock Support", below.
2704
2705	  See also the SMP-HOWTO available at
2706	  <https://www.tldp.org/docs.html#howto>.
2707
2708	  If you don't know what to do here, say N.
2709
2710config HOTPLUG_CPU
2711	bool "Support for hot-pluggable CPUs"
2712	depends on SMP && SYS_SUPPORTS_HOTPLUG_CPU
2713	help
2714	  Say Y here to allow turning CPUs off and on. CPUs can be
2715	  controlled through /sys/devices/system/cpu.
2716	  (Note: power management support will enable this option
2717	    automatically on SMP systems. )
2718	  Say N if you want to disable CPU hotplug.
2719
2720config SMP_UP
2721	bool
2722
2723config SYS_SUPPORTS_MIPS_CPS
2724	bool
2725
2726config SYS_SUPPORTS_SMP
2727	bool
2728
2729config NR_CPUS_DEFAULT_4
2730	bool
2731
2732config NR_CPUS_DEFAULT_8
2733	bool
2734
2735config NR_CPUS_DEFAULT_16
2736	bool
2737
2738config NR_CPUS_DEFAULT_32
2739	bool
2740
2741config NR_CPUS_DEFAULT_64
2742	bool
2743
2744config NR_CPUS
2745	int "Maximum number of CPUs (2-256)"
2746	range 2 256
2747	depends on SMP
2748	default "4" if NR_CPUS_DEFAULT_4
2749	default "8" if NR_CPUS_DEFAULT_8
2750	default "16" if NR_CPUS_DEFAULT_16
2751	default "32" if NR_CPUS_DEFAULT_32
2752	default "64" if NR_CPUS_DEFAULT_64
2753	help
2754	  This allows you to specify the maximum number of CPUs which this
2755	  kernel will support.  The maximum supported value is 32 for 32-bit
2756	  kernel and 64 for 64-bit kernels; the minimum value which makes
2757	  sense is 1 for Qemu (useful only for kernel debugging purposes)
2758	  and 2 for all others.
2759
2760	  This is purely to save memory - each supported CPU adds
2761	  approximately eight kilobytes to the kernel image.  For best
2762	  performance should round up your number of processors to the next
2763	  power of two.
2764
2765config MIPS_PERF_SHARED_TC_COUNTERS
2766	bool
2767
2768config MIPS_NR_CPU_NR_MAP_1024
2769	bool
2770
2771config MIPS_NR_CPU_NR_MAP
2772	int
2773	depends on SMP
2774	default 1024 if MIPS_NR_CPU_NR_MAP_1024
2775	default NR_CPUS if !MIPS_NR_CPU_NR_MAP_1024
2776
2777#
2778# Timer Interrupt Frequency Configuration
2779#
2780
2781choice
2782	prompt "Timer frequency"
2783	default HZ_250
2784	help
2785	  Allows the configuration of the timer frequency.
2786
2787	config HZ_24
2788		bool "24 HZ" if SYS_SUPPORTS_24HZ || SYS_SUPPORTS_ARBIT_HZ
2789
2790	config HZ_48
2791		bool "48 HZ" if SYS_SUPPORTS_48HZ || SYS_SUPPORTS_ARBIT_HZ
2792
2793	config HZ_100
2794		bool "100 HZ" if SYS_SUPPORTS_100HZ || SYS_SUPPORTS_ARBIT_HZ
2795
2796	config HZ_128
2797		bool "128 HZ" if SYS_SUPPORTS_128HZ || SYS_SUPPORTS_ARBIT_HZ
2798
2799	config HZ_250
2800		bool "250 HZ" if SYS_SUPPORTS_250HZ || SYS_SUPPORTS_ARBIT_HZ
2801
2802	config HZ_256
2803		bool "256 HZ" if SYS_SUPPORTS_256HZ || SYS_SUPPORTS_ARBIT_HZ
2804
2805	config HZ_1000
2806		bool "1000 HZ" if SYS_SUPPORTS_1000HZ || SYS_SUPPORTS_ARBIT_HZ
2807
2808	config HZ_1024
2809		bool "1024 HZ" if SYS_SUPPORTS_1024HZ || SYS_SUPPORTS_ARBIT_HZ
2810
2811endchoice
2812
2813config SYS_SUPPORTS_24HZ
2814	bool
2815
2816config SYS_SUPPORTS_48HZ
2817	bool
2818
2819config SYS_SUPPORTS_100HZ
2820	bool
2821
2822config SYS_SUPPORTS_128HZ
2823	bool
2824
2825config SYS_SUPPORTS_250HZ
2826	bool
2827
2828config SYS_SUPPORTS_256HZ
2829	bool
2830
2831config SYS_SUPPORTS_1000HZ
2832	bool
2833
2834config SYS_SUPPORTS_1024HZ
2835	bool
2836
2837config SYS_SUPPORTS_ARBIT_HZ
2838	bool
2839	default y if !SYS_SUPPORTS_24HZ && \
2840		     !SYS_SUPPORTS_48HZ && \
2841		     !SYS_SUPPORTS_100HZ && \
2842		     !SYS_SUPPORTS_128HZ && \
2843		     !SYS_SUPPORTS_250HZ && \
2844		     !SYS_SUPPORTS_256HZ && \
2845		     !SYS_SUPPORTS_1000HZ && \
2846		     !SYS_SUPPORTS_1024HZ
2847
2848config HZ
2849	int
2850	default 24 if HZ_24
2851	default 48 if HZ_48
2852	default 100 if HZ_100
2853	default 128 if HZ_128
2854	default 250 if HZ_250
2855	default 256 if HZ_256
2856	default 1000 if HZ_1000
2857	default 1024 if HZ_1024
2858
2859config SCHED_HRTICK
2860	def_bool HIGH_RES_TIMERS
2861
2862config ARCH_SUPPORTS_KEXEC
2863	def_bool y
2864
2865config ARCH_SUPPORTS_CRASH_DUMP
2866	def_bool y
2867
2868config PHYSICAL_START
2869	hex "Physical address where the kernel is loaded"
2870	default "0xffffffff84000000"
2871	depends on CRASH_DUMP
2872	help
2873	  This gives the CKSEG0 or KSEG0 address where the kernel is loaded.
2874	  If you plan to use kernel for capturing the crash dump change
2875	  this value to start of the reserved region (the "X" value as
2876	  specified in the "crashkernel=YM@XM" command line boot parameter
2877	  passed to the panic-ed kernel).
2878
2879config MIPS_O32_FP64_SUPPORT
2880	bool "Support for O32 binaries using 64-bit FP" if !CPU_MIPSR6
2881	depends on 32BIT || MIPS32_O32
2882	help
2883	  When this is enabled, the kernel will support use of 64-bit floating
2884	  point registers with binaries using the O32 ABI along with the
2885	  EF_MIPS_FP64 ELF header flag (typically built with -mfp64). On
2886	  32-bit MIPS systems this support is at the cost of increasing the
2887	  size and complexity of the compiled FPU emulator. Thus if you are
2888	  running a MIPS32 system and know that none of your userland binaries
2889	  will require 64-bit floating point, you may wish to reduce the size
2890	  of your kernel & potentially improve FP emulation performance by
2891	  saying N here.
2892
2893	  Although binutils currently supports use of this flag the details
2894	  concerning its effect upon the O32 ABI in userland are still being
2895	  worked on. In order to avoid userland becoming dependent upon current
2896	  behaviour before the details have been finalised, this option should
2897	  be considered experimental and only enabled by those working upon
2898	  said details.
2899
2900	  If unsure, say N.
2901
2902config USE_OF
2903	bool
2904	select OF
2905	select OF_EARLY_FLATTREE
2906	select IRQ_DOMAIN
2907
2908config UHI_BOOT
2909	bool
2910
2911config BUILTIN_DTB
2912	bool
2913
2914choice
2915	prompt "Kernel appended dtb support" if USE_OF
2916	default MIPS_NO_APPENDED_DTB
2917
2918	config MIPS_NO_APPENDED_DTB
2919		bool "None"
2920		help
2921		  Do not enable appended dtb support.
2922
2923	config MIPS_ELF_APPENDED_DTB
2924		bool "vmlinux"
2925		help
2926		  With this option, the boot code will look for a device tree binary
2927		  DTB) included in the vmlinux ELF section .appended_dtb. By default
2928		  it is empty and the DTB can be appended using binutils command
2929		  objcopy:
2930
2931		    objcopy --update-section .appended_dtb=<filename>.dtb vmlinux
2932
2933		  This is meant as a backward compatibility convenience for those
2934		  systems with a bootloader that can't be upgraded to accommodate
2935		  the documented boot protocol using a device tree.
2936
2937	config MIPS_RAW_APPENDED_DTB
2938		bool "vmlinux.bin or vmlinuz.bin"
2939		help
2940		  With this option, the boot code will look for a device tree binary
2941		  DTB) appended to raw vmlinux.bin or vmlinuz.bin.
2942		  (e.g. cat vmlinux.bin <filename>.dtb > vmlinux_w_dtb).
2943
2944		  This is meant as a backward compatibility convenience for those
2945		  systems with a bootloader that can't be upgraded to accommodate
2946		  the documented boot protocol using a device tree.
2947
2948		  Beware that there is very little in terms of protection against
2949		  this option being confused by leftover garbage in memory that might
2950		  look like a DTB header after a reboot if no actual DTB is appended
2951		  to vmlinux.bin.  Do not leave this option active in a production kernel
2952		  if you don't intend to always append a DTB.
2953endchoice
2954
2955choice
2956	prompt "Kernel command line type" if !CMDLINE_OVERRIDE
2957	default MIPS_CMDLINE_FROM_DTB if USE_OF && !ATH79 && !MACH_INGENIC && \
2958					 !MACH_LOONGSON64 && !MIPS_MALTA && \
2959					 !CAVIUM_OCTEON_SOC
2960	default MIPS_CMDLINE_FROM_BOOTLOADER
2961
2962	config MIPS_CMDLINE_FROM_DTB
2963		depends on USE_OF
2964		bool "Dtb kernel arguments if available"
2965
2966	config MIPS_CMDLINE_DTB_EXTEND
2967		depends on USE_OF
2968		bool "Extend dtb kernel arguments with bootloader arguments"
2969
2970	config MIPS_CMDLINE_FROM_BOOTLOADER
2971		bool "Bootloader kernel arguments if available"
2972
2973	config MIPS_CMDLINE_BUILTIN_EXTEND
2974		depends on CMDLINE_BOOL
2975		bool "Extend builtin kernel arguments with bootloader arguments"
2976endchoice
2977
2978endmenu
2979
2980config LOCKDEP_SUPPORT
2981	bool
2982	default y
2983
2984config STACKTRACE_SUPPORT
2985	bool
2986	default y
2987
2988config PGTABLE_LEVELS
2989	int
2990	default 4 if PAGE_SIZE_4KB && MIPS_VA_BITS_48
2991	default 3 if 64BIT && (!PAGE_SIZE_64KB || MIPS_VA_BITS_48)
2992	default 2
2993
2994config MIPS_AUTO_PFN_OFFSET
2995	bool
2996
2997menu "Bus options (PCI, PCMCIA, EISA, ISA, TC)"
2998
2999config PCI_DRIVERS_GENERIC
3000	select PCI_DOMAINS_GENERIC if PCI
3001	bool
3002
3003config PCI_DRIVERS_LEGACY
3004	def_bool !PCI_DRIVERS_GENERIC
3005	select NO_GENERIC_PCI_IOPORT_MAP
3006	select PCI_DOMAINS if PCI
3007
3008#
3009# ISA support is now enabled via select.  Too many systems still have the one
3010# or other ISA chip on the board that users don't know about so don't expect
3011# users to choose the right thing ...
3012#
3013config ISA
3014	bool
3015
3016config TC
3017	bool "TURBOchannel support"
3018	depends on MACH_DECSTATION
3019	help
3020	  TURBOchannel is a DEC (now Compaq (now HP)) bus for Alpha and MIPS
3021	  processors.  TURBOchannel programming specifications are available
3022	  at:
3023	  <ftp://ftp.hp.com/pub/alphaserver/archive/triadd/>
3024	  and:
3025	  <http://www.computer-refuge.org/classiccmp/ftp.digital.com/pub/DEC/TriAdd/>
3026	  Linux driver support status is documented at:
3027	  <http://www.linux-mips.org/wiki/DECstation>
3028
3029config MMU
3030	bool
3031	default y
3032
3033config ARCH_MMAP_RND_BITS_MIN
3034	default 12 if 64BIT
3035	default 8
3036
3037config ARCH_MMAP_RND_BITS_MAX
3038	default 18 if 64BIT
3039	default 15
3040
3041config ARCH_MMAP_RND_COMPAT_BITS_MIN
3042	default 8
3043
3044config ARCH_MMAP_RND_COMPAT_BITS_MAX
3045	default 15
3046
3047config I8253
3048	bool
3049	select CLKSRC_I8253
3050	select CLKEVT_I8253
3051	select MIPS_EXTERNAL_TIMER
3052endmenu
3053
3054config TRAD_SIGNALS
3055	bool
3056
3057config MIPS32_COMPAT
3058	bool
3059
3060config COMPAT
3061	bool
3062
3063config MIPS32_O32
3064	bool "Kernel support for o32 binaries"
3065	depends on 64BIT
3066	select ARCH_WANT_OLD_COMPAT_IPC
3067	select COMPAT
3068	select MIPS32_COMPAT
3069	help
3070	  Select this option if you want to run o32 binaries.  These are pure
3071	  32-bit binaries as used by the 32-bit Linux/MIPS port.  Most of
3072	  existing binaries are in this format.
3073
3074	  If unsure, say Y.
3075
3076config MIPS32_N32
3077	bool "Kernel support for n32 binaries"
3078	depends on 64BIT
3079	select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
3080	select COMPAT
3081	select MIPS32_COMPAT
3082	help
3083	  Select this option if you want to run n32 binaries.  These are
3084	  64-bit binaries using 32-bit quantities for addressing and certain
3085	  data that would normally be 64-bit.  They are used in special
3086	  cases.
3087
3088	  If unsure, say N.
3089
3090config CC_HAS_MNO_BRANCH_LIKELY
3091	def_bool y
3092	depends on $(cc-option,-mno-branch-likely)
3093
3094# https://github.com/llvm/llvm-project/issues/61045
3095config CC_HAS_BROKEN_INLINE_COMPAT_BRANCH
3096	def_bool y if CC_IS_CLANG
3097
3098menu "Power management options"
3099
3100config ARCH_HIBERNATION_POSSIBLE
3101	def_bool y
3102	depends on SYS_SUPPORTS_HOTPLUG_CPU || !SMP
3103
3104config ARCH_SUSPEND_POSSIBLE
3105	def_bool y
3106	depends on SYS_SUPPORTS_HOTPLUG_CPU || !SMP
3107
3108source "kernel/power/Kconfig"
3109
3110endmenu
3111
3112config MIPS_EXTERNAL_TIMER
3113	bool
3114
3115menu "CPU Power Management"
3116
3117if CPU_SUPPORTS_CPUFREQ && MIPS_EXTERNAL_TIMER
3118source "drivers/cpufreq/Kconfig"
3119endif # CPU_SUPPORTS_CPUFREQ && MIPS_EXTERNAL_TIMER
3120
3121source "drivers/cpuidle/Kconfig"
3122
3123endmenu
3124
3125source "arch/mips/kvm/Kconfig"
3126
3127source "arch/mips/vdso/Kconfig"
3128