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