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