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