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