xref: /linux/arch/arc/Kconfig (revision d5a821f66047c2effd06147b84775f9b2ce0f4aa)
1d2912cb1SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2cfdbc2e1SVineet Gupta#
3cfdbc2e1SVineet Gupta# Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
4cfdbc2e1SVineet Gupta#
5cfdbc2e1SVineet Gupta
6cfdbc2e1SVineet Guptaconfig ARC
7cfdbc2e1SVineet Gupta	def_bool y
8c4c9a040SVineet Gupta	select ARC_TIMERS
95c0541e1SZi Yan	select ARCH_HAS_CPU_CACHE_ALIASING
10c2280be8SAnshuman Khandual	select ARCH_HAS_CACHE_LINE_SIZE
11399145f9SAnshuman Khandual	select ARCH_HAS_DEBUG_VM_PGTABLE
12f73c9045SChristoph Hellwig	select ARCH_HAS_DMA_PREP_COHERENT
13c27d0e90SVineet Gupta	select ARCH_HAS_PTE_SPECIAL
14347cb6afSChristoph Hellwig	select ARCH_HAS_SETUP_DMA_OPS
156c3e71ddSChristoph Hellwig	select ARCH_HAS_SYNC_DMA_FOR_CPU
166c3e71ddSChristoph Hellwig	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
17f2519d4dSPaul E. McKenney	select ARCH_NEED_CMPXCHG_1_EMU
182a440168SVineet Gupta	select ARCH_SUPPORTS_ATOMIC_RMW if ARC_HAS_LLSC
19942fa985SYury Norov	select ARCH_32BIT_OFF_T
2010916706SShile Zhang	select BUILDTIME_TABLE_SORT
21*3b7f793aSMasahiro Yamada	select GENERIC_BUILTIN_DTB
224adeefe1SVineet Gupta	select CLONE_BACKWARDS
2369fbd098SNoam Camus	select COMMON_CLK
24f73c9045SChristoph Hellwig	select DMA_DIRECT_REMAP
25ce636527SVineet Gupta	select GENERIC_ATOMIC64 if !ISA_ARCV2 || !(ARC_HAS_LL64 && ARC_HAS_LLSC)
26cfdbc2e1SVineet Gupta	# for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
27cfdbc2e1SVineet Gupta	select GENERIC_IRQ_SHOW
28c1678ffcSJoao Pinto	select GENERIC_PCI_IOMAP
29bf287607SAlexey Brodkin	select GENERIC_SCHED_CLOCK
30cfdbc2e1SVineet Gupta	select GENERIC_SMP_IDLE_THREAD
3106dfae39SBaoquan He	select GENERIC_IOREMAP
32f798f91eSVineet Gupta	select GENERIC_STRNCPY_FROM_USER if MMU
33f798f91eSVineet Gupta	select GENERIC_STRNLEN_USER if MMU
34f46121bdSMischa Jonker	select HAVE_ARCH_KGDB
35547f1125SVineet Gupta	select HAVE_ARCH_TRACEHOOK
36e8003bf6SAnshuman Khandual	select HAVE_ARCH_TRANSPARENT_HUGEPAGE if ARC_MMU_V4
37c27d0e90SVineet Gupta	select HAVE_DEBUG_STACKOVERFLOW
389fbea0b7SEugeniy Paltsev	select HAVE_DEBUG_KMEMLEAK
394368902bSGilad Ben-Yossef	select HAVE_IOREMAP_PROT
40c27d0e90SVineet Gupta	select HAVE_KERNEL_GZIP
41c27d0e90SVineet Gupta	select HAVE_KERNEL_LZMA
424d86dfbbSVineet Gupta	select HAVE_KPROBES
434d86dfbbSVineet Gupta	select HAVE_KRETPROBES
44b3bbf6a7SSergey Matyukevich	select HAVE_REGS_AND_STACK_ACCESS_API
45eb1357d9SVineet Gupta	select HAVE_MOD_ARCH_SPECIFIC
469c57564eSVineet Gupta	select HAVE_PERF_EVENTS
47fb0b5490SSergey Matyukevich	select HAVE_SYSCALL_TRACEPOINTS
48999159a5SVineet Gupta	select IRQ_DOMAIN
49a050ba1eSLinus Torvalds	select LOCK_MM_AND_FIND_VMA
50cfdbc2e1SVineet Gupta	select MODULES_USE_ELF_RELA
51999159a5SVineet Gupta	select OF
52999159a5SVineet Gupta	select OF_EARLY_FLATTREE
5320f1b79dSChristoph Hellwig	select PCI_SYSCALL if PCI
54f091d5a4SEugeniy Paltsev	select HAVE_ARCH_JUMP_LABEL if ISA_ARCV2 && !CPU_ENDIAN_BE32
554aae683fSMasahiro Yamada	select TRACE_IRQFLAGS_SUPPORT
56f122668dSShahab Vahedi	select HAVE_EBPF_JIT if ISA_ARCV2
570dafafc3SVineet Gupta
580dafafc3SVineet Guptaconfig LOCKDEP_SUPPORT
590dafafc3SVineet Gupta	def_bool y
600dafafc3SVineet Gupta
61cfdbc2e1SVineet Guptaconfig SCHED_OMIT_FRAME_POINTER
62cfdbc2e1SVineet Gupta	def_bool y
63cfdbc2e1SVineet Gupta
64cfdbc2e1SVineet Guptaconfig GENERIC_CSUM
65cfdbc2e1SVineet Gupta	def_bool y
66cfdbc2e1SVineet Gupta
67cfdbc2e1SVineet Guptaconfig ARCH_FLATMEM_ENABLE
68cfdbc2e1SVineet Gupta	def_bool y
69cfdbc2e1SVineet Gupta
70cfdbc2e1SVineet Guptaconfig MMU
71cfdbc2e1SVineet Gupta	def_bool y
72cfdbc2e1SVineet Gupta
73ce816fa8SUwe Kleine-Königconfig NO_IOPORT_MAP
74cfdbc2e1SVineet Gupta	def_bool y
75cfdbc2e1SVineet Gupta
76cfdbc2e1SVineet Guptaconfig GENERIC_CALIBRATE_DELAY
77cfdbc2e1SVineet Gupta	def_bool y
78cfdbc2e1SVineet Gupta
79cfdbc2e1SVineet Guptaconfig GENERIC_HWEIGHT
80cfdbc2e1SVineet Gupta	def_bool y
81cfdbc2e1SVineet Gupta
8244c8bb91SVineet Guptaconfig STACKTRACE_SUPPORT
8344c8bb91SVineet Gupta	def_bool y
8444c8bb91SVineet Gupta	select STACKTRACE
8544c8bb91SVineet Gupta
86cfdbc2e1SVineet Guptamenu "ARC Architecture Configuration"
87cfdbc2e1SVineet Gupta
8893ad700dSVineet Guptamenu "ARC Platform/SoC/Board"
89cfdbc2e1SVineet Gupta
90072eb693SChristian Ruppertsource "arch/arc/plat-tb10x/Kconfig"
91556cc1c5SAlexey Brodkinsource "arch/arc/plat-axs10x/Kconfig"
92a518d637SAlexey Brodkinsource "arch/arc/plat-hsdk/Kconfig"
9393ad700dSVineet Gupta
9453d98958SVineet Guptaendmenu
95cfdbc2e1SVineet Gupta
961f6ccfffSVineet Guptachoice
971f6ccfffSVineet Gupta	prompt "ARC Instruction Set"
98b7cc40c3SKevin Hilman	default ISA_ARCV2
991f6ccfffSVineet Gupta
1001f6ccfffSVineet Guptaconfig ISA_ARCOMPACT
1011f6ccfffSVineet Gupta	bool "ARCompact ISA"
102fff7fb0bSZhaoxiu Zeng	select CPU_NO_EFFICIENT_FFS
1031f6ccfffSVineet Gupta	help
1041f6ccfffSVineet Gupta	  The original ARC ISA of ARC600/700 cores
1051f6ccfffSVineet Gupta
10665bfbcdfSVineet Guptaconfig ISA_ARCV2
10765bfbcdfSVineet Gupta	bool "ARC ISA v2"
108c4c9a040SVineet Gupta	select ARC_TIMERS_64BIT
10965bfbcdfSVineet Gupta	help
11065bfbcdfSVineet Gupta	  ISA for the Next Generation ARC-HS cores
1111f6ccfffSVineet Gupta
1121f6ccfffSVineet Guptaendchoice
1131f6ccfffSVineet Gupta
114cfdbc2e1SVineet Guptamenu "ARC CPU Configuration"
115cfdbc2e1SVineet Gupta
116cfdbc2e1SVineet Guptachoice
117cfdbc2e1SVineet Gupta	prompt "ARC Core"
1181f6ccfffSVineet Gupta	default ARC_CPU_770 if ISA_ARCOMPACT
1191f6ccfffSVineet Gupta	default ARC_CPU_HS if ISA_ARCV2
1201f6ccfffSVineet Gupta
121cfdbc2e1SVineet Guptaconfig ARC_CPU_770
122cfdbc2e1SVineet Gupta	bool "ARC770"
123767a697eSVineet Gupta	depends on ISA_ARCOMPACT
124cfdbc2e1SVineet Gupta	help
125cfdbc2e1SVineet Gupta	  Support for ARC770 core introduced with Rel 4.10 (Summer 2011)
126cfdbc2e1SVineet Gupta	  This core has a bunch of cool new features:
127cfdbc2e1SVineet Gupta	  -MMU-v3: Variable Page Sz (4k, 8k, 16k), bigger J-TLB (128x4)
1287c2020c3SColin Ian King	           Shared Address Spaces (for sharing TLB entries in MMU)
129cfdbc2e1SVineet Gupta	  -Caches: New Prog Model, Region Flush
130cfdbc2e1SVineet Gupta	  -Insns: endian swap, load-locked/store-conditional, time-stamp-ctr
131cfdbc2e1SVineet Gupta
1321f6ccfffSVineet Guptaconfig ARC_CPU_HS
1331f6ccfffSVineet Gupta	bool "ARC-HS"
1341f6ccfffSVineet Gupta	depends on ISA_ARCV2
1351f6ccfffSVineet Gupta	help
1361f6ccfffSVineet Gupta	  Support for ARC HS38x Cores based on ARCv2 ISA
1371f6ccfffSVineet Gupta	  The notable features are:
138a5760db2SRandy Dunlap	    - SMP configurations of up to 4 cores with coherency
1391f6ccfffSVineet Gupta	    - Optional L2 Cache and IO-Coherency
1401f6ccfffSVineet Gupta	    - Revised Interrupt Architecture (multiple priorites, reg banks,
1411f6ccfffSVineet Gupta	        auto stack switch, auto regfile save/restore)
1421f6ccfffSVineet Gupta	    - MMUv4 (PIPT dcache, Huge Pages)
1431f6ccfffSVineet Gupta	    - Instructions for
1441f6ccfffSVineet Gupta		* 64bit load/store: LDD, STD
1451f6ccfffSVineet Gupta		* Hardware assisted divide/remainder: DIV, REM
1461f6ccfffSVineet Gupta		* Function prologue/epilogue: ENTER_S, LEAVE_S
1471f6ccfffSVineet Gupta		* IRQ enable/disable: CLRI, SETI
1481f6ccfffSVineet Gupta		* pop count: FFS, FLS
1491f6ccfffSVineet Gupta		* SETcc, BMSKN, XBFU...
1501f6ccfffSVineet Gupta
151cfdbc2e1SVineet Guptaendchoice
152cfdbc2e1SVineet Gupta
1530bdd6e74SEugeniy Paltsevconfig ARC_TUNE_MCPU
1540bdd6e74SEugeniy Paltsev	string "Override default -mcpu compiler flag"
1550bdd6e74SEugeniy Paltsev	default ""
1560bdd6e74SEugeniy Paltsev	help
1570bdd6e74SEugeniy Paltsev	  Override default -mcpu=xxx compiler flag (which is set depending on
1580bdd6e74SEugeniy Paltsev	  the ISA version) with the specified value.
1590bdd6e74SEugeniy Paltsev	  NOTE: If specified flag isn't supported by current compiler the
1600bdd6e74SEugeniy Paltsev	  ISA default value will be used as a fallback.
1610bdd6e74SEugeniy Paltsev
162cfdbc2e1SVineet Guptaconfig CPU_BIG_ENDIAN
163cfdbc2e1SVineet Gupta	bool "Enable Big Endian Mode"
164cfdbc2e1SVineet Gupta	help
165cfdbc2e1SVineet Gupta	  Build kernel for Big Endian Mode of ARC CPU
166cfdbc2e1SVineet Gupta
16741195d23SVineet Guptaconfig SMP
16882fea5a1SVineet Gupta	bool "Symmetric Multi-Processing"
16982fea5a1SVineet Gupta	select ARC_MCIP if ISA_ARCV2
17041195d23SVineet Gupta	help
17182fea5a1SVineet Gupta	  This enables support for systems with more than one CPU.
17241195d23SVineet Gupta
17341195d23SVineet Guptaif SMP
17441195d23SVineet Gupta
17541195d23SVineet Guptaconfig NR_CPUS
1763aa4f80eSNoam Camus	int "Maximum number of CPUs (2-4096)"
1773aa4f80eSNoam Camus	range 2 4096
17882fea5a1SVineet Gupta	default "4"
17982fea5a1SVineet Gupta
1803971cdc2SVineet Guptaconfig ARC_SMP_HALT_ON_RESET
1813971cdc2SVineet Gupta	bool "Enable Halt-on-reset boot mode"
1823971cdc2SVineet Gupta	help
1833971cdc2SVineet Gupta	  In SMP configuration cores can be configured as Halt-on-reset
1843971cdc2SVineet Gupta	  or they could all start at same time. For Halt-on-reset, non
185a5760db2SRandy Dunlap	  masters are parked until Master kicks them so they can start off
1863971cdc2SVineet Gupta	  at designated entry point. For other case, all jump to common
1873971cdc2SVineet Gupta	  entry point and spin wait for Master's signal.
1883971cdc2SVineet Gupta
18982fea5a1SVineet Guptaendif #SMP
19041195d23SVineet Gupta
1913ce0fefcSVineet Guptaconfig ARC_MCIP
1923ce0fefcSVineet Gupta	bool "ARConnect Multicore IP (MCIP) Support "
1933ce0fefcSVineet Gupta	depends on ISA_ARCV2
1943ce0fefcSVineet Gupta	default y if SMP
1953ce0fefcSVineet Gupta	help
1963ce0fefcSVineet Gupta	  This IP block enables SMP in ARC-HS38 cores.
1973ce0fefcSVineet Gupta	  It provides for cross-core interrupts, multi-core debug
1983ce0fefcSVineet Gupta	  hardware semaphores, shared memory,....
1993ce0fefcSVineet Gupta
200cfdbc2e1SVineet Guptamenuconfig ARC_CACHE
201cfdbc2e1SVineet Gupta	bool "Enable Cache Support"
202cfdbc2e1SVineet Gupta	default y
203cfdbc2e1SVineet Gupta
204cfdbc2e1SVineet Guptaif ARC_CACHE
205cfdbc2e1SVineet Gupta
206cfdbc2e1SVineet Guptaconfig ARC_CACHE_LINE_SHIFT
207cfdbc2e1SVineet Gupta	int "Cache Line Length (as power of 2)"
208cfdbc2e1SVineet Gupta	range 5 7
209cfdbc2e1SVineet Gupta	default "6"
210cfdbc2e1SVineet Gupta	help
211cfdbc2e1SVineet Gupta	  Starting with ARC700 4.9, Cache line length is configurable,
212cfdbc2e1SVineet Gupta	  This option specifies "N", with Line-len = 2 power N
213cfdbc2e1SVineet Gupta	  So line lengths of 32, 64, 128 are specified by 5,6,7, respectively
214cfdbc2e1SVineet Gupta	  Linux only supports same line lengths for I and D caches.
215cfdbc2e1SVineet Gupta
216cfdbc2e1SVineet Guptaconfig ARC_HAS_ICACHE
217cfdbc2e1SVineet Gupta	bool "Use Instruction Cache"
218cfdbc2e1SVineet Gupta	default y
219cfdbc2e1SVineet Gupta
220cfdbc2e1SVineet Guptaconfig ARC_HAS_DCACHE
221cfdbc2e1SVineet Gupta	bool "Use Data Cache"
222cfdbc2e1SVineet Gupta	default y
223cfdbc2e1SVineet Gupta
224cfdbc2e1SVineet Guptaconfig ARC_CACHE_PAGES
225cfdbc2e1SVineet Gupta	bool "Per Page Cache Control"
226cfdbc2e1SVineet Gupta	default y
227cfdbc2e1SVineet Gupta	depends on ARC_HAS_ICACHE || ARC_HAS_DCACHE
228cfdbc2e1SVineet Gupta	help
229cfdbc2e1SVineet Gupta	  This can be used to over-ride the global I/D Cache Enable on a
230cfdbc2e1SVineet Gupta	  per-page basis (but only for pages accessed via MMU such as
231cfdbc2e1SVineet Gupta	  Kernel Virtual address or User Virtual Address)
232cfdbc2e1SVineet Gupta	  TLB entries have a per-page Cache Enable Bit.
233cfdbc2e1SVineet Gupta	  Note that Global I/D ENABLE + Per Page DISABLE works but corollary
234cfdbc2e1SVineet Gupta	  Global DISABLE + Per Page ENABLE won't work
235cfdbc2e1SVineet Gupta
236cfdbc2e1SVineet Guptaendif #ARC_CACHE
237cfdbc2e1SVineet Gupta
2388b5850f8SVineet Guptaconfig ARC_HAS_ICCM
2398b5850f8SVineet Gupta	bool "Use ICCM"
2408b5850f8SVineet Gupta	help
2418b5850f8SVineet Gupta	  Single Cycle RAMS to store Fast Path Code
2428b5850f8SVineet Gupta
2438b5850f8SVineet Guptaconfig ARC_ICCM_SZ
2448b5850f8SVineet Gupta	int "ICCM Size in KB"
2458b5850f8SVineet Gupta	default "64"
2468b5850f8SVineet Gupta	depends on ARC_HAS_ICCM
2478b5850f8SVineet Gupta
2488b5850f8SVineet Guptaconfig ARC_HAS_DCCM
2498b5850f8SVineet Gupta	bool "Use DCCM"
2508b5850f8SVineet Gupta	help
2518b5850f8SVineet Gupta	  Single Cycle RAMS to store Fast Path Data
2528b5850f8SVineet Gupta
2538b5850f8SVineet Guptaconfig ARC_DCCM_SZ
2548b5850f8SVineet Gupta	int "DCCM Size in KB"
2558b5850f8SVineet Gupta	default "64"
2568b5850f8SVineet Gupta	depends on ARC_HAS_DCCM
2578b5850f8SVineet Gupta
2588b5850f8SVineet Guptaconfig ARC_DCCM_BASE
2598b5850f8SVineet Gupta	hex "DCCM map address"
2608b5850f8SVineet Gupta	default "0xA0000000"
2618b5850f8SVineet Gupta	depends on ARC_HAS_DCCM
2628b5850f8SVineet Gupta
263cfdbc2e1SVineet Guptachoice
2641f6ccfffSVineet Gupta	prompt "MMU Version"
265288ff7deSVineet Gupta	default ARC_MMU_V3 if ISA_ARCOMPACT
266288ff7deSVineet Gupta	default ARC_MMU_V4 if ISA_ARCV2
267cfdbc2e1SVineet Gupta
268cfdbc2e1SVineet Guptaconfig ARC_MMU_V3
269cfdbc2e1SVineet Gupta	bool "MMU v3"
270288ff7deSVineet Gupta	depends on ISA_ARCOMPACT
271cfdbc2e1SVineet Gupta	help
272cfdbc2e1SVineet Gupta	  Introduced with ARC700 4.10: New Features
273cfdbc2e1SVineet Gupta	  Variable Page size (1k-16k), var JTLB size 128 x (2 or 4)
274cfdbc2e1SVineet Gupta	  Shared Address Spaces (SASID)
275cfdbc2e1SVineet Gupta
276d7a512bfSVineet Guptaconfig ARC_MMU_V4
277d7a512bfSVineet Gupta	bool "MMU v4"
278d7a512bfSVineet Gupta	depends on ISA_ARCV2
279d7a512bfSVineet Gupta
280cfdbc2e1SVineet Guptaendchoice
281cfdbc2e1SVineet Gupta
282cfdbc2e1SVineet Gupta
283cfdbc2e1SVineet Guptachoice
284cfdbc2e1SVineet Gupta	prompt "MMU Page Size"
285cfdbc2e1SVineet Gupta	default ARC_PAGE_SIZE_8K
286cfdbc2e1SVineet Gupta
287cfdbc2e1SVineet Guptaconfig ARC_PAGE_SIZE_8K
288cfdbc2e1SVineet Gupta	bool "8KB"
289d3e5bab9SArnd Bergmann	select HAVE_PAGE_SIZE_8KB
290cfdbc2e1SVineet Gupta	help
291cfdbc2e1SVineet Gupta	  Choose between 8k vs 16k
292cfdbc2e1SVineet Gupta
293cfdbc2e1SVineet Guptaconfig ARC_PAGE_SIZE_16K
294d3e5bab9SArnd Bergmann	select HAVE_PAGE_SIZE_16KB
295cfdbc2e1SVineet Gupta	bool "16KB"
296cfdbc2e1SVineet Gupta
297cfdbc2e1SVineet Guptaconfig ARC_PAGE_SIZE_4K
298cfdbc2e1SVineet Gupta	bool "4KB"
299d3e5bab9SArnd Bergmann	select HAVE_PAGE_SIZE_4KB
300cfdbc2e1SVineet Gupta
301cfdbc2e1SVineet Guptaendchoice
302cfdbc2e1SVineet Gupta
30337eda9dfSVineet Guptachoice
30437eda9dfSVineet Gupta	prompt "MMU Super Page Size"
30537eda9dfSVineet Gupta	depends on ISA_ARCV2 && TRANSPARENT_HUGEPAGE
30637eda9dfSVineet Gupta	default ARC_HUGEPAGE_2M
30737eda9dfSVineet Gupta
30837eda9dfSVineet Guptaconfig ARC_HUGEPAGE_2M
30937eda9dfSVineet Gupta	bool "2MB"
31037eda9dfSVineet Gupta
31137eda9dfSVineet Guptaconfig ARC_HUGEPAGE_16M
31237eda9dfSVineet Gupta	bool "16MB"
31337eda9dfSVineet Gupta
31437eda9dfSVineet Guptaendchoice
31537eda9dfSVineet Gupta
3162dde02abSVineet Guptaconfig PGTABLE_LEVELS
3172dde02abSVineet Gupta	int "Number of Page table levels"
3182dde02abSVineet Gupta	default 2
3192dde02abSVineet Gupta
3204788a594SVineet Guptaconfig ARC_COMPACT_IRQ_LEVELS
321f45ba2bdSVineet Gupta	depends on ISA_ARCOMPACT
32260f2b4b8SVineet Gupta	bool "Setup Timer IRQ as high Priority"
32341195d23SVineet Gupta	# if SMP, LV2 enabled ONLY if ARC implementation has LV2 re-entrancy
32460f2b4b8SVineet Gupta	depends on !SMP
3254788a594SVineet Gupta
326cfdbc2e1SVineet Guptaconfig ARC_FPU_SAVE_RESTORE
327cfdbc2e1SVineet Gupta	bool "Enable FPU state persistence across context switch"
328cfdbc2e1SVineet Gupta	help
329f45ba2bdSVineet Gupta	  ARCompact FPU has internal registers to assist with Double precision
330f45ba2bdSVineet Gupta	  Floating Point operations. There are control and stauts registers
331f45ba2bdSVineet Gupta	  for floating point exceptions and rounding modes. These are
332f45ba2bdSVineet Gupta	  preserved across task context switch when enabled.
3331f6ccfffSVineet Gupta
334cfdbc2e1SVineet Guptaconfig ARC_HAS_LLSC
335cfdbc2e1SVineet Gupta	bool "Insn: LLOCK/SCOND (efficient atomic ops)"
336cfdbc2e1SVineet Gupta	default y
337cfdbc2e1SVineet Gupta
3381f6ccfffSVineet Guptaif ISA_ARCV2
3391f6ccfffSVineet Gupta
34076551468SEugeniy Paltsevconfig ARC_USE_UNALIGNED_MEM_ACCESS
34176551468SEugeniy Paltsev	bool "Enable unaligned access in HW"
34276551468SEugeniy Paltsev	default y
34376551468SEugeniy Paltsev	select HAVE_EFFICIENT_UNALIGNED_ACCESS
34476551468SEugeniy Paltsev	help
34576551468SEugeniy Paltsev	  The ARC HS architecture supports unaligned memory access
34676551468SEugeniy Paltsev	  which is disabled by default. Enable unaligned access in
34776551468SEugeniy Paltsev	  hardware and use software to use it
34876551468SEugeniy Paltsev
3491f6ccfffSVineet Guptaconfig ARC_HAS_LL64
3501f6ccfffSVineet Gupta	bool "Insn: 64bit LDD/STD"
3511f6ccfffSVineet Gupta	help
3521f6ccfffSVineet Gupta	  Enable gcc to generate 64-bit load/store instructions
3531f6ccfffSVineet Gupta	  ISA mandates even/odd registers to allow encoding of two
3541f6ccfffSVineet Gupta	  dest operands with 2 possible source operands.
3551f6ccfffSVineet Gupta	default y
3561f6ccfffSVineet Gupta
357d05a76abSAlexey Brodkinconfig ARC_HAS_DIV_REM
358d05a76abSAlexey Brodkin	bool "Insn: div, divu, rem, remu"
359d05a76abSAlexey Brodkin	default y
360d05a76abSAlexey Brodkin
3613d5e8012SVineet Guptaconfig ARC_HAS_ACCL_REGS
3624827d0cfSEugeniy Paltsev	bool "Reg Pair ACCL:ACCH (FPU and/or MPY > 6 and/or DSP)"
363af1fc5baSVineet Gupta	default y
3643d5e8012SVineet Gupta	help
3653d5e8012SVineet Gupta	  Depending on the configuration, CPU can contain accumulator reg-pair
3663d5e8012SVineet Gupta	  (also referred to as r58:r59). These can also be used by gcc as GPR so
3673d5e8012SVineet Gupta	  kernel needs to save/restore per process
3683d5e8012SVineet Gupta
3694827d0cfSEugeniy Paltsevconfig ARC_DSP_HANDLED
3704827d0cfSEugeniy Paltsev	def_bool n
3714827d0cfSEugeniy Paltsev
3727321e2eaSEugeniy Paltsevconfig ARC_DSP_SAVE_RESTORE_REGS
3737321e2eaSEugeniy Paltsev	def_bool n
3747321e2eaSEugeniy Paltsev
3754827d0cfSEugeniy Paltsevchoice
3764827d0cfSEugeniy Paltsev	prompt "DSP support"
3774827d0cfSEugeniy Paltsev	default ARC_DSP_NONE
3784827d0cfSEugeniy Paltsev	help
3794827d0cfSEugeniy Paltsev	  Depending on the configuration, CPU can contain DSP registers
3804827d0cfSEugeniy Paltsev	  (ACC0_GLO, ACC0_GHI, DSP_BFLY0, DSP_CTRL, DSP_FFT_CTRL).
38181e82fa5SColin Ian King	  Below are options describing how to handle these registers in
3824827d0cfSEugeniy Paltsev	  interrupt entry / exit and in context switch.
3834827d0cfSEugeniy Paltsev
3844827d0cfSEugeniy Paltsevconfig ARC_DSP_NONE
3854827d0cfSEugeniy Paltsev	bool "No DSP extension presence in HW"
3864827d0cfSEugeniy Paltsev	help
3874827d0cfSEugeniy Paltsev	  No DSP extension presence in HW
3884827d0cfSEugeniy Paltsev
3894827d0cfSEugeniy Paltsevconfig ARC_DSP_KERNEL
3904827d0cfSEugeniy Paltsev	bool "DSP extension in HW, no support for userspace"
3914827d0cfSEugeniy Paltsev	select ARC_HAS_ACCL_REGS
3924827d0cfSEugeniy Paltsev	select ARC_DSP_HANDLED
3934827d0cfSEugeniy Paltsev	help
3944827d0cfSEugeniy Paltsev	  DSP extension presence in HW, no support for DSP-enabled userspace
3954827d0cfSEugeniy Paltsev	  applications. We don't save / restore DSP registers and only do
3964827d0cfSEugeniy Paltsev	  some minimal preparations so userspace won't be able to break kernel
3977321e2eaSEugeniy Paltsev
3987321e2eaSEugeniy Paltsevconfig ARC_DSP_USERSPACE
3997321e2eaSEugeniy Paltsev	bool "Support DSP for userspace apps"
4007321e2eaSEugeniy Paltsev	select ARC_HAS_ACCL_REGS
4017321e2eaSEugeniy Paltsev	select ARC_DSP_HANDLED
4027321e2eaSEugeniy Paltsev	select ARC_DSP_SAVE_RESTORE_REGS
4037321e2eaSEugeniy Paltsev	help
4047321e2eaSEugeniy Paltsev	  DSP extension presence in HW, support save / restore DSP registers to
4057321e2eaSEugeniy Paltsev	  run DSP-enabled userspace applications
406f09d3174SEugeniy Paltsev
407f09d3174SEugeniy Paltsevconfig ARC_DSP_AGU_USERSPACE
408f09d3174SEugeniy Paltsev	bool "Support DSP with AGU for userspace apps"
409f09d3174SEugeniy Paltsev	select ARC_HAS_ACCL_REGS
410f09d3174SEugeniy Paltsev	select ARC_DSP_HANDLED
411f09d3174SEugeniy Paltsev	select ARC_DSP_SAVE_RESTORE_REGS
412f09d3174SEugeniy Paltsev	help
413f09d3174SEugeniy Paltsev	  DSP and AGU extensions presence in HW, support save / restore DSP
414f09d3174SEugeniy Paltsev	  and AGU registers to run DSP-enabled userspace applications
4154827d0cfSEugeniy Paltsevendchoice
4164827d0cfSEugeniy Paltsev
417e494239aSVineet Guptaconfig ARC_IRQ_NO_AUTOSAVE
418e494239aSVineet Gupta	bool "Disable hardware autosave regfile on interrupts"
419e494239aSVineet Gupta	default n
420e494239aSVineet Gupta	help
421e494239aSVineet Gupta	  On HS cores, taken interrupt auto saves the regfile on stack.
422e494239aSVineet Gupta	  This is programmable and can be optionally disabled in which case
423e494239aSVineet Gupta	  software INTERRUPT_PROLOGUE/EPILGUE do the needed work
424e494239aSVineet Gupta
42510011f7dSEugeniy Paltsevconfig ARC_LPB_DISABLE
42610011f7dSEugeniy Paltsev	bool "Disable loop buffer (LPB)"
42710011f7dSEugeniy Paltsev	help
42810011f7dSEugeniy Paltsev	  On HS cores, loop buffer (LPB) is programmable in runtime and can
42910011f7dSEugeniy Paltsev	  be optionally disabled.
43010011f7dSEugeniy Paltsev
4311f6ccfffSVineet Guptaendif # ISA_ARCV2
4321f6ccfffSVineet Gupta
433cfdbc2e1SVineet Guptaendmenu   # "ARC CPU Configuration"
434cfdbc2e1SVineet Gupta
435cfdbc2e1SVineet Guptaconfig LINUX_LINK_BASE
4369ed68785SEugeniy Paltsev	hex "Kernel link address"
437cfdbc2e1SVineet Gupta	default "0x80000000"
438cfdbc2e1SVineet Gupta	help
439cfdbc2e1SVineet Gupta	  ARC700 divides the 32 bit phy address space into two equal halves
440cfdbc2e1SVineet Gupta	  -Lower 2G (0 - 0x7FFF_FFFF ) is user virtual, translated by MMU
441cfdbc2e1SVineet Gupta	  -Upper 2G (0x8000_0000 onwards) is untranslated, for kernel
442cfdbc2e1SVineet Gupta	  Typically Linux kernel is linked at the start of untransalted addr,
443cfdbc2e1SVineet Gupta	  hence the default value of 0x8zs.
444cfdbc2e1SVineet Gupta	  However some customers have peripherals mapped at this addr, so
445cfdbc2e1SVineet Gupta	  Linux needs to be scooted a bit.
446cfdbc2e1SVineet Gupta	  If you don't know what the above means, leave this setting alone.
447ff1c0b6aSVineet Gupta	  This needs to match memory start address specified in Device Tree
448cfdbc2e1SVineet Gupta
4499ed68785SEugeniy Paltsevconfig LINUX_RAM_BASE
4509ed68785SEugeniy Paltsev	hex "RAM base address"
4519ed68785SEugeniy Paltsev	default LINUX_LINK_BASE
4529ed68785SEugeniy Paltsev	help
4539ed68785SEugeniy Paltsev	  By default Linux is linked at base of RAM. However in some special
4549ed68785SEugeniy Paltsev	  cases (such as HSDK), Linux can't be linked at start of DDR, hence
4559ed68785SEugeniy Paltsev	  this option.
4569ed68785SEugeniy Paltsev
45745890f6dSVineet Guptaconfig HIGHMEM
45845890f6dSVineet Gupta	bool "High Memory Support"
459050b2da2SMike Rapoport	select HAVE_ARCH_PFN_VALID
46039cac191SThomas Gleixner	select KMAP_LOCAL
46145890f6dSVineet Gupta	help
46245890f6dSVineet Gupta	  With ARC 2G:2G address split, only upper 2G is directly addressable by
46345890f6dSVineet Gupta	  kernel. Enable this to potentially allow access to rest of 2G and PAE
46445890f6dSVineet Gupta	  in future
46545890f6dSVineet Gupta
4665a364c2aSVineet Guptaconfig ARC_HAS_PAE40
4675a364c2aSVineet Gupta	bool "Support for the 40-bit Physical Address Extension"
468dd2b2302SLukas Bulwahn	depends on ARC_MMU_V4
4698871331bSVineet Gupta	depends on !ARC_PAGE_SIZE_4K
470cf4100d1SAlexey Brodkin	select HIGHMEM
471d4a451d5SChristoph Hellwig	select PHYS_ADDR_T_64BIT
4725a364c2aSVineet Gupta	help
4735a364c2aSVineet Gupta	  Enable access to physical memory beyond 4G, only supported on
4745a364c2aSVineet Gupta	  ARC cores with 40 bit Physical Addressing support
4755a364c2aSVineet Gupta
47615ca68a9SNoam Camusconfig ARC_KVADDR_SIZE
47783fc61a5SMasanari Iida	int "Kernel Virtual Address Space size (MB)"
47815ca68a9SNoam Camus	range 0 512
47915ca68a9SNoam Camus	default "256"
48015ca68a9SNoam Camus	help
48115ca68a9SNoam Camus	  The kernel address space is carved out of 256MB of translated address
48215ca68a9SNoam Camus	  space for catering to vmalloc, modules, pkmap, fixmap. This however may
48315ca68a9SNoam Camus	  not suffice vmalloc requirements of a 4K CPU EZChip system. So allow
48415ca68a9SNoam Camus	  this to be stretched to 512 MB (by extending into the reserved
48515ca68a9SNoam Camus	  kernel-user gutter)
48615ca68a9SNoam Camus
487080c3747SVineet Guptaconfig ARC_CURR_IN_REG
488cfca4b5aSVineet Gupta	bool "cache current task pointer in gp"
489080c3747SVineet Gupta	default y
490080c3747SVineet Gupta	help
491cfca4b5aSVineet Gupta	  This reserves gp register to point to Current Task in
492cfca4b5aSVineet Gupta	  kernel mode eliding memory access for each access
493080c3747SVineet Gupta
4942e651ea1SVineet Gupta
4951736a56fSVineet Guptaconfig ARC_EMUL_UNALIGNED
4962e651ea1SVineet Gupta	bool "Emulate unaligned memory access (userspace only)"
4972e651ea1SVineet Gupta	select SYSCTL_ARCH_UNALIGN_NO_WARN
4982e651ea1SVineet Gupta	select SYSCTL_ARCH_UNALIGN_ALLOW
4991f6ccfffSVineet Gupta	depends on ISA_ARCOMPACT
5002e651ea1SVineet Gupta	help
5012e651ea1SVineet Gupta	  This enables misaligned 16 & 32 bit memory access from user space.
5022e651ea1SVineet Gupta	  Use ONLY-IF-ABS-NECESSARY as it will be very slow and also can hide
5032e651ea1SVineet Gupta	  potential bugs in code
5042e651ea1SVineet Gupta
505cfdbc2e1SVineet Guptaconfig HZ
506cfdbc2e1SVineet Gupta	int "Timer Frequency"
507cfdbc2e1SVineet Gupta	default 100
508cfdbc2e1SVineet Gupta
509cbe056f7SVineet Guptaconfig ARC_METAWARE_HLINK
510cbe056f7SVineet Gupta	bool "Support for Metaware debugger assisted Host access"
511cbe056f7SVineet Gupta	help
512cbe056f7SVineet Gupta	  This options allows a Linux userland apps to directly access
513cbe056f7SVineet Gupta	  host file system (open/creat/read/write etc) with help from
514cbe056f7SVineet Gupta	  Metaware Debugger. This can come in handy for Linux-host communication
515cbe056f7SVineet Gupta	  when there is no real usable peripheral such as EMAC.
516cbe056f7SVineet Gupta
517cfdbc2e1SVineet Guptamenuconfig ARC_DBG
518cfdbc2e1SVineet Gupta	bool "ARC debugging"
519cfdbc2e1SVineet Gupta	default y
520cfdbc2e1SVineet Gupta
521aa6083edSVineet Guptaif ARC_DBG
522aa6083edSVineet Gupta
523854a0d95SVineet Guptaconfig ARC_DW2_UNWIND
524854a0d95SVineet Gupta	bool "Enable DWARF specific kernel stack unwind"
525854a0d95SVineet Gupta	default y
526854a0d95SVineet Gupta	select KALLSYMS
527854a0d95SVineet Gupta	help
528854a0d95SVineet Gupta	  Compiles the kernel with DWARF unwind information and can be used
529854a0d95SVineet Gupta	  to get stack backtraces.
530854a0d95SVineet Gupta
531854a0d95SVineet Gupta	  If you say Y here the resulting kernel image will be slightly larger
532854a0d95SVineet Gupta	  but not slower, and it will give very useful debugging information.
533854a0d95SVineet Gupta	  If you don't debug the kernel, you can say N, but we may not be able
534854a0d95SVineet Gupta	  to solve problems without frame unwind information
535854a0d95SVineet Gupta
536f091d5a4SEugeniy Paltsevconfig ARC_DBG_JUMP_LABEL
537f091d5a4SEugeniy Paltsev	bool "Paranoid checks in Static Keys (jump labels) code"
538f091d5a4SEugeniy Paltsev	depends on JUMP_LABEL
539f091d5a4SEugeniy Paltsev	default y if STATIC_KEYS_SELFTEST
540f091d5a4SEugeniy Paltsev	help
541f091d5a4SEugeniy Paltsev	  Enable paranoid checks and self-test of both ARC-specific and generic
542f091d5a4SEugeniy Paltsev	  part of static keys (jump labels) related code.
543aa6083edSVineet Guptaendif
544aa6083edSVineet Gupta
545*3b7f793aSMasahiro Yamadaconfig BUILTIN_DTB_NAME
546999159a5SVineet Gupta	string "Built in DTB"
547*3b7f793aSMasahiro Yamada	default "nsim_700"
548999159a5SVineet Gupta	help
549*3b7f793aSMasahiro Yamada	  Set the name of the DTB to embed in the vmlinux binary.
550999159a5SVineet Gupta
551cfdbc2e1SVineet Guptaendmenu	 # "ARC Architecture Configuration"
552cfdbc2e1SVineet Gupta
5530192445cSZi Yanconfig ARCH_FORCE_MAX_ORDER
55437eda9dfSVineet Gupta	int "Maximum zone order"
55523baf831SKirill A. Shutemov	default "11" if ARC_HUGEPAGE_16M
55623baf831SKirill A. Shutemov	default "10"
55737eda9dfSVineet Gupta
558996bad6cSAlexey Brodkinsource "kernel/power/Kconfig"
559