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