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