xref: /openbmc/linux/arch/arc/Kconfig (revision dea54fba)
1#
2# Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
3#
4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License version 2 as
6# published by the Free Software Foundation.
7#
8
9config ARC
10	def_bool y
11	select ARC_TIMERS
12	select ARCH_HAS_SG_CHAIN
13	select ARCH_SUPPORTS_ATOMIC_RMW if ARC_HAS_LLSC
14	select BUILDTIME_EXTABLE_SORT
15	select CLONE_BACKWARDS
16	select COMMON_CLK
17	select GENERIC_ATOMIC64 if !ISA_ARCV2 || !(ARC_HAS_LL64 && ARC_HAS_LLSC)
18	select GENERIC_CLOCKEVENTS
19	select GENERIC_FIND_FIRST_BIT
20	# for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
21	select GENERIC_IRQ_SHOW
22	select GENERIC_PCI_IOMAP
23	select GENERIC_PENDING_IRQ if SMP
24	select GENERIC_SMP_IDLE_THREAD
25	select HAVE_ARCH_KGDB
26	select HAVE_ARCH_TRACEHOOK
27	select HAVE_FUTEX_CMPXCHG
28	select HAVE_IOREMAP_PROT
29	select HAVE_KPROBES
30	select HAVE_KRETPROBES
31	select HAVE_MEMBLOCK
32	select HAVE_MOD_ARCH_SPECIFIC
33	select HAVE_OPROFILE
34	select HAVE_PERF_EVENTS
35	select HANDLE_DOMAIN_IRQ
36	select IRQ_DOMAIN
37	select MODULES_USE_ELF_RELA
38	select NO_BOOTMEM
39	select OF
40	select OF_EARLY_FLATTREE
41	select OF_RESERVED_MEM
42	select PERF_USE_VMALLOC
43	select HAVE_DEBUG_STACKOVERFLOW
44	select HAVE_GENERIC_DMA_COHERENT
45	select HAVE_KERNEL_GZIP
46	select HAVE_KERNEL_LZMA
47
48config MIGHT_HAVE_PCI
49	bool
50
51config TRACE_IRQFLAGS_SUPPORT
52	def_bool y
53
54config LOCKDEP_SUPPORT
55	def_bool y
56
57config SCHED_OMIT_FRAME_POINTER
58	def_bool y
59
60config GENERIC_CSUM
61	def_bool y
62
63config RWSEM_GENERIC_SPINLOCK
64	def_bool y
65
66config ARCH_DISCONTIGMEM_ENABLE
67	def_bool n
68
69config ARCH_FLATMEM_ENABLE
70	def_bool y
71
72config MMU
73	def_bool y
74
75config NO_IOPORT_MAP
76	def_bool y
77
78config GENERIC_CALIBRATE_DELAY
79	def_bool y
80
81config GENERIC_HWEIGHT
82	def_bool y
83
84config STACKTRACE_SUPPORT
85	def_bool y
86	select STACKTRACE
87
88config HAVE_ARCH_TRANSPARENT_HUGEPAGE
89	def_bool y
90	depends on ARC_MMU_V4
91
92source "init/Kconfig"
93source "kernel/Kconfig.freezer"
94
95menu "ARC Architecture Configuration"
96
97menu "ARC Platform/SoC/Board"
98
99source "arch/arc/plat-tb10x/Kconfig"
100source "arch/arc/plat-axs10x/Kconfig"
101#New platform adds here
102source "arch/arc/plat-eznps/Kconfig"
103
104endmenu
105
106choice
107	prompt "ARC Instruction Set"
108	default ISA_ARCOMPACT
109
110config ISA_ARCOMPACT
111	bool "ARCompact ISA"
112	select CPU_NO_EFFICIENT_FFS
113	help
114	  The original ARC ISA of ARC600/700 cores
115
116config ISA_ARCV2
117	bool "ARC ISA v2"
118	select ARC_TIMERS_64BIT
119	help
120	  ISA for the Next Generation ARC-HS cores
121
122endchoice
123
124menu "ARC CPU Configuration"
125
126choice
127	prompt "ARC Core"
128	default ARC_CPU_770 if ISA_ARCOMPACT
129	default ARC_CPU_HS if ISA_ARCV2
130
131if ISA_ARCOMPACT
132
133config ARC_CPU_750D
134	bool "ARC750D"
135	select ARC_CANT_LLSC
136	help
137	  Support for ARC750 core
138
139config ARC_CPU_770
140	bool "ARC770"
141	select ARC_HAS_SWAPE
142	help
143	  Support for ARC770 core introduced with Rel 4.10 (Summer 2011)
144	  This core has a bunch of cool new features:
145	  -MMU-v3: Variable Page Sz (4k, 8k, 16k), bigger J-TLB (128x4)
146                   Shared Address Spaces (for sharing TLB entires in MMU)
147	  -Caches: New Prog Model, Region Flush
148	  -Insns: endian swap, load-locked/store-conditional, time-stamp-ctr
149
150endif	#ISA_ARCOMPACT
151
152config ARC_CPU_HS
153	bool "ARC-HS"
154	depends on ISA_ARCV2
155	help
156	  Support for ARC HS38x Cores based on ARCv2 ISA
157	  The notable features are:
158	    - SMP configurations of upto 4 core with coherency
159	    - Optional L2 Cache and IO-Coherency
160	    - Revised Interrupt Architecture (multiple priorites, reg banks,
161	        auto stack switch, auto regfile save/restore)
162	    - MMUv4 (PIPT dcache, Huge Pages)
163	    - Instructions for
164		* 64bit load/store: LDD, STD
165		* Hardware assisted divide/remainder: DIV, REM
166		* Function prologue/epilogue: ENTER_S, LEAVE_S
167		* IRQ enable/disable: CLRI, SETI
168		* pop count: FFS, FLS
169		* SETcc, BMSKN, XBFU...
170
171endchoice
172
173config CPU_BIG_ENDIAN
174	bool "Enable Big Endian Mode"
175	default n
176	help
177	  Build kernel for Big Endian Mode of ARC CPU
178
179config SMP
180	bool "Symmetric Multi-Processing"
181	default n
182	select ARC_MCIP if ISA_ARCV2
183	help
184	  This enables support for systems with more than one CPU.
185
186if SMP
187
188config NR_CPUS
189	int "Maximum number of CPUs (2-4096)"
190	range 2 4096
191	default "4"
192
193config ARC_SMP_HALT_ON_RESET
194	bool "Enable Halt-on-reset boot mode"
195	default y if ARC_UBOOT_SUPPORT
196	help
197	  In SMP configuration cores can be configured as Halt-on-reset
198	  or they could all start at same time. For Halt-on-reset, non
199	  masters are parked until Master kicks them so they can start of
200	  at designated entry point. For other case, all jump to common
201	  entry point and spin wait for Master's signal.
202
203endif	#SMP
204
205config ARC_MCIP
206	bool "ARConnect Multicore IP (MCIP) Support "
207	depends on ISA_ARCV2
208	default y if SMP
209	help
210	  This IP block enables SMP in ARC-HS38 cores.
211	  It provides for cross-core interrupts, multi-core debug
212	  hardware semaphores, shared memory,....
213
214menuconfig ARC_CACHE
215	bool "Enable Cache Support"
216	default y
217
218if ARC_CACHE
219
220config ARC_CACHE_LINE_SHIFT
221	int "Cache Line Length (as power of 2)"
222	range 5 7
223	default "6"
224	help
225	  Starting with ARC700 4.9, Cache line length is configurable,
226	  This option specifies "N", with Line-len = 2 power N
227	  So line lengths of 32, 64, 128 are specified by 5,6,7, respectively
228	  Linux only supports same line lengths for I and D caches.
229
230config ARC_HAS_ICACHE
231	bool "Use Instruction Cache"
232	default y
233
234config ARC_HAS_DCACHE
235	bool "Use Data Cache"
236	default y
237
238config ARC_CACHE_PAGES
239	bool "Per Page Cache Control"
240	default y
241	depends on ARC_HAS_ICACHE || ARC_HAS_DCACHE
242	help
243	  This can be used to over-ride the global I/D Cache Enable on a
244	  per-page basis (but only for pages accessed via MMU such as
245	  Kernel Virtual address or User Virtual Address)
246	  TLB entries have a per-page Cache Enable Bit.
247	  Note that Global I/D ENABLE + Per Page DISABLE works but corollary
248	  Global DISABLE + Per Page ENABLE won't work
249
250config ARC_CACHE_VIPT_ALIASING
251	bool "Support VIPT Aliasing D$"
252	depends on ARC_HAS_DCACHE && ISA_ARCOMPACT
253	default n
254
255endif	#ARC_CACHE
256
257config ARC_HAS_ICCM
258	bool "Use ICCM"
259	help
260	  Single Cycle RAMS to store Fast Path Code
261	default n
262
263config ARC_ICCM_SZ
264	int "ICCM Size in KB"
265	default "64"
266	depends on ARC_HAS_ICCM
267
268config ARC_HAS_DCCM
269	bool "Use DCCM"
270	help
271	  Single Cycle RAMS to store Fast Path Data
272	default n
273
274config ARC_DCCM_SZ
275	int "DCCM Size in KB"
276	default "64"
277	depends on ARC_HAS_DCCM
278
279config ARC_DCCM_BASE
280	hex "DCCM map address"
281	default "0xA0000000"
282	depends on ARC_HAS_DCCM
283
284choice
285	prompt "MMU Version"
286	default ARC_MMU_V3 if ARC_CPU_770
287	default ARC_MMU_V2 if ARC_CPU_750D
288	default ARC_MMU_V4 if ARC_CPU_HS
289
290if ISA_ARCOMPACT
291
292config ARC_MMU_V1
293	bool "MMU v1"
294	help
295	  Orig ARC700 MMU
296
297config ARC_MMU_V2
298	bool "MMU v2"
299	help
300	  Fixed the deficiency of v1 - possible thrashing in memcpy sceanrio
301	  when 2 D-TLB and 1 I-TLB entries index into same 2way set.
302
303config ARC_MMU_V3
304	bool "MMU v3"
305	depends on ARC_CPU_770
306	help
307	  Introduced with ARC700 4.10: New Features
308	  Variable Page size (1k-16k), var JTLB size 128 x (2 or 4)
309	  Shared Address Spaces (SASID)
310
311endif
312
313config ARC_MMU_V4
314	bool "MMU v4"
315	depends on ISA_ARCV2
316
317endchoice
318
319
320choice
321	prompt "MMU Page Size"
322	default ARC_PAGE_SIZE_8K
323
324config ARC_PAGE_SIZE_8K
325	bool "8KB"
326	help
327	  Choose between 8k vs 16k
328
329config ARC_PAGE_SIZE_16K
330	bool "16KB"
331	depends on ARC_MMU_V3 || ARC_MMU_V4
332
333config ARC_PAGE_SIZE_4K
334	bool "4KB"
335	depends on ARC_MMU_V3 || ARC_MMU_V4
336
337endchoice
338
339choice
340	prompt "MMU Super Page Size"
341	depends on ISA_ARCV2 && TRANSPARENT_HUGEPAGE
342	default ARC_HUGEPAGE_2M
343
344config ARC_HUGEPAGE_2M
345	bool "2MB"
346
347config ARC_HUGEPAGE_16M
348	bool "16MB"
349
350endchoice
351
352config NODES_SHIFT
353	int "Maximum NUMA Nodes (as a power of 2)"
354	default "0" if !DISCONTIGMEM
355	default "1" if DISCONTIGMEM
356	depends on NEED_MULTIPLE_NODES
357	---help---
358	  Accessing memory beyond 1GB (with or w/o PAE) requires 2 memory
359	  zones.
360
361if ISA_ARCOMPACT
362
363config ARC_COMPACT_IRQ_LEVELS
364	bool "Setup Timer IRQ as high Priority"
365	default n
366	# if SMP, LV2 enabled ONLY if ARC implementation has LV2 re-entrancy
367	depends on !SMP
368
369config ARC_FPU_SAVE_RESTORE
370	bool "Enable FPU state persistence across context switch"
371	default n
372	help
373	  Double Precision Floating Point unit had dedictaed regs which
374	  need to be saved/restored across context-switch.
375	  Note that ARC FPU is overly simplistic, unlike say x86, which has
376	  hardware pieces to allow software to conditionally save/restore,
377	  based on actual usage of FPU by a task. Thus our implemn does
378	  this for all tasks in system.
379
380endif	#ISA_ARCOMPACT
381
382config ARC_CANT_LLSC
383	def_bool n
384
385config ARC_HAS_LLSC
386	bool "Insn: LLOCK/SCOND (efficient atomic ops)"
387	default y
388	depends on !ARC_CANT_LLSC
389
390config ARC_HAS_SWAPE
391	bool "Insn: SWAPE (endian-swap)"
392	default y
393
394if ISA_ARCV2
395
396config ARC_HAS_LL64
397	bool "Insn: 64bit LDD/STD"
398	help
399	  Enable gcc to generate 64-bit load/store instructions
400	  ISA mandates even/odd registers to allow encoding of two
401	  dest operands with 2 possible source operands.
402	default y
403
404config ARC_HAS_DIV_REM
405	bool "Insn: div, divu, rem, remu"
406	default y
407
408config ARC_HAS_ACCL_REGS
409	bool "Reg Pair ACCL:ACCH (FPU and/or MPY > 6)"
410	default n
411	help
412	  Depending on the configuration, CPU can contain accumulator reg-pair
413	  (also referred to as r58:r59). These can also be used by gcc as GPR so
414	  kernel needs to save/restore per process
415
416endif	# ISA_ARCV2
417
418endmenu   # "ARC CPU Configuration"
419
420config LINUX_LINK_BASE
421	hex "Linux Link Address"
422	default "0x80000000"
423	help
424	  ARC700 divides the 32 bit phy address space into two equal halves
425	  -Lower 2G (0 - 0x7FFF_FFFF ) is user virtual, translated by MMU
426	  -Upper 2G (0x8000_0000 onwards) is untranslated, for kernel
427	  Typically Linux kernel is linked at the start of untransalted addr,
428	  hence the default value of 0x8zs.
429	  However some customers have peripherals mapped at this addr, so
430	  Linux needs to be scooted a bit.
431	  If you don't know what the above means, leave this setting alone.
432	  This needs to match memory start address specified in Device Tree
433
434config HIGHMEM
435	bool "High Memory Support"
436	select ARCH_DISCONTIGMEM_ENABLE
437	help
438	  With ARC 2G:2G address split, only upper 2G is directly addressable by
439	  kernel. Enable this to potentially allow access to rest of 2G and PAE
440	  in future
441
442config ARC_HAS_PAE40
443	bool "Support for the 40-bit Physical Address Extension"
444	default n
445	depends on ISA_ARCV2
446	select HIGHMEM
447	help
448	  Enable access to physical memory beyond 4G, only supported on
449	  ARC cores with 40 bit Physical Addressing support
450
451config ARCH_PHYS_ADDR_T_64BIT
452	def_bool ARC_HAS_PAE40
453
454config ARCH_DMA_ADDR_T_64BIT
455	bool
456
457config ARC_PLAT_NEEDS_PHYS_TO_DMA
458	bool
459
460config ARC_KVADDR_SIZE
461	int "Kernel Virtaul Address Space size (MB)"
462	range 0 512
463	default "256"
464	help
465	  The kernel address space is carved out of 256MB of translated address
466	  space for catering to vmalloc, modules, pkmap, fixmap. This however may
467	  not suffice vmalloc requirements of a 4K CPU EZChip system. So allow
468	  this to be stretched to 512 MB (by extending into the reserved
469	  kernel-user gutter)
470
471config ARC_CURR_IN_REG
472	bool "Dedicate Register r25 for current_task pointer"
473	default y
474	help
475	  This reserved Register R25 to point to Current Task in
476	  kernel mode. This saves memory access for each such access
477
478
479config ARC_EMUL_UNALIGNED
480	bool "Emulate unaligned memory access (userspace only)"
481	default N
482	select SYSCTL_ARCH_UNALIGN_NO_WARN
483	select SYSCTL_ARCH_UNALIGN_ALLOW
484	depends on ISA_ARCOMPACT
485	help
486	  This enables misaligned 16 & 32 bit memory access from user space.
487	  Use ONLY-IF-ABS-NECESSARY as it will be very slow and also can hide
488	  potential bugs in code
489
490config HZ
491	int "Timer Frequency"
492	default 100
493
494config ARC_METAWARE_HLINK
495	bool "Support for Metaware debugger assisted Host access"
496	default n
497	help
498	  This options allows a Linux userland apps to directly access
499	  host file system (open/creat/read/write etc) with help from
500	  Metaware Debugger. This can come in handy for Linux-host communication
501	  when there is no real usable peripheral such as EMAC.
502
503menuconfig ARC_DBG
504	bool "ARC debugging"
505	default y
506
507if ARC_DBG
508
509config ARC_DW2_UNWIND
510	bool "Enable DWARF specific kernel stack unwind"
511	default y
512	select KALLSYMS
513	help
514	  Compiles the kernel with DWARF unwind information and can be used
515	  to get stack backtraces.
516
517	  If you say Y here the resulting kernel image will be slightly larger
518	  but not slower, and it will give very useful debugging information.
519	  If you don't debug the kernel, you can say N, but we may not be able
520	  to solve problems without frame unwind information
521
522config ARC_DBG_TLB_PARANOIA
523	bool "Paranoia Checks in Low Level TLB Handlers"
524	default n
525
526endif
527
528config ARC_UBOOT_SUPPORT
529	bool "Support uboot arg Handling"
530	default n
531	help
532	  ARC Linux by default checks for uboot provided args as pointers to
533	  external cmdline or DTB. This however breaks in absence of uboot,
534	  when booting from Metaware debugger directly, as the registers are
535	  not zeroed out on reset by mdb and/or ARCv2 based cores. The bogus
536	  registers look like uboot args to kernel which then chokes.
537	  So only enable the uboot arg checking/processing if users are sure
538	  of uboot being in play.
539
540config ARC_BUILTIN_DTB_NAME
541	string "Built in DTB"
542	help
543	  Set the name of the DTB to embed in the vmlinux binary
544	  Leaving it blank selects the minimal "skeleton" dtb
545
546source "kernel/Kconfig.preempt"
547
548menu "Executable file formats"
549source "fs/Kconfig.binfmt"
550endmenu
551
552endmenu	 # "ARC Architecture Configuration"
553
554source "mm/Kconfig"
555
556config FORCE_MAX_ZONEORDER
557	int "Maximum zone order"
558	default "12" if ARC_HUGEPAGE_16M
559	default "11"
560
561source "net/Kconfig"
562source "drivers/Kconfig"
563
564menu "Bus Support"
565
566config PCI
567	bool "PCI support" if MIGHT_HAVE_PCI
568	help
569	  PCI is the name of a bus system, i.e., the way the CPU talks to
570	  the other stuff inside your box.  Find out if your board/platform
571	  has PCI.
572
573	  Note: PCIe support for Synopsys Device will be available only
574	  when HAPS DX is configured with PCIe RC bitmap. If you have PCI,
575	  say Y, otherwise N.
576
577config PCI_SYSCALL
578	def_bool PCI
579
580source "drivers/pci/Kconfig"
581
582endmenu
583
584source "fs/Kconfig"
585source "arch/arc/Kconfig.debug"
586source "security/Kconfig"
587source "crypto/Kconfig"
588source "lib/Kconfig"
589source "kernel/power/Kconfig"
590