linux/arch/arm/Kconfig
<<
>>
Prefs
   1config ARM
   2        bool
   3        default y
   4        select ARCH_HAVE_CUSTOM_GPIO_H
   5        select HAVE_AOUT
   6        select HAVE_DMA_API_DEBUG
   7        select HAVE_IDE if PCI || ISA || PCMCIA
   8        select HAVE_DMA_ATTRS
   9        select HAVE_DMA_CONTIGUOUS if MMU
  10        select HAVE_MEMBLOCK
  11        select RTC_LIB
  12        select SYS_SUPPORTS_APM_EMULATION
  13        select GENERIC_ATOMIC64 if (CPU_V6 || !CPU_32v6K || !AEABI)
  14        select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
  15        select HAVE_OPROFILE if (HAVE_PERF_EVENTS)
  16        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
  17        select HAVE_ARCH_KGDB
  18        select HAVE_ARCH_TRACEHOOK
  19        select HAVE_KPROBES if !XIP_KERNEL
  20        select HAVE_KRETPROBES if (HAVE_KPROBES)
  21        select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
  22        select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
  23        select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL)
  24        select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL)
  25        select ARCH_BINFMT_ELF_RANDOMIZE_PIE
  26        select HAVE_GENERIC_DMA_COHERENT
  27        select HAVE_KERNEL_GZIP
  28        select HAVE_KERNEL_LZO
  29        select HAVE_KERNEL_LZMA
  30        select HAVE_KERNEL_XZ
  31        select HAVE_IRQ_WORK
  32        select HAVE_PERF_EVENTS
  33        select PERF_USE_VMALLOC
  34        select HAVE_REGS_AND_STACK_ACCESS_API
  35        select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7))
  36        select HAVE_C_RECORDMCOUNT
  37        select HAVE_GENERIC_HARDIRQS
  38        select HARDIRQS_SW_RESEND
  39        select GENERIC_IRQ_PROBE
  40        select GENERIC_IRQ_SHOW
  41        select ARCH_WANT_IPC_PARSE_VERSION
  42        select HARDIRQS_SW_RESEND
  43        select CPU_PM if (SUSPEND || CPU_IDLE)
  44        select GENERIC_PCI_IOMAP
  45        select HAVE_BPF_JIT
  46        select GENERIC_SMP_IDLE_THREAD
  47        select KTIME_SCALAR
  48        select GENERIC_CLOCKEVENTS_BROADCAST if SMP
  49        select GENERIC_STRNCPY_FROM_USER
  50        select GENERIC_STRNLEN_USER
  51        select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN
  52        help
  53          The ARM series is a line of low-power-consumption RISC chip designs
  54          licensed by ARM Ltd and targeted at embedded applications and
  55          handhelds such as the Compaq IPAQ.  ARM-based PCs are no longer
  56          manufactured, but legacy ARM-based PC hardware remains popular in
  57          Europe.  There is an ARM Linux project with a web page at
  58          <http://www.arm.linux.org.uk/>.
  59
  60config ARM_HAS_SG_CHAIN
  61        bool
  62
  63config NEED_SG_DMA_LENGTH
  64        bool
  65
  66config ARM_DMA_USE_IOMMU
  67        select NEED_SG_DMA_LENGTH
  68        select ARM_HAS_SG_CHAIN
  69        bool
  70
  71config HAVE_PWM
  72        bool
  73
  74config MIGHT_HAVE_PCI
  75        bool
  76
  77config SYS_SUPPORTS_APM_EMULATION
  78        bool
  79
  80config GENERIC_GPIO
  81        bool
  82
  83config HAVE_TCM
  84        bool
  85        select GENERIC_ALLOCATOR
  86
  87config HAVE_PROC_CPU
  88        bool
  89
  90config NO_IOPORT
  91        bool
  92
  93config EISA
  94        bool
  95        ---help---
  96          The Extended Industry Standard Architecture (EISA) bus was
  97          developed as an open alternative to the IBM MicroChannel bus.
  98
  99          The EISA bus provided some of the features of the IBM MicroChannel
 100          bus while maintaining backward compatibility with cards made for
 101          the older ISA bus.  The EISA bus saw limited use between 1988 and
 102          1995 when it was made obsolete by the PCI bus.
 103
 104          Say Y here if you are building a kernel for an EISA-based machine.
 105
 106          Otherwise, say N.
 107
 108config SBUS
 109        bool
 110
 111config STACKTRACE_SUPPORT
 112        bool
 113        default y
 114
 115config HAVE_LATENCYTOP_SUPPORT
 116        bool
 117        depends on !SMP
 118        default y
 119
 120config LOCKDEP_SUPPORT
 121        bool
 122        default y
 123
 124config TRACE_IRQFLAGS_SUPPORT
 125        bool
 126        default y
 127
 128config RWSEM_GENERIC_SPINLOCK
 129        bool
 130        default y
 131
 132config RWSEM_XCHGADD_ALGORITHM
 133        bool
 134
 135config ARCH_HAS_ILOG2_U32
 136        bool
 137
 138config ARCH_HAS_ILOG2_U64
 139        bool
 140
 141config ARCH_HAS_CPUFREQ
 142        bool
 143        help
 144          Internal node to signify that the ARCH has CPUFREQ support
 145          and that the relevant menu configurations are displayed for
 146          it.
 147
 148config GENERIC_HWEIGHT
 149        bool
 150        default y
 151
 152config GENERIC_CALIBRATE_DELAY
 153        bool
 154        default y
 155
 156config ARCH_MAY_HAVE_PC_FDC
 157        bool
 158
 159config ZONE_DMA
 160        bool
 161
 162config NEED_DMA_MAP_STATE
 163       def_bool y
 164
 165config ARCH_HAS_DMA_SET_COHERENT_MASK
 166        bool
 167
 168config GENERIC_ISA_DMA
 169        bool
 170
 171config FIQ
 172        bool
 173
 174config NEED_RET_TO_USER
 175        bool
 176
 177config ARCH_MTD_XIP
 178        bool
 179
 180config VECTORS_BASE
 181        hex
 182        default 0xffff0000 if MMU || CPU_HIGH_VECTOR
 183        default DRAM_BASE if REMAP_VECTORS_TO_RAM
 184        default 0x00000000
 185        help
 186          The base address of exception vectors.
 187
 188config ARM_PATCH_PHYS_VIRT
 189        bool "Patch physical to virtual translations at runtime" if EMBEDDED
 190        default y
 191        depends on !XIP_KERNEL && MMU
 192        depends on !ARCH_REALVIEW || !SPARSEMEM
 193        help
 194          Patch phys-to-virt and virt-to-phys translation functions at
 195          boot and module load time according to the position of the
 196          kernel in system memory.
 197
 198          This can only be used with non-XIP MMU kernels where the base
 199          of physical memory is at a 16MB boundary.
 200
 201          Only disable this option if you know that you do not require
 202          this feature (eg, building a kernel for a single machine) and
 203          you need to shrink the kernel to the minimal size.
 204
 205config NEED_MACH_IO_H
 206        bool
 207        help
 208          Select this when mach/io.h is required to provide special
 209          definitions for this platform.  The need for mach/io.h should
 210          be avoided when possible.
 211
 212config NEED_MACH_MEMORY_H
 213        bool
 214        help
 215          Select this when mach/memory.h is required to provide special
 216          definitions for this platform.  The need for mach/memory.h should
 217          be avoided when possible.
 218
 219config PHYS_OFFSET
 220        hex "Physical address of main memory" if MMU
 221        depends on !ARM_PATCH_PHYS_VIRT && !NEED_MACH_MEMORY_H
 222        default DRAM_BASE if !MMU
 223        help
 224          Please provide the physical address corresponding to the
 225          location of main memory in your system.
 226
 227config GENERIC_BUG
 228        def_bool y
 229        depends on BUG
 230
 231source "init/Kconfig"
 232
 233source "kernel/Kconfig.freezer"
 234
 235menu "System Type"
 236
 237config MMU
 238        bool "MMU-based Paged Memory Management Support"
 239        default y
 240        help
 241          Select if you want MMU-based virtualised addressing space
 242          support by paged memory management. If unsure, say 'Y'.
 243
 244#
 245# The "ARM system type" choice list is ordered alphabetically by option
 246# text.  Please add new entries in the option alphabetic order.
 247#
 248choice
 249        prompt "ARM system type"
 250        default ARCH_VERSATILE
 251
 252config ARCH_SOCFPGA
 253        bool "Altera SOCFPGA family"
 254        select ARCH_WANT_OPTIONAL_GPIOLIB
 255        select ARM_AMBA
 256        select ARM_GIC
 257        select CACHE_L2X0
 258        select CLKDEV_LOOKUP
 259        select COMMON_CLK
 260        select CPU_V7
 261        select DW_APB_TIMER
 262        select DW_APB_TIMER_OF
 263        select GENERIC_CLOCKEVENTS
 264        select GPIO_PL061 if GPIOLIB
 265        select HAVE_ARM_SCU
 266        select SPARSE_IRQ
 267        select USE_OF
 268        help
 269          This enables support for Altera SOCFPGA Cyclone V platform
 270
 271config ARCH_INTEGRATOR
 272        bool "ARM Ltd. Integrator family"
 273        select ARM_AMBA
 274        select ARCH_HAS_CPUFREQ
 275        select COMMON_CLK
 276        select CLK_VERSATILE
 277        select HAVE_TCM
 278        select ICST
 279        select GENERIC_CLOCKEVENTS
 280        select PLAT_VERSATILE
 281        select PLAT_VERSATILE_FPGA_IRQ
 282        select NEED_MACH_IO_H
 283        select NEED_MACH_MEMORY_H
 284        select SPARSE_IRQ
 285        select MULTI_IRQ_HANDLER
 286        help
 287          Support for ARM's Integrator platform.
 288
 289config ARCH_REALVIEW
 290        bool "ARM Ltd. RealView family"
 291        select ARM_AMBA
 292        select CLKDEV_LOOKUP
 293        select HAVE_MACH_CLKDEV
 294        select ICST
 295        select GENERIC_CLOCKEVENTS
 296        select ARCH_WANT_OPTIONAL_GPIOLIB
 297        select PLAT_VERSATILE
 298        select PLAT_VERSATILE_CLOCK
 299        select PLAT_VERSATILE_CLCD
 300        select ARM_TIMER_SP804
 301        select GPIO_PL061 if GPIOLIB
 302        select NEED_MACH_MEMORY_H
 303        help
 304          This enables support for ARM Ltd RealView boards.
 305
 306config ARCH_VERSATILE
 307        bool "ARM Ltd. Versatile family"
 308        select ARM_AMBA
 309        select ARM_VIC
 310        select CLKDEV_LOOKUP
 311        select HAVE_MACH_CLKDEV
 312        select ICST
 313        select GENERIC_CLOCKEVENTS
 314        select ARCH_WANT_OPTIONAL_GPIOLIB
 315        select NEED_MACH_IO_H if PCI
 316        select PLAT_VERSATILE
 317        select PLAT_VERSATILE_CLOCK
 318        select PLAT_VERSATILE_CLCD
 319        select PLAT_VERSATILE_FPGA_IRQ
 320        select ARM_TIMER_SP804
 321        help
 322          This enables support for ARM Ltd Versatile board.
 323
 324config ARCH_VEXPRESS
 325        bool "ARM Ltd. Versatile Express family"
 326        select ARCH_WANT_OPTIONAL_GPIOLIB
 327        select ARM_AMBA
 328        select ARM_TIMER_SP804
 329        select CLKDEV_LOOKUP
 330        select COMMON_CLK
 331        select GENERIC_CLOCKEVENTS
 332        select HAVE_CLK
 333        select HAVE_PATA_PLATFORM
 334        select ICST
 335        select NO_IOPORT
 336        select PLAT_VERSATILE
 337        select PLAT_VERSATILE_CLCD
 338        select REGULATOR_FIXED_VOLTAGE if REGULATOR
 339        help
 340          This enables support for the ARM Ltd Versatile Express boards.
 341
 342config ARCH_AT91
 343        bool "Atmel AT91"
 344        select ARCH_REQUIRE_GPIOLIB
 345        select HAVE_CLK
 346        select CLKDEV_LOOKUP
 347        select IRQ_DOMAIN
 348        select NEED_MACH_IO_H if PCCARD
 349        help
 350          This enables support for systems based on Atmel
 351          AT91RM9200 and AT91SAM9* processors.
 352
 353config ARCH_BCMRING
 354        bool "Broadcom BCMRING"
 355        depends on MMU
 356        select CPU_V6
 357        select ARM_AMBA
 358        select ARM_TIMER_SP804
 359        select CLKDEV_LOOKUP
 360        select GENERIC_CLOCKEVENTS
 361        select ARCH_WANT_OPTIONAL_GPIOLIB
 362        help
 363          Support for Broadcom's BCMRing platform.
 364
 365config ARCH_HIGHBANK
 366        bool "Calxeda Highbank-based"
 367        select ARCH_WANT_OPTIONAL_GPIOLIB
 368        select ARM_AMBA
 369        select ARM_GIC
 370        select ARM_TIMER_SP804
 371        select CACHE_L2X0
 372        select CLKDEV_LOOKUP
 373        select COMMON_CLK
 374        select CPU_V7
 375        select GENERIC_CLOCKEVENTS
 376        select HAVE_ARM_SCU
 377        select HAVE_SMP
 378        select SPARSE_IRQ
 379        select USE_OF
 380        help
 381          Support for the Calxeda Highbank SoC based boards.
 382
 383config ARCH_CLPS711X
 384        bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
 385        select CPU_ARM720T
 386        select ARCH_USES_GETTIMEOFFSET
 387        select NEED_MACH_MEMORY_H
 388        help
 389          Support for Cirrus Logic 711x/721x/731x based boards.
 390
 391config ARCH_CNS3XXX
 392        bool "Cavium Networks CNS3XXX family"
 393        select CPU_V6K
 394        select GENERIC_CLOCKEVENTS
 395        select ARM_GIC
 396        select MIGHT_HAVE_CACHE_L2X0
 397        select MIGHT_HAVE_PCI
 398        select PCI_DOMAINS if PCI
 399        help
 400          Support for Cavium Networks CNS3XXX platform.
 401
 402config ARCH_GEMINI
 403        bool "Cortina Systems Gemini"
 404        select CPU_FA526
 405        select ARCH_REQUIRE_GPIOLIB
 406        select ARCH_USES_GETTIMEOFFSET
 407        help
 408          Support for the Cortina Systems Gemini family SoCs
 409
 410config ARCH_PRIMA2
 411        bool "CSR SiRFSoC PRIMA2 ARM Cortex A9 Platform"
 412        select CPU_V7
 413        select NO_IOPORT
 414        select ARCH_REQUIRE_GPIOLIB
 415        select GENERIC_CLOCKEVENTS
 416        select CLKDEV_LOOKUP
 417        select GENERIC_IRQ_CHIP
 418        select MIGHT_HAVE_CACHE_L2X0
 419        select PINCTRL
 420        select PINCTRL_SIRF
 421        select USE_OF
 422        select ZONE_DMA
 423        help
 424          Support for CSR SiRFSoC ARM Cortex A9 Platform
 425
 426config ARCH_EBSA110
 427        bool "EBSA-110"
 428        select CPU_SA110
 429        select ISA
 430        select NO_IOPORT
 431        select ARCH_USES_GETTIMEOFFSET
 432        select NEED_MACH_IO_H
 433        select NEED_MACH_MEMORY_H
 434        help
 435          This is an evaluation board for the StrongARM processor available
 436          from Digital. It has limited hardware on-board, including an
 437          Ethernet interface, two PCMCIA sockets, two serial ports and a
 438          parallel port.
 439
 440config ARCH_EP93XX
 441        bool "EP93xx-based"
 442        select CPU_ARM920T
 443        select ARM_AMBA
 444        select ARM_VIC
 445        select CLKDEV_LOOKUP
 446        select ARCH_REQUIRE_GPIOLIB
 447        select ARCH_HAS_HOLES_MEMORYMODEL
 448        select ARCH_USES_GETTIMEOFFSET
 449        select NEED_MACH_MEMORY_H
 450        help
 451          This enables support for the Cirrus EP93xx series of CPUs.
 452
 453config ARCH_FOOTBRIDGE
 454        bool "FootBridge"
 455        select CPU_SA110
 456        select FOOTBRIDGE
 457        select GENERIC_CLOCKEVENTS
 458        select HAVE_IDE
 459        select NEED_MACH_IO_H
 460        select NEED_MACH_MEMORY_H
 461        help
 462          Support for systems based on the DC21285 companion chip
 463          ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
 464
 465config ARCH_MXC
 466        bool "Freescale MXC/iMX-based"
 467        select GENERIC_CLOCKEVENTS
 468        select ARCH_REQUIRE_GPIOLIB
 469        select CLKDEV_LOOKUP
 470        select CLKSRC_MMIO
 471        select GENERIC_IRQ_CHIP
 472        select MULTI_IRQ_HANDLER
 473        select SPARSE_IRQ
 474        select USE_OF
 475        help
 476          Support for Freescale MXC/iMX-based family of processors
 477
 478config ARCH_MXS
 479        bool "Freescale MXS-based"
 480        select GENERIC_CLOCKEVENTS
 481        select ARCH_REQUIRE_GPIOLIB
 482        select CLKDEV_LOOKUP
 483        select CLKSRC_MMIO
 484        select COMMON_CLK
 485        select HAVE_CLK_PREPARE
 486        select PINCTRL
 487        select USE_OF
 488        help
 489          Support for Freescale MXS-based family of processors
 490
 491config ARCH_NETX
 492        bool "Hilscher NetX based"
 493        select CLKSRC_MMIO
 494        select CPU_ARM926T
 495        select ARM_VIC
 496        select GENERIC_CLOCKEVENTS
 497        help
 498          This enables support for systems based on the Hilscher NetX Soc
 499
 500config ARCH_H720X
 501        bool "Hynix HMS720x-based"
 502        select CPU_ARM720T
 503        select ISA_DMA_API
 504        select ARCH_USES_GETTIMEOFFSET
 505        help
 506          This enables support for systems based on the Hynix HMS720x
 507
 508config ARCH_IOP13XX
 509        bool "IOP13xx-based"
 510        depends on MMU
 511        select CPU_XSC3
 512        select PLAT_IOP
 513        select PCI
 514        select ARCH_SUPPORTS_MSI
 515        select VMSPLIT_1G
 516        select NEED_MACH_IO_H
 517        select NEED_MACH_MEMORY_H
 518        select NEED_RET_TO_USER
 519        help
 520          Support for Intel's IOP13XX (XScale) family of processors.
 521
 522config ARCH_IOP32X
 523        bool "IOP32x-based"
 524        depends on MMU
 525        select CPU_XSCALE
 526        select NEED_MACH_IO_H
 527        select NEED_RET_TO_USER
 528        select PLAT_IOP
 529        select PCI
 530        select ARCH_REQUIRE_GPIOLIB
 531        help
 532          Support for Intel's 80219 and IOP32X (XScale) family of
 533          processors.
 534
 535config ARCH_IOP33X
 536        bool "IOP33x-based"
 537        depends on MMU
 538        select CPU_XSCALE
 539        select NEED_MACH_IO_H
 540        select NEED_RET_TO_USER
 541        select PLAT_IOP
 542        select PCI
 543        select ARCH_REQUIRE_GPIOLIB
 544        help
 545          Support for Intel's IOP33X (XScale) family of processors.
 546
 547config ARCH_IXP4XX
 548        bool "IXP4xx-based"
 549        depends on MMU
 550        select ARCH_HAS_DMA_SET_COHERENT_MASK
 551        select CLKSRC_MMIO
 552        select CPU_XSCALE
 553        select ARCH_REQUIRE_GPIOLIB
 554        select GENERIC_CLOCKEVENTS
 555        select MIGHT_HAVE_PCI
 556        select NEED_MACH_IO_H
 557        select DMABOUNCE if PCI
 558        help
 559          Support for Intel's IXP4XX (XScale) family of processors.
 560
 561config ARCH_MVEBU
 562        bool "Marvell SOCs with Device Tree support"
 563        select GENERIC_CLOCKEVENTS
 564        select MULTI_IRQ_HANDLER
 565        select SPARSE_IRQ
 566        select CLKSRC_MMIO
 567        select GENERIC_IRQ_CHIP
 568        select IRQ_DOMAIN
 569        select COMMON_CLK
 570        help
 571          Support for the Marvell SoC Family with device tree support
 572
 573config ARCH_DOVE
 574        bool "Marvell Dove"
 575        select CPU_V7
 576        select PCI
 577        select ARCH_REQUIRE_GPIOLIB
 578        select GENERIC_CLOCKEVENTS
 579        select NEED_MACH_IO_H
 580        select PLAT_ORION
 581        help
 582          Support for the Marvell Dove SoC 88AP510
 583
 584config ARCH_KIRKWOOD
 585        bool "Marvell Kirkwood"
 586        select CPU_FEROCEON
 587        select PCI
 588        select ARCH_REQUIRE_GPIOLIB
 589        select GENERIC_CLOCKEVENTS
 590        select NEED_MACH_IO_H
 591        select PLAT_ORION
 592        help
 593          Support for the following Marvell Kirkwood series SoCs:
 594          88F6180, 88F6192 and 88F6281.
 595
 596config ARCH_LPC32XX
 597        bool "NXP LPC32XX"
 598        select CLKSRC_MMIO
 599        select CPU_ARM926T
 600        select ARCH_REQUIRE_GPIOLIB
 601        select HAVE_IDE
 602        select ARM_AMBA
 603        select USB_ARCH_HAS_OHCI
 604        select CLKDEV_LOOKUP
 605        select GENERIC_CLOCKEVENTS
 606        select USE_OF
 607        select HAVE_PWM
 608        help
 609          Support for the NXP LPC32XX family of processors
 610
 611config ARCH_MV78XX0
 612        bool "Marvell MV78xx0"
 613        select CPU_FEROCEON
 614        select PCI
 615        select ARCH_REQUIRE_GPIOLIB
 616        select GENERIC_CLOCKEVENTS
 617        select NEED_MACH_IO_H
 618        select PLAT_ORION
 619        help
 620          Support for the following Marvell MV78xx0 series SoCs:
 621          MV781x0, MV782x0.
 622
 623config ARCH_ORION5X
 624        bool "Marvell Orion"
 625        depends on MMU
 626        select CPU_FEROCEON
 627        select PCI
 628        select ARCH_REQUIRE_GPIOLIB
 629        select GENERIC_CLOCKEVENTS
 630        select NEED_MACH_IO_H
 631        select PLAT_ORION
 632        help
 633          Support for the following Marvell Orion 5x series SoCs:
 634          Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
 635          Orion-2 (5281), Orion-1-90 (6183).
 636
 637config ARCH_MMP
 638        bool "Marvell PXA168/910/MMP2"
 639        depends on MMU
 640        select ARCH_REQUIRE_GPIOLIB
 641        select CLKDEV_LOOKUP
 642        select GENERIC_CLOCKEVENTS
 643        select GPIO_PXA
 644        select IRQ_DOMAIN
 645        select PLAT_PXA
 646        select SPARSE_IRQ
 647        select GENERIC_ALLOCATOR
 648        help
 649          Support for Marvell's PXA168/PXA910(MMP) and MMP2 processor line.
 650
 651config ARCH_KS8695
 652        bool "Micrel/Kendin KS8695"
 653        select CPU_ARM922T
 654        select ARCH_REQUIRE_GPIOLIB
 655        select ARCH_USES_GETTIMEOFFSET
 656        select NEED_MACH_MEMORY_H
 657        help
 658          Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based
 659          System-on-Chip devices.
 660
 661config ARCH_W90X900
 662        bool "Nuvoton W90X900 CPU"
 663        select CPU_ARM926T
 664        select ARCH_REQUIRE_GPIOLIB
 665        select CLKDEV_LOOKUP
 666        select CLKSRC_MMIO
 667        select GENERIC_CLOCKEVENTS
 668        help
 669          Support for Nuvoton (Winbond logic dept.) ARM9 processor,
 670          At present, the w90x900 has been renamed nuc900, regarding
 671          the ARM series product line, you can login the following
 672          link address to know more.
 673
 674          <http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/
 675                ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller>
 676
 677config ARCH_TEGRA
 678        bool "NVIDIA Tegra"
 679        select CLKDEV_LOOKUP
 680        select CLKSRC_MMIO
 681        select GENERIC_CLOCKEVENTS
 682        select GENERIC_GPIO
 683        select HAVE_CLK
 684        select HAVE_SMP
 685        select MIGHT_HAVE_CACHE_L2X0
 686        select NEED_MACH_IO_H if PCI
 687        select ARCH_HAS_CPUFREQ
 688        select USE_OF
 689        help
 690          This enables support for NVIDIA Tegra based systems (Tegra APX,
 691          Tegra 6xx and Tegra 2 series).
 692
 693config ARCH_PICOXCELL
 694        bool "Picochip picoXcell"
 695        select ARCH_REQUIRE_GPIOLIB
 696        select ARM_PATCH_PHYS_VIRT
 697        select ARM_VIC
 698        select CPU_V6K
 699        select DW_APB_TIMER
 700        select DW_APB_TIMER_OF
 701        select GENERIC_CLOCKEVENTS
 702        select GENERIC_GPIO
 703        select HAVE_TCM
 704        select NO_IOPORT
 705        select SPARSE_IRQ
 706        select USE_OF
 707        help
 708          This enables support for systems based on the Picochip picoXcell
 709          family of Femtocell devices.  The picoxcell support requires device tree
 710          for all boards.
 711
 712config ARCH_PNX4008
 713        bool "Philips Nexperia PNX4008 Mobile"
 714        select CPU_ARM926T
 715        select CLKDEV_LOOKUP
 716        select ARCH_USES_GETTIMEOFFSET
 717        help
 718          This enables support for Philips PNX4008 mobile platform.
 719
 720config ARCH_PXA
 721        bool "PXA2xx/PXA3xx-based"
 722        depends on MMU
 723        select ARCH_MTD_XIP
 724        select ARCH_HAS_CPUFREQ
 725        select CLKDEV_LOOKUP
 726        select CLKSRC_MMIO
 727        select ARCH_REQUIRE_GPIOLIB
 728        select GENERIC_CLOCKEVENTS
 729        select GPIO_PXA
 730        select PLAT_PXA
 731        select SPARSE_IRQ
 732        select AUTO_ZRELADDR
 733        select MULTI_IRQ_HANDLER
 734        select ARM_CPU_SUSPEND if PM
 735        select HAVE_IDE
 736        help
 737          Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
 738
 739config ARCH_MSM
 740        bool "Qualcomm MSM"
 741        select HAVE_CLK
 742        select GENERIC_CLOCKEVENTS
 743        select ARCH_REQUIRE_GPIOLIB
 744        select CLKDEV_LOOKUP
 745        help
 746          Support for Qualcomm MSM/QSD based systems.  This runs on the
 747          apps processor of the MSM/QSD and depends on a shared memory
 748          interface to the modem processor which runs the baseband
 749          stack and controls some vital subsystems
 750          (clock and power control, etc).
 751
 752config ARCH_SHMOBILE
 753        bool "Renesas SH-Mobile / R-Mobile"
 754        select HAVE_CLK
 755        select CLKDEV_LOOKUP
 756        select HAVE_MACH_CLKDEV
 757        select HAVE_SMP
 758        select GENERIC_CLOCKEVENTS
 759        select MIGHT_HAVE_CACHE_L2X0
 760        select NO_IOPORT
 761        select SPARSE_IRQ
 762        select MULTI_IRQ_HANDLER
 763        select PM_GENERIC_DOMAINS if PM
 764        select NEED_MACH_MEMORY_H
 765        help
 766          Support for Renesas's SH-Mobile and R-Mobile ARM platforms.
 767
 768config ARCH_RPC
 769        bool "RiscPC"
 770        select ARCH_ACORN
 771        select FIQ
 772        select ARCH_MAY_HAVE_PC_FDC
 773        select HAVE_PATA_PLATFORM
 774        select ISA_DMA_API
 775        select NO_IOPORT
 776        select ARCH_SPARSEMEM_ENABLE
 777        select ARCH_USES_GETTIMEOFFSET
 778        select HAVE_IDE
 779        select NEED_MACH_IO_H
 780        select NEED_MACH_MEMORY_H
 781        help
 782          On the Acorn Risc-PC, Linux can support the internal IDE disk and
 783          CD-ROM interface, serial and parallel port, and the floppy drive.
 784
 785config ARCH_SA1100
 786        bool "SA1100-based"
 787        select CLKSRC_MMIO
 788        select CPU_SA1100
 789        select ISA
 790        select ARCH_SPARSEMEM_ENABLE
 791        select ARCH_MTD_XIP
 792        select ARCH_HAS_CPUFREQ
 793        select CPU_FREQ
 794        select GENERIC_CLOCKEVENTS
 795        select CLKDEV_LOOKUP
 796        select ARCH_REQUIRE_GPIOLIB
 797        select HAVE_IDE
 798        select NEED_MACH_MEMORY_H
 799        select SPARSE_IRQ
 800        help
 801          Support for StrongARM 11x0 based boards.
 802
 803config ARCH_S3C24XX
 804        bool "Samsung S3C24XX SoCs"
 805        select GENERIC_GPIO
 806        select ARCH_HAS_CPUFREQ
 807        select HAVE_CLK
 808        select CLKDEV_LOOKUP
 809        select ARCH_USES_GETTIMEOFFSET
 810        select HAVE_S3C2410_I2C if I2C
 811        select HAVE_S3C_RTC if RTC_CLASS
 812        select HAVE_S3C2410_WATCHDOG if WATCHDOG
 813        select NEED_MACH_IO_H
 814        help
 815          Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443
 816          and S3C2450 SoCs based systems, such as the Simtec Electronics BAST
 817          (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or the
 818          Samsung SMDK2410 development board (and derivatives).
 819
 820config ARCH_S3C64XX
 821        bool "Samsung S3C64XX"
 822        select PLAT_SAMSUNG
 823        select CPU_V6
 824        select ARM_VIC
 825        select HAVE_CLK
 826        select HAVE_TCM
 827        select CLKDEV_LOOKUP
 828        select NO_IOPORT
 829        select ARCH_USES_GETTIMEOFFSET
 830        select ARCH_HAS_CPUFREQ
 831        select ARCH_REQUIRE_GPIOLIB
 832        select SAMSUNG_CLKSRC
 833        select SAMSUNG_IRQ_VIC_TIMER
 834        select S3C_GPIO_TRACK
 835        select S3C_DEV_NAND
 836        select USB_ARCH_HAS_OHCI
 837        select SAMSUNG_GPIOLIB_4BIT
 838        select HAVE_S3C2410_I2C if I2C
 839        select HAVE_S3C2410_WATCHDOG if WATCHDOG
 840        help
 841          Samsung S3C64XX series based systems
 842
 843config ARCH_S5P64X0
 844        bool "Samsung S5P6440 S5P6450"
 845        select CPU_V6
 846        select GENERIC_GPIO
 847        select HAVE_CLK
 848        select CLKDEV_LOOKUP
 849        select CLKSRC_MMIO
 850        select HAVE_S3C2410_WATCHDOG if WATCHDOG
 851        select GENERIC_CLOCKEVENTS
 852        select HAVE_S3C2410_I2C if I2C
 853        select HAVE_S3C_RTC if RTC_CLASS
 854        help
 855          Samsung S5P64X0 CPU based systems, such as the Samsung SMDK6440,
 856          SMDK6450.
 857
 858config ARCH_S5PC100
 859        bool "Samsung S5PC100"
 860        select GENERIC_GPIO
 861        select HAVE_CLK
 862        select CLKDEV_LOOKUP
 863        select CPU_V7
 864        select ARCH_USES_GETTIMEOFFSET
 865        select HAVE_S3C2410_I2C if I2C
 866        select HAVE_S3C_RTC if RTC_CLASS
 867        select HAVE_S3C2410_WATCHDOG if WATCHDOG
 868        help
 869          Samsung S5PC100 series based systems
 870
 871config ARCH_S5PV210
 872        bool "Samsung S5PV210/S5PC110"
 873        select CPU_V7
 874        select ARCH_SPARSEMEM_ENABLE
 875        select ARCH_HAS_HOLES_MEMORYMODEL
 876        select GENERIC_GPIO
 877        select HAVE_CLK
 878        select CLKDEV_LOOKUP
 879        select CLKSRC_MMIO
 880        select ARCH_HAS_CPUFREQ
 881        select GENERIC_CLOCKEVENTS
 882        select HAVE_S3C2410_I2C if I2C
 883        select HAVE_S3C_RTC if RTC_CLASS
 884        select HAVE_S3C2410_WATCHDOG if WATCHDOG
 885        select NEED_MACH_MEMORY_H
 886        help
 887          Samsung S5PV210/S5PC110 series based systems
 888
 889config ARCH_EXYNOS
 890        bool "SAMSUNG EXYNOS"
 891        select CPU_V7
 892        select ARCH_SPARSEMEM_ENABLE
 893        select ARCH_HAS_HOLES_MEMORYMODEL
 894        select GENERIC_GPIO
 895        select HAVE_CLK
 896        select CLKDEV_LOOKUP
 897        select ARCH_HAS_CPUFREQ
 898        select GENERIC_CLOCKEVENTS
 899        select HAVE_S3C_RTC if RTC_CLASS
 900        select HAVE_S3C2410_I2C if I2C
 901        select HAVE_S3C2410_WATCHDOG if WATCHDOG
 902        select NEED_MACH_MEMORY_H
 903        help
 904          Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
 905
 906config ARCH_SHARK
 907        bool "Shark"
 908        select CPU_SA110
 909        select ISA
 910        select ISA_DMA
 911        select ZONE_DMA
 912        select PCI
 913        select ARCH_USES_GETTIMEOFFSET
 914        select NEED_MACH_MEMORY_H
 915        select NEED_MACH_IO_H
 916        help
 917          Support for the StrongARM based Digital DNARD machine, also known
 918          as "Shark" (<http://www.shark-linux.de/shark.html>).
 919
 920config ARCH_U300
 921        bool "ST-Ericsson U300 Series"
 922        depends on MMU
 923        select CLKSRC_MMIO
 924        select CPU_ARM926T
 925        select HAVE_TCM
 926        select ARM_AMBA
 927        select ARM_PATCH_PHYS_VIRT
 928        select ARM_VIC
 929        select GENERIC_CLOCKEVENTS
 930        select CLKDEV_LOOKUP
 931        select COMMON_CLK
 932        select GENERIC_GPIO
 933        select ARCH_REQUIRE_GPIOLIB
 934        help
 935          Support for ST-Ericsson U300 series mobile platforms.
 936
 937config ARCH_U8500
 938        bool "ST-Ericsson U8500 Series"
 939        depends on MMU
 940        select CPU_V7
 941        select ARM_AMBA
 942        select GENERIC_CLOCKEVENTS
 943        select CLKDEV_LOOKUP
 944        select ARCH_REQUIRE_GPIOLIB
 945        select ARCH_HAS_CPUFREQ
 946        select HAVE_SMP
 947        select MIGHT_HAVE_CACHE_L2X0
 948        help
 949          Support for ST-Ericsson's Ux500 architecture
 950
 951config ARCH_NOMADIK
 952        bool "STMicroelectronics Nomadik"
 953        select ARM_AMBA
 954        select ARM_VIC
 955        select CPU_ARM926T
 956        select COMMON_CLK
 957        select GENERIC_CLOCKEVENTS
 958        select PINCTRL
 959        select MIGHT_HAVE_CACHE_L2X0
 960        select ARCH_REQUIRE_GPIOLIB
 961        help
 962          Support for the Nomadik platform by ST-Ericsson
 963
 964config ARCH_DAVINCI
 965        bool "TI DaVinci"
 966        select GENERIC_CLOCKEVENTS
 967        select ARCH_REQUIRE_GPIOLIB
 968        select ZONE_DMA
 969        select HAVE_IDE
 970        select CLKDEV_LOOKUP
 971        select GENERIC_ALLOCATOR
 972        select GENERIC_IRQ_CHIP
 973        select ARCH_HAS_HOLES_MEMORYMODEL
 974        help
 975          Support for TI's DaVinci platform.
 976
 977config ARCH_OMAP
 978        bool "TI OMAP"
 979        depends on MMU
 980        select HAVE_CLK
 981        select ARCH_REQUIRE_GPIOLIB
 982        select ARCH_HAS_CPUFREQ
 983        select CLKSRC_MMIO
 984        select GENERIC_CLOCKEVENTS
 985        select ARCH_HAS_HOLES_MEMORYMODEL
 986        help
 987          Support for TI's OMAP platform (OMAP1/2/3/4).
 988
 989config PLAT_SPEAR
 990        bool "ST SPEAr"
 991        select ARM_AMBA
 992        select ARCH_REQUIRE_GPIOLIB
 993        select CLKDEV_LOOKUP
 994        select COMMON_CLK
 995        select CLKSRC_MMIO
 996        select GENERIC_CLOCKEVENTS
 997        select HAVE_CLK
 998        help
 999          Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx).
1000
1001config ARCH_VT8500
1002        bool "VIA/WonderMedia 85xx"
1003        select CPU_ARM926T
1004        select GENERIC_GPIO
1005        select ARCH_HAS_CPUFREQ
1006        select GENERIC_CLOCKEVENTS
1007        select ARCH_REQUIRE_GPIOLIB
1008        help
1009          Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.
1010
1011config ARCH_ZYNQ
1012        bool "Xilinx Zynq ARM Cortex A9 Platform"
1013        select CPU_V7
1014        select GENERIC_CLOCKEVENTS
1015        select CLKDEV_LOOKUP
1016        select ARM_GIC
1017        select ARM_AMBA
1018        select ICST
1019        select MIGHT_HAVE_CACHE_L2X0
1020        select USE_OF
1021        help
1022          Support for Xilinx Zynq ARM Cortex A9 Platform
1023endchoice
1024
1025#
1026# This is sorted alphabetically by mach-* pathname.  However, plat-*
1027# Kconfigs may be included either alphabetically (according to the
1028# plat- suffix) or along side the corresponding mach-* source.
1029#
1030source "arch/arm/mach-mvebu/Kconfig"
1031
1032source "arch/arm/mach-at91/Kconfig"
1033
1034source "arch/arm/mach-bcmring/Kconfig"
1035
1036source "arch/arm/mach-clps711x/Kconfig"
1037
1038source "arch/arm/mach-cns3xxx/Kconfig"
1039
1040source "arch/arm/mach-davinci/Kconfig"
1041
1042source "arch/arm/mach-dove/Kconfig"
1043
1044source "arch/arm/mach-ep93xx/Kconfig"
1045
1046source "arch/arm/mach-footbridge/Kconfig"
1047
1048source "arch/arm/mach-gemini/Kconfig"
1049
1050source "arch/arm/mach-h720x/Kconfig"
1051
1052source "arch/arm/mach-integrator/Kconfig"
1053
1054source "arch/arm/mach-iop32x/Kconfig"
1055
1056source "arch/arm/mach-iop33x/Kconfig"
1057
1058source "arch/arm/mach-iop13xx/Kconfig"
1059
1060source "arch/arm/mach-ixp4xx/Kconfig"
1061
1062source "arch/arm/mach-kirkwood/Kconfig"
1063
1064source "arch/arm/mach-ks8695/Kconfig"
1065
1066source "arch/arm/mach-msm/Kconfig"
1067
1068source "arch/arm/mach-mv78xx0/Kconfig"
1069
1070source "arch/arm/plat-mxc/Kconfig"
1071
1072source "arch/arm/mach-mxs/Kconfig"
1073
1074source "arch/arm/mach-netx/Kconfig"
1075
1076source "arch/arm/mach-nomadik/Kconfig"
1077source "arch/arm/plat-nomadik/Kconfig"
1078
1079source "arch/arm/plat-omap/Kconfig"
1080
1081source "arch/arm/mach-omap1/Kconfig"
1082
1083source "arch/arm/mach-omap2/Kconfig"
1084
1085source "arch/arm/mach-orion5x/Kconfig"
1086
1087source "arch/arm/mach-pxa/Kconfig"
1088source "arch/arm/plat-pxa/Kconfig"
1089
1090source "arch/arm/mach-mmp/Kconfig"
1091
1092source "arch/arm/mach-realview/Kconfig"
1093
1094source "arch/arm/mach-sa1100/Kconfig"
1095
1096source "arch/arm/plat-samsung/Kconfig"
1097source "arch/arm/plat-s3c24xx/Kconfig"
1098
1099source "arch/arm/plat-spear/Kconfig"
1100
1101source "arch/arm/mach-s3c24xx/Kconfig"
1102if ARCH_S3C24XX
1103source "arch/arm/mach-s3c2412/Kconfig"
1104source "arch/arm/mach-s3c2440/Kconfig"
1105endif
1106
1107if ARCH_S3C64XX
1108source "arch/arm/mach-s3c64xx/Kconfig"
1109endif
1110
1111source "arch/arm/mach-s5p64x0/Kconfig"
1112
1113source "arch/arm/mach-s5pc100/Kconfig"
1114
1115source "arch/arm/mach-s5pv210/Kconfig"
1116
1117source "arch/arm/mach-exynos/Kconfig"
1118
1119source "arch/arm/mach-shmobile/Kconfig"
1120
1121source "arch/arm/mach-tegra/Kconfig"
1122
1123source "arch/arm/mach-u300/Kconfig"
1124
1125source "arch/arm/mach-ux500/Kconfig"
1126
1127source "arch/arm/mach-versatile/Kconfig"
1128
1129source "arch/arm/mach-vexpress/Kconfig"
1130source "arch/arm/plat-versatile/Kconfig"
1131
1132source "arch/arm/mach-vt8500/Kconfig"
1133
1134source "arch/arm/mach-w90x900/Kconfig"
1135
1136# Definitions to make life easier
1137config ARCH_ACORN
1138        bool
1139
1140config PLAT_IOP
1141        bool
1142        select GENERIC_CLOCKEVENTS
1143
1144config PLAT_ORION
1145        bool
1146        select CLKSRC_MMIO
1147        select GENERIC_IRQ_CHIP
1148        select IRQ_DOMAIN
1149        select COMMON_CLK
1150
1151config PLAT_PXA
1152        bool
1153
1154config PLAT_VERSATILE
1155        bool
1156
1157config ARM_TIMER_SP804
1158        bool
1159        select CLKSRC_MMIO
1160        select HAVE_SCHED_CLOCK
1161
1162source arch/arm/mm/Kconfig
1163
1164config ARM_NR_BANKS
1165        int
1166        default 16 if ARCH_EP93XX
1167        default 8
1168
1169config IWMMXT
1170        bool "Enable iWMMXt support"
1171        depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4
1172        default y if PXA27x || PXA3xx || PXA95x || ARCH_MMP
1173        help
1174          Enable support for iWMMXt context switching at run time if
1175          running on a CPU that supports it.
1176
1177config XSCALE_PMU
1178        bool
1179        depends on CPU_XSCALE
1180        default y
1181
1182config CPU_HAS_PMU
1183        depends on (CPU_V6 || CPU_V6K || CPU_V7 || XSCALE_PMU) && \
1184                   (!ARCH_OMAP3 || OMAP3_EMU)
1185        default y
1186        bool
1187
1188config MULTI_IRQ_HANDLER
1189        bool
1190        help
1191          Allow each machine to specify it's own IRQ handler at run time.
1192
1193if !MMU
1194source "arch/arm/Kconfig-nommu"
1195endif
1196
1197config ARM_ERRATA_326103
1198        bool "ARM errata: FSR write bit incorrect on a SWP to read-only memory"
1199        depends on CPU_V6
1200        help
1201          Executing a SWP instruction to read-only memory does not set bit 11
1202          of the FSR on the ARM 1136 prior to r1p0. This causes the kernel to
1203          treat the access as a read, preventing a COW from occurring and
1204          causing the faulting task to livelock.
1205
1206config ARM_ERRATA_411920
1207        bool "ARM errata: Invalidation of the Instruction Cache operation can fail"
1208        depends on CPU_V6 || CPU_V6K
1209        help
1210          Invalidation of the Instruction Cache operation can
1211          fail. This erratum is present in 1136 (before r1p4), 1156 and 1176.
1212          It does not affect the MPCore. This option enables the ARM Ltd.
1213          recommended workaround.
1214
1215config ARM_ERRATA_430973
1216        bool "ARM errata: Stale prediction on replaced interworking branch"
1217        depends on CPU_V7
1218        help
1219          This option enables the workaround for the 430973 Cortex-A8
1220          (r1p0..r1p2) erratum. If a code sequence containing an ARM/Thumb
1221          interworking branch is replaced with another code sequence at the
1222          same virtual address, whether due to self-modifying code or virtual
1223          to physical address re-mapping, Cortex-A8 does not recover from the
1224          stale interworking branch prediction. This results in Cortex-A8
1225          executing the new code sequence in the incorrect ARM or Thumb state.
1226          The workaround enables the BTB/BTAC operations by setting ACTLR.IBE
1227          and also flushes the branch target cache at every context switch.
1228          Note that setting specific bits in the ACTLR register may not be
1229          available in non-secure mode.
1230
1231config ARM_ERRATA_458693
1232        bool "ARM errata: Processor deadlock when a false hazard is created"
1233        depends on CPU_V7
1234        help
1235          This option enables the workaround for the 458693 Cortex-A8 (r2p0)
1236          erratum. For very specific sequences of memory operations, it is
1237          possible for a hazard condition intended for a cache line to instead
1238          be incorrectly associated with a different cache line. This false
1239          hazard might then cause a processor deadlock. The workaround enables
1240          the L1 caching of the NEON accesses and disables the PLD instruction
1241          in the ACTLR register. Note that setting specific bits in the ACTLR
1242          register may not be available in non-secure mode.
1243
1244config ARM_ERRATA_460075
1245        bool "ARM errata: Data written to the L2 cache can be overwritten with stale data"
1246        depends on CPU_V7
1247        help
1248          This option enables the workaround for the 460075 Cortex-A8 (r2p0)
1249          erratum. Any asynchronous access to the L2 cache may encounter a
1250          situation in which recent store transactions to the L2 cache are lost
1251          and overwritten with stale memory contents from external memory. The
1252          workaround disables the write-allocate mode for the L2 cache via the
1253          ACTLR register. Note that setting specific bits in the ACTLR register
1254          may not be available in non-secure mode.
1255
1256config ARM_ERRATA_742230
1257        bool "ARM errata: DMB operation may be faulty"
1258        depends on CPU_V7 && SMP
1259        help
1260          This option enables the workaround for the 742230 Cortex-A9
1261          (r1p0..r2p2) erratum. Under rare circumstances, a DMB instruction
1262          between two write operations may not ensure the correct visibility
1263          ordering of the two writes. This workaround sets a specific bit in
1264          the diagnostic register of the Cortex-A9 which causes the DMB
1265          instruction to behave as a DSB, ensuring the correct behaviour of
1266          the two writes.
1267
1268config ARM_ERRATA_742231
1269        bool "ARM errata: Incorrect hazard handling in the SCU may lead to data corruption"
1270        depends on CPU_V7 && SMP
1271        help
1272          This option enables the workaround for the 742231 Cortex-A9
1273          (r2p0..r2p2) erratum. Under certain conditions, specific to the
1274          Cortex-A9 MPCore micro-architecture, two CPUs working in SMP mode,
1275          accessing some data located in the same cache line, may get corrupted
1276          data due to bad handling of the address hazard when the line gets
1277          replaced from one of the CPUs at the same time as another CPU is
1278          accessing it. This workaround sets specific bits in the diagnostic
1279          register of the Cortex-A9 which reduces the linefill issuing
1280          capabilities of the processor.
1281
1282config PL310_ERRATA_588369
1283        bool "PL310 errata: Clean & Invalidate maintenance operations do not invalidate clean lines"
1284        depends on CACHE_L2X0
1285        help
1286           The PL310 L2 cache controller implements three types of Clean &
1287           Invalidate maintenance operations: by Physical Address
1288           (offset 0x7F0), by Index/Way (0x7F8) and by Way (0x7FC).
1289           They are architecturally defined to behave as the execution of a
1290           clean operation followed immediately by an invalidate operation,
1291           both performing to the same memory location. This functionality
1292           is not correctly implemented in PL310 as clean lines are not
1293           invalidated as a result of these operations.
1294
1295config ARM_ERRATA_720789
1296        bool "ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID"
1297        depends on CPU_V7
1298        help
1299          This option enables the workaround for the 720789 Cortex-A9 (prior to
1300          r2p0) erratum. A faulty ASID can be sent to the other CPUs for the
1301          broadcasted CP15 TLB maintenance operations TLBIASIDIS and TLBIMVAIS.
1302          As a consequence of this erratum, some TLB entries which should be
1303          invalidated are not, resulting in an incoherency in the system page
1304          tables. The workaround changes the TLB flushing routines to invalidate
1305          entries regardless of the ASID.
1306
1307config PL310_ERRATA_727915
1308        bool "PL310 errata: Background Clean & Invalidate by Way operation can cause data corruption"
1309        depends on CACHE_L2X0
1310        help
1311          PL310 implements the Clean & Invalidate by Way L2 cache maintenance
1312          operation (offset 0x7FC). This operation runs in background so that
1313          PL310 can handle normal accesses while it is in progress. Under very
1314          rare circumstances, due to this erratum, write data can be lost when
1315          PL310 treats a cacheable write transaction during a Clean &
1316          Invalidate by Way operation.
1317
1318config ARM_ERRATA_743622
1319        bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption"
1320        depends on CPU_V7
1321        help
1322          This option enables the workaround for the 743622 Cortex-A9
1323          (r2p*) erratum. Under very rare conditions, a faulty
1324          optimisation in the Cortex-A9 Store Buffer may lead to data
1325          corruption. This workaround sets a specific bit in the diagnostic
1326          register of the Cortex-A9 which disables the Store Buffer
1327          optimisation, preventing the defect from occurring. This has no
1328          visible impact on the overall performance or power consumption of the
1329          processor.
1330
1331config ARM_ERRATA_751472
1332        bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation"
1333        depends on CPU_V7
1334        help
1335          This option enables the workaround for the 751472 Cortex-A9 (prior
1336          to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the
1337          completion of a following broadcasted operation if the second
1338          operation is received by a CPU before the ICIALLUIS has completed,
1339          potentially leading to corrupted entries in the cache or TLB.
1340
1341config PL310_ERRATA_753970
1342        bool "PL310 errata: cache sync operation may be faulty"
1343        depends on CACHE_PL310
1344        help
1345          This option enables the workaround for the 753970 PL310 (r3p0) erratum.
1346
1347          Under some condition the effect of cache sync operation on
1348          the store buffer still remains when the operation completes.
1349          This means that the store buffer is always asked to drain and
1350          this prevents it from merging any further writes. The workaround
1351          is to replace the normal offset of cache sync operation (0x730)
1352          by another offset targeting an unmapped PL310 register 0x740.
1353          This has the same effect as the cache sync operation: store buffer
1354          drain and waiting for all buffers empty.
1355
1356config ARM_ERRATA_754322
1357        bool "ARM errata: possible faulty MMU translations following an ASID switch"
1358        depends on CPU_V7
1359        help
1360          This option enables the workaround for the 754322 Cortex-A9 (r2p*,
1361          r3p*) erratum. A speculative memory access may cause a page table walk
1362          which starts prior to an ASID switch but completes afterwards. This
1363          can populate the micro-TLB with a stale entry which may be hit with
1364          the new ASID. This workaround places two dsb instructions in the mm
1365          switching code so that no page table walks can cross the ASID switch.
1366
1367config ARM_ERRATA_754327
1368        bool "ARM errata: no automatic Store Buffer drain"
1369        depends on CPU_V7 && SMP
1370        help
1371          This option enables the workaround for the 754327 Cortex-A9 (prior to
1372          r2p0) erratum. The Store Buffer does not have any automatic draining
1373          mechanism and therefore a livelock may occur if an external agent
1374          continuously polls a memory location waiting to observe an update.
1375          This workaround defines cpu_relax() as smp_mb(), preventing correctly
1376          written polling loops from denying visibility of updates to memory.
1377
1378config ARM_ERRATA_364296
1379        bool "ARM errata: Possible cache data corruption with hit-under-miss enabled"
1380        depends on CPU_V6 && !SMP
1381        help
1382          This options enables the workaround for the 364296 ARM1136
1383          r0p2 erratum (possible cache data corruption with
1384          hit-under-miss enabled). It sets the undocumented bit 31 in
1385          the auxiliary control register and the FI bit in the control
1386          register, thus disabling hit-under-miss without putting the
1387          processor into full low interrupt latency mode. ARM11MPCore
1388          is not affected.
1389
1390config ARM_ERRATA_764369
1391        bool "ARM errata: Data cache line maintenance operation by MVA may not succeed"
1392        depends on CPU_V7 && SMP
1393        help
1394          This option enables the workaround for erratum 764369
1395          affecting Cortex-A9 MPCore with two or more processors (all
1396          current revisions). Under certain timing circumstances, a data
1397          cache line maintenance operation by MVA targeting an Inner
1398          Shareable memory region may fail to proceed up to either the
1399          Point of Coherency or to the Point of Unification of the
1400          system. This workaround adds a DSB instruction before the
1401          relevant cache maintenance functions and sets a specific bit
1402          in the diagnostic control register of the SCU.
1403
1404config PL310_ERRATA_769419
1405        bool "PL310 errata: no automatic Store Buffer drain"
1406        depends on CACHE_L2X0
1407        help
1408          On revisions of the PL310 prior to r3p2, the Store Buffer does
1409          not automatically drain. This can cause normal, non-cacheable
1410          writes to be retained when the memory system is idle, leading
1411          to suboptimal I/O performance for drivers using coherent DMA.
1412          This option adds a write barrier to the cpu_idle loop so that,
1413          on systems with an outer cache, the store buffer is drained
1414          explicitly.
1415
1416endmenu
1417
1418source "arch/arm/common/Kconfig"
1419
1420menu "Bus support"
1421
1422config ARM_AMBA
1423        bool
1424
1425config ISA
1426        bool
1427        help
1428          Find out whether you have ISA slots on your motherboard.  ISA is the
1429          name of a bus system, i.e. the way the CPU talks to the other stuff
1430          inside your box.  Other bus systems are PCI, EISA, MicroChannel
1431          (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
1432          newer boards don't support it.  If you have ISA, say Y, otherwise N.
1433
1434# Select ISA DMA controller support
1435config ISA_DMA
1436        bool
1437        select ISA_DMA_API
1438
1439# Select ISA DMA interface
1440config ISA_DMA_API
1441        bool
1442
1443config PCI
1444        bool "PCI support" if MIGHT_HAVE_PCI
1445        help
1446          Find out whether you have a PCI motherboard. PCI is the name of a
1447          bus system, i.e. the way the CPU talks to the other stuff inside
1448          your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
1449          VESA. If you have PCI, say Y, otherwise N.
1450
1451config PCI_DOMAINS
1452        bool
1453        depends on PCI
1454
1455config PCI_NANOENGINE
1456        bool "BSE nanoEngine PCI support"
1457        depends on SA1100_NANOENGINE
1458        help
1459          Enable PCI on the BSE nanoEngine board.
1460
1461config PCI_SYSCALL
1462        def_bool PCI
1463
1464# Select the host bridge type
1465config PCI_HOST_VIA82C505
1466        bool
1467        depends on PCI && ARCH_SHARK
1468        default y
1469
1470config PCI_HOST_ITE8152
1471        bool
1472        depends on PCI && MACH_ARMCORE
1473        default y
1474        select DMABOUNCE
1475
1476source "drivers/pci/Kconfig"
1477
1478source "drivers/pcmcia/Kconfig"
1479
1480endmenu
1481
1482menu "Kernel Features"
1483
1484config HAVE_SMP
1485        bool
1486        help
1487          This option should be selected by machines which have an SMP-
1488          capable CPU.
1489
1490          The only effect of this option is to make the SMP-related
1491          options available to the user for configuration.
1492
1493config SMP
1494        bool "Symmetric Multi-Processing"
1495        depends on CPU_V6K || CPU_V7
1496        depends on GENERIC_CLOCKEVENTS
1497        depends on HAVE_SMP
1498        depends on MMU
1499        select USE_GENERIC_SMP_HELPERS
1500        select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP
1501        help
1502          This enables support for systems with more than one CPU. If you have
1503          a system with only one CPU, like most personal computers, say N. If
1504          you have a system with more than one CPU, say Y.
1505
1506          If you say N here, the kernel will run on single and multiprocessor
1507          machines, but will use only one CPU of a multiprocessor machine. If
1508          you say Y here, the kernel will run on many, but not all, single
1509          processor machines. On a single processor machine, the kernel will
1510          run faster if you say N here.
1511
1512          See also <file:Documentation/x86/i386/IO-APIC.txt>,
1513          <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
1514          <http://tldp.org/HOWTO/SMP-HOWTO.html>.
1515
1516          If you don't know what to do here, say N.
1517
1518config SMP_ON_UP
1519        bool "Allow booting SMP kernel on uniprocessor systems (EXPERIMENTAL)"
1520        depends on EXPERIMENTAL
1521        depends on SMP && !XIP_KERNEL
1522        default y
1523        help
1524          SMP kernels contain instructions which fail on non-SMP processors.
1525          Enabling this option allows the kernel to modify itself to make
1526          these instructions safe.  Disabling it allows about 1K of space
1527          savings.
1528
1529          If you don't know what to do here, say Y.
1530
1531config ARM_CPU_TOPOLOGY
1532        bool "Support cpu topology definition"
1533        depends on SMP && CPU_V7
1534        default y
1535        help
1536          Support ARM cpu topology definition. The MPIDR register defines
1537          affinity between processors which is then used to describe the cpu
1538          topology of an ARM System.
1539
1540config SCHED_MC
1541        bool "Multi-core scheduler support"
1542        depends on ARM_CPU_TOPOLOGY
1543        help
1544          Multi-core scheduler support improves the CPU scheduler's decision
1545          making when dealing with multi-core CPU chips at a cost of slightly
1546          increased overhead in some places. If unsure say N here.
1547
1548config SCHED_SMT
1549        bool "SMT scheduler support"
1550        depends on ARM_CPU_TOPOLOGY
1551        help
1552          Improves the CPU scheduler's decision making when dealing with
1553          MultiThreading at a cost of slightly increased overhead in some
1554          places. If unsure say N here.
1555
1556config HAVE_ARM_SCU
1557        bool
1558        help
1559          This option enables support for the ARM system coherency unit
1560
1561config ARM_ARCH_TIMER
1562        bool "Architected timer support"
1563        depends on CPU_V7
1564        help
1565          This option enables support for the ARM architected timer
1566
1567config HAVE_ARM_TWD
1568        bool
1569        depends on SMP
1570        help
1571          This options enables support for the ARM timer and watchdog unit
1572
1573choice
1574        prompt "Memory split"
1575        default VMSPLIT_3G
1576        help
1577          Select the desired split between kernel and user memory.
1578
1579          If you are not absolutely sure what you are doing, leave this
1580          option alone!
1581
1582        config VMSPLIT_3G
1583                bool "3G/1G user/kernel split"
1584        config VMSPLIT_2G
1585                bool "2G/2G user/kernel split"
1586        config VMSPLIT_1G
1587                bool "1G/3G user/kernel split"
1588endchoice
1589
1590config PAGE_OFFSET
1591        hex
1592        default 0x40000000 if VMSPLIT_1G
1593        default 0x80000000 if VMSPLIT_2G
1594        default 0xC0000000
1595
1596config NR_CPUS
1597        int "Maximum number of CPUs (2-32)"
1598        range 2 32
1599        depends on SMP
1600        default "4"
1601
1602config HOTPLUG_CPU
1603        bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
1604        depends on SMP && HOTPLUG && EXPERIMENTAL
1605        help
1606          Say Y here to experiment with turning CPUs off and on.  CPUs
1607          can be controlled through /sys/devices/system/cpu.
1608
1609config LOCAL_TIMERS
1610        bool "Use local timer interrupts"
1611        depends on SMP
1612        default y
1613        select HAVE_ARM_TWD if (!ARCH_MSM_SCORPIONMP && !EXYNOS4_MCT)
1614        help
1615          Enable support for local timers on SMP platforms, rather then the
1616          legacy IPI broadcast method.  Local timers allows the system
1617          accounting to be spread across the timer interval, preventing a
1618          "thundering herd" at every timer tick.
1619
1620config ARCH_NR_GPIO
1621        int
1622        default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
1623        default 355 if ARCH_U8500
1624        default 264 if MACH_H4700
1625        default 512 if SOC_OMAP5
1626        default 0
1627        help
1628          Maximum number of GPIOs in the system.
1629
1630          If unsure, leave the default value.
1631
1632source kernel/Kconfig.preempt
1633
1634config HZ
1635        int
1636        default 200 if ARCH_EBSA110 || ARCH_S3C24XX || ARCH_S5P64X0 || \
1637                ARCH_S5PV210 || ARCH_EXYNOS4
1638        default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
1639        default AT91_TIMER_HZ if ARCH_AT91
1640        default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
1641        default 100
1642
1643config THUMB2_KERNEL
1644        bool "Compile the kernel in Thumb-2 mode (EXPERIMENTAL)"
1645        depends on CPU_V7 && !CPU_V6 && !CPU_V6K && EXPERIMENTAL
1646        select AEABI
1647        select ARM_ASM_UNIFIED
1648        select ARM_UNWIND
1649        help
1650          By enabling this option, the kernel will be compiled in
1651          Thumb-2 mode. A compiler/assembler that understand the unified
1652          ARM-Thumb syntax is needed.
1653
1654          If unsure, say N.
1655
1656config THUMB2_AVOID_R_ARM_THM_JUMP11
1657        bool "Work around buggy Thumb-2 short branch relocations in gas"
1658        depends on THUMB2_KERNEL && MODULES
1659        default y
1660        help
1661          Various binutils versions can resolve Thumb-2 branches to
1662          locally-defined, preemptible global symbols as short-range "b.n"
1663          branch instructions.
1664
1665          This is a problem, because there's no guarantee the final
1666          destination of the symbol, or any candidate locations for a
1667          trampoline, are within range of the branch.  For this reason, the
1668          kernel does not support fixing up the R_ARM_THM_JUMP11 (102)
1669          relocation in modules at all, and it makes little sense to add
1670          support.
1671
1672          The symptom is that the kernel fails with an "unsupported
1673          relocation" error when loading some modules.
1674
1675          Until fixed tools are available, passing
1676          -fno-optimize-sibling-calls to gcc should prevent gcc generating
1677          code which hits this problem, at the cost of a bit of extra runtime
1678          stack usage in some cases.
1679
1680          The problem is described in more detail at:
1681              https://bugs.launchpad.net/binutils-linaro/+bug/725126
1682
1683          Only Thumb-2 kernels are affected.
1684
1685          Unless you are sure your tools don't have this problem, say Y.
1686
1687config ARM_ASM_UNIFIED
1688        bool
1689
1690config AEABI
1691        bool "Use the ARM EABI to compile the kernel"
1692        help
1693          This option allows for the kernel to be compiled using the latest
1694          ARM ABI (aka EABI).  This is only useful if you are using a user
1695          space environment that is also compiled with EABI.
1696
1697          Since there are major incompatibilities between the legacy ABI and
1698          EABI, especially with regard to structure member alignment, this
1699          option also changes the kernel syscall calling convention to
1700          disambiguate both ABIs and allow for backward compatibility support
1701          (selected with CONFIG_OABI_COMPAT).
1702
1703          To use this you need GCC version 4.0.0 or later.
1704
1705config OABI_COMPAT
1706        bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)"
1707        depends on AEABI && EXPERIMENTAL && !THUMB2_KERNEL
1708        default y
1709        help
1710          This option preserves the old syscall interface along with the
1711          new (ARM EABI) one. It also provides a compatibility layer to
1712          intercept syscalls that have structure arguments which layout
1713          in memory differs between the legacy ABI and the new ARM EABI
1714          (only for non "thumb" binaries). This option adds a tiny
1715          overhead to all syscalls and produces a slightly larger kernel.
1716          If you know you'll be using only pure EABI user space then you
1717          can say N here. If this option is not selected and you attempt
1718          to execute a legacy ABI binary then the result will be
1719          UNPREDICTABLE (in fact it can be predicted that it won't work
1720          at all). If in doubt say Y.
1721
1722config ARCH_HAS_HOLES_MEMORYMODEL
1723        bool
1724
1725config ARCH_SPARSEMEM_ENABLE
1726        bool
1727
1728config ARCH_SPARSEMEM_DEFAULT
1729        def_bool ARCH_SPARSEMEM_ENABLE
1730
1731config ARCH_SELECT_MEMORY_MODEL
1732        def_bool ARCH_SPARSEMEM_ENABLE
1733
1734config HAVE_ARCH_PFN_VALID
1735        def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
1736
1737config HIGHMEM
1738        bool "High Memory Support"
1739        depends on MMU
1740        help
1741          The address space of ARM processors is only 4 Gigabytes large
1742          and it has to accommodate user address space, kernel address
1743          space as well as some memory mapped IO. That means that, if you
1744          have a large amount of physical memory and/or IO, not all of the
1745          memory can be "permanently mapped" by the kernel. The physical
1746          memory that is not permanently mapped is called "high memory".
1747
1748          Depending on the selected kernel/user memory split, minimum
1749          vmalloc space and actual amount of RAM, you may not need this
1750          option which should result in a slightly faster kernel.
1751
1752          If unsure, say n.
1753
1754config HIGHPTE
1755        bool "Allocate 2nd-level pagetables from highmem"
1756        depends on HIGHMEM
1757
1758config HW_PERF_EVENTS
1759        bool "Enable hardware performance counter support for perf events"
1760        depends on PERF_EVENTS && CPU_HAS_PMU
1761        default y
1762        help
1763          Enable hardware performance counter support for perf events. If
1764          disabled, perf events will use software events only.
1765
1766source "mm/Kconfig"
1767
1768config FORCE_MAX_ZONEORDER
1769        int "Maximum zone order" if ARCH_SHMOBILE
1770        range 11 64 if ARCH_SHMOBILE
1771        default "9" if SA1111
1772        default "11"
1773        help
1774          The kernel memory allocator divides physically contiguous memory
1775          blocks into "zones", where each zone is a power of two number of
1776          pages.  This option selects the largest power of two that the kernel
1777          keeps in the memory allocator.  If you need to allocate very large
1778          blocks of physically contiguous memory, then you may need to
1779          increase this value.
1780
1781          This config option is actually maximum order plus one. For example,
1782          a value of 11 means that the largest free memory block is 2^10 pages.
1783
1784config LEDS
1785        bool "Timer and CPU usage LEDs"
1786        depends on ARCH_CDB89712 || ARCH_EBSA110 || \
1787                   ARCH_EBSA285 || ARCH_INTEGRATOR || \
1788                   ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \
1789                   ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \
1790                   ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \
1791                   ARCH_AT91 || ARCH_DAVINCI || \
1792                   ARCH_KS8695 || MACH_RD88F5182 || ARCH_REALVIEW
1793        help
1794          If you say Y here, the LEDs on your machine will be used
1795          to provide useful information about your current system status.
1796
1797          If you are compiling a kernel for a NetWinder or EBSA-285, you will
1798          be able to select which LEDs are active using the options below. If
1799          you are compiling a kernel for the EBSA-110 or the LART however, the
1800          red LED will simply flash regularly to indicate that the system is
1801          still functional. It is safe to say Y here if you have a CATS
1802          system, but the driver will do nothing.
1803
1804config LEDS_TIMER
1805        bool "Timer LED" if (!ARCH_CDB89712 && !ARCH_OMAP) || \
1806                            OMAP_OSK_MISTRAL || MACH_OMAP_H2 \
1807                            || MACH_OMAP_PERSEUS2
1808        depends on LEDS
1809        depends on !GENERIC_CLOCKEVENTS
1810        default y if ARCH_EBSA110
1811        help
1812          If you say Y here, one of the system LEDs (the green one on the
1813          NetWinder, the amber one on the EBSA285, or the red one on the LART)
1814          will flash regularly to indicate that the system is still
1815          operational. This is mainly useful to kernel hackers who are
1816          debugging unstable kernels.
1817
1818          The LART uses the same LED for both Timer LED and CPU usage LED
1819          functions. You may choose to use both, but the Timer LED function
1820          will overrule the CPU usage LED.
1821
1822config LEDS_CPU
1823        bool "CPU usage LED" if (!ARCH_CDB89712 && !ARCH_EBSA110 && \
1824                        !ARCH_OMAP) \
1825                        || OMAP_OSK_MISTRAL || MACH_OMAP_H2 \
1826                        || MACH_OMAP_PERSEUS2
1827        depends on LEDS
1828        help
1829          If you say Y here, the red LED will be used to give a good real
1830          time indication of CPU usage, by lighting whenever the idle task
1831          is not currently executing.
1832
1833          The LART uses the same LED for both Timer LED and CPU usage LED
1834          functions. You may choose to use both, but the Timer LED function
1835          will overrule the CPU usage LED.
1836
1837config ALIGNMENT_TRAP
1838        bool
1839        depends on CPU_CP15_MMU
1840        default y if !ARCH_EBSA110
1841        select HAVE_PROC_CPU if PROC_FS
1842        help
1843          ARM processors cannot fetch/store information which is not
1844          naturally aligned on the bus, i.e., a 4 byte fetch must start at an
1845          address divisible by 4. On 32-bit ARM processors, these non-aligned
1846          fetch/store instructions will be emulated in software if you say
1847          here, which has a severe performance impact. This is necessary for
1848          correct operation of some network protocols. With an IP-only
1849          configuration it is safe to say N, otherwise say Y.
1850
1851config UACCESS_WITH_MEMCPY
1852        bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user() (EXPERIMENTAL)"
1853        depends on MMU && EXPERIMENTAL
1854        default y if CPU_FEROCEON
1855        help
1856          Implement faster copy_to_user and clear_user methods for CPU
1857          cores where a 8-word STM instruction give significantly higher
1858          memory write throughput than a sequence of individual 32bit stores.
1859
1860          A possible side effect is a slight increase in scheduling latency
1861          between threads sharing the same address space if they invoke
1862          such copy operations with large buffers.
1863
1864          However, if the CPU data cache is using a write-allocate mode,
1865          this option is unlikely to provide any performance gain.
1866
1867config SECCOMP
1868        bool
1869        prompt "Enable seccomp to safely compute untrusted bytecode"
1870        ---help---
1871          This kernel feature is useful for number crunching applications
1872          that may need to compute untrusted bytecode during their
1873          execution. By using pipes or other transports made available to
1874          the process as file descriptors supporting the read/write
1875          syscalls, it's possible to isolate those applications in
1876          their own address space using seccomp. Once seccomp is
1877          enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
1878          and the task is only allowed to execute a few safe syscalls
1879          defined by each seccomp mode.
1880
1881config CC_STACKPROTECTOR
1882        bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
1883        depends on EXPERIMENTAL
1884        help
1885          This option turns on the -fstack-protector GCC feature. This
1886          feature puts, at the beginning of functions, a canary value on
1887          the stack just before the return address, and validates
1888          the value just before actually returning.  Stack based buffer
1889          overflows (that need to overwrite this return address) now also
1890          overwrite the canary, which gets detected and the attack is then
1891          neutralized via a kernel panic.
1892          This feature requires gcc version 4.2 or above.
1893
1894config DEPRECATED_PARAM_STRUCT
1895        bool "Provide old way to pass kernel parameters"
1896        help
1897          This was deprecated in 2001 and announced to live on for 5 years.
1898          Some old boot loaders still use this way.
1899
1900endmenu
1901
1902menu "Boot options"
1903
1904config USE_OF
1905        bool "Flattened Device Tree support"
1906        select OF
1907        select OF_EARLY_FLATTREE
1908        select IRQ_DOMAIN
1909        help
1910          Include support for flattened device tree machine descriptions.
1911
1912# Compressed boot loader in ROM.  Yes, we really want to ask about
1913# TEXT and BSS so we preserve their values in the config files.
1914config ZBOOT_ROM_TEXT
1915        hex "Compressed ROM boot loader base address"
1916        default "0"
1917        help
1918          The physical address at which the ROM-able zImage is to be
1919          placed in the target.  Platforms which normally make use of
1920          ROM-able zImage formats normally set this to a suitable
1921          value in their defconfig file.
1922
1923          If ZBOOT_ROM is not enabled, this has no effect.
1924
1925config ZBOOT_ROM_BSS
1926        hex "Compressed ROM boot loader BSS address"
1927        default "0"
1928        help
1929          The base address of an area of read/write memory in the target
1930          for the ROM-able zImage which must be available while the
1931          decompressor is running. It must be large enough to hold the
1932          entire decompressed kernel plus an additional 128 KiB.
1933          Platforms which normally make use of ROM-able zImage formats
1934          normally set this to a suitable value in their defconfig file.
1935
1936          If ZBOOT_ROM is not enabled, this has no effect.
1937
1938config ZBOOT_ROM
1939        bool "Compressed boot loader in ROM/flash"
1940        depends on ZBOOT_ROM_TEXT != ZBOOT_ROM_BSS
1941        help
1942          Say Y here if you intend to execute your compressed kernel image
1943          (zImage) directly from ROM or flash.  If unsure, say N.
1944
1945choice
1946        prompt "Include SD/MMC loader in zImage (EXPERIMENTAL)"
1947        depends on ZBOOT_ROM && ARCH_SH7372 && EXPERIMENTAL
1948        default ZBOOT_ROM_NONE
1949        help
1950          Include experimental SD/MMC loading code in the ROM-able zImage.
1951          With this enabled it is possible to write the ROM-able zImage
1952          kernel image to an MMC or SD card and boot the kernel straight
1953          from the reset vector. At reset the processor Mask ROM will load
1954          the first part of the ROM-able zImage which in turn loads the
1955          rest the kernel image to RAM.
1956
1957config ZBOOT_ROM_NONE
1958        bool "No SD/MMC loader in zImage (EXPERIMENTAL)"
1959        help
1960          Do not load image from SD or MMC
1961
1962config ZBOOT_ROM_MMCIF
1963        bool "Include MMCIF loader in zImage (EXPERIMENTAL)"
1964        help
1965          Load image from MMCIF hardware block.
1966
1967config ZBOOT_ROM_SH_MOBILE_SDHI
1968        bool "Include SuperH Mobile SDHI loader in zImage (EXPERIMENTAL)"
1969        help
1970          Load image from SDHI hardware block
1971
1972endchoice
1973
1974config ARM_APPENDED_DTB
1975        bool "Use appended device tree blob to zImage (EXPERIMENTAL)"
1976        depends on OF && !ZBOOT_ROM && EXPERIMENTAL
1977        help
1978          With this option, the boot code will look for a device tree binary
1979          (DTB) appended to zImage
1980          (e.g. cat zImage <filename>.dtb > zImage_w_dtb).
1981
1982          This is meant as a backward compatibility convenience for those
1983          systems with a bootloader that can't be upgraded to accommodate
1984          the documented boot protocol using a device tree.
1985
1986          Beware that there is very little in terms of protection against
1987          this option being confused by leftover garbage in memory that might
1988          look like a DTB header after a reboot if no actual DTB is appended
1989          to zImage.  Do not leave this option active in a production kernel
1990          if you don't intend to always append a DTB.  Proper passing of the
1991          location into r2 of a bootloader provided DTB is always preferable
1992          to this option.
1993
1994config ARM_ATAG_DTB_COMPAT
1995        bool "Supplement the appended DTB with traditional ATAG information"
1996        depends on ARM_APPENDED_DTB
1997        help
1998          Some old bootloaders can't be updated to a DTB capable one, yet
1999          they provide ATAGs with memory configuration, the ramdisk address,
2000          the kernel cmdline string, etc.  Such information is dynamically
2001          provided by the bootloader and can't always be stored in a static
2002          DTB.  To allow a device tree enabled kernel to be used with such
2003          bootloaders, this option allows zImage to extract the information
2004          from the ATAG list and store it at run time into the appended DTB.
2005
2006choice
2007        prompt "Kernel command line type" if ARM_ATAG_DTB_COMPAT
2008        default ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER
2009
2010config ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER
2011        bool "Use bootloader kernel arguments if available"
2012        help
2013          Uses the command-line options passed by the boot loader instead of
2014          the device tree bootargs property. If the boot loader doesn't provide
2015          any, the device tree bootargs property will be used.
2016
2017config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND
2018        bool "Extend with bootloader kernel arguments"
2019        help
2020          The command-line arguments provided by the boot loader will be
2021          appended to the the device tree bootargs property.
2022
2023endchoice
2024
2025config CMDLINE
2026        string "Default kernel command string"
2027        default ""
2028        help
2029          On some architectures (EBSA110 and CATS), there is currently no way
2030          for the boot loader to pass arguments to the kernel. For these
2031          architectures, you should supply some command-line options at build
2032          time by entering them here. As a minimum, you should specify the
2033          memory size and the root device (e.g., mem=64M root=/dev/nfs).
2034
2035choice
2036        prompt "Kernel command line type" if CMDLINE != ""
2037        default CMDLINE_FROM_BOOTLOADER
2038
2039config CMDLINE_FROM_BOOTLOADER
2040        bool "Use bootloader kernel arguments if available"
2041        help
2042          Uses the command-line options passed by the boot loader. If
2043          the boot loader doesn't provide any, the default kernel command
2044          string provided in CMDLINE will be used.
2045
2046config CMDLINE_EXTEND
2047        bool "Extend bootloader kernel arguments"
2048        help
2049          The command-line arguments provided by the boot loader will be
2050          appended to the default kernel command string.
2051
2052config CMDLINE_FORCE
2053        bool "Always use the default kernel command string"
2054        help
2055          Always use the default kernel command string, even if the boot
2056          loader passes other arguments to the kernel.
2057          This is useful if you cannot or don't want to change the
2058          command-line options your boot loader passes to the kernel.
2059endchoice
2060
2061config XIP_KERNEL
2062        bool "Kernel Execute-In-Place from ROM"
2063        depends on !ZBOOT_ROM && !ARM_LPAE
2064        help
2065          Execute-In-Place allows the kernel to run from non-volatile storage
2066          directly addressable by the CPU, such as NOR flash. This saves RAM
2067          space since the text section of the kernel is not loaded from flash
2068          to RAM.  Read-write sections, such as the data section and stack,
2069          are still copied to RAM.  The XIP kernel is not compressed since
2070          it has to run directly from flash, so it will take more space to
2071          store it.  The flash address used to link the kernel object files,
2072          and for storing it, is configuration dependent. Therefore, if you
2073          say Y here, you must know the proper physical address where to
2074          store the kernel image depending on your own flash memory usage.
2075
2076          Also note that the make target becomes "make xipImage" rather than
2077          "make zImage" or "make Image".  The final kernel binary to put in
2078          ROM memory will be arch/arm/boot/xipImage.
2079
2080          If unsure, say N.
2081
2082config XIP_PHYS_ADDR
2083        hex "XIP Kernel Physical Location"
2084        depends on XIP_KERNEL
2085        default "0x00080000"
2086        help
2087          This is the physical address in your flash memory the kernel will
2088          be linked for and stored to.  This address is dependent on your
2089          own flash usage.
2090
2091config KEXEC
2092        bool "Kexec system call (EXPERIMENTAL)"
2093        depends on EXPERIMENTAL && (!SMP || HOTPLUG_CPU)
2094        help
2095          kexec is a system call that implements the ability to shutdown your
2096          current kernel, and to start another kernel.  It is like a reboot
2097          but it is independent of the system firmware.   And like a reboot
2098          you can start any kernel with it, not just Linux.
2099
2100          It is an ongoing process to be certain the hardware in a machine
2101          is properly shutdown, so do not be surprised if this code does not
2102          initially work for you.  It may help to enable device hotplugging
2103          support.
2104
2105config ATAGS_PROC
2106        bool "Export atags in procfs"
2107        depends on KEXEC
2108        default y
2109        help
2110          Should the atags used to boot the kernel be exported in an "atags"
2111          file in procfs. Useful with kexec.
2112
2113config CRASH_DUMP
2114        bool "Build kdump crash kernel (EXPERIMENTAL)"
2115        depends on EXPERIMENTAL
2116        help
2117          Generate crash dump after being started by kexec. This should
2118          be normally only set in special crash dump kernels which are
2119          loaded in the main kernel with kexec-tools into a specially
2120          reserved region and then later executed after a crash by
2121          kdump/kexec. The crash dump kernel must be compiled to a
2122          memory address not used by the main kernel
2123
2124          For more details see Documentation/kdump/kdump.txt
2125
2126config AUTO_ZRELADDR
2127        bool "Auto calculation of the decompressed kernel image address"
2128        depends on !ZBOOT_ROM && !ARCH_U300
2129        help
2130          ZRELADDR is the physical address where the decompressed kernel
2131          image will be placed. If AUTO_ZRELADDR is selected, the address
2132          will be determined at run-time by masking the current IP with
2133          0xf8000000. This assumes the zImage being placed in the first 128MB
2134          from start of memory.
2135
2136endmenu
2137
2138menu "CPU Power Management"
2139
2140if ARCH_HAS_CPUFREQ
2141
2142source "drivers/cpufreq/Kconfig"
2143
2144config CPU_FREQ_IMX
2145        tristate "CPUfreq driver for i.MX CPUs"
2146        depends on ARCH_MXC && CPU_FREQ
2147        select CPU_FREQ_TABLE
2148        help
2149          This enables the CPUfreq driver for i.MX CPUs.
2150
2151config CPU_FREQ_SA1100
2152        bool
2153
2154config CPU_FREQ_SA1110
2155        bool
2156
2157config CPU_FREQ_INTEGRATOR
2158        tristate "CPUfreq driver for ARM Integrator CPUs"
2159        depends on ARCH_INTEGRATOR && CPU_FREQ
2160        default y
2161        help
2162          This enables the CPUfreq driver for ARM Integrator CPUs.
2163
2164          For details, take a look at <file:Documentation/cpu-freq>.
2165
2166          If in doubt, say Y.
2167
2168config CPU_FREQ_PXA
2169        bool
2170        depends on CPU_FREQ && ARCH_PXA && PXA25x
2171        default y
2172        select CPU_FREQ_TABLE
2173        select CPU_FREQ_DEFAULT_GOV_USERSPACE
2174
2175config CPU_FREQ_S3C
2176        bool
2177        help
2178          Internal configuration node for common cpufreq on Samsung SoC
2179
2180config CPU_FREQ_S3C24XX
2181        bool "CPUfreq driver for Samsung S3C24XX series CPUs (EXPERIMENTAL)"
2182        depends on ARCH_S3C24XX && CPU_FREQ && EXPERIMENTAL
2183        select CPU_FREQ_S3C
2184        help
2185          This enables the CPUfreq driver for the Samsung S3C24XX family
2186          of CPUs.
2187
2188          For details, take a look at <file:Documentation/cpu-freq>.
2189
2190          If in doubt, say N.
2191
2192config CPU_FREQ_S3C24XX_PLL
2193        bool "Support CPUfreq changing of PLL frequency (EXPERIMENTAL)"
2194        depends on CPU_FREQ_S3C24XX && EXPERIMENTAL
2195        help
2196          Compile in support for changing the PLL frequency from the
2197          S3C24XX series CPUfreq driver. The PLL takes time to settle
2198          after a frequency change, so by default it is not enabled.
2199
2200          This also means that the PLL tables for the selected CPU(s) will
2201          be built which may increase the size of the kernel image.
2202
2203config CPU_FREQ_S3C24XX_DEBUG
2204        bool "Debug CPUfreq Samsung driver core"
2205        depends on CPU_FREQ_S3C24XX
2206        help
2207          Enable s3c_freq_dbg for the Samsung S3C CPUfreq core
2208
2209config CPU_FREQ_S3C24XX_IODEBUG
2210        bool "Debug CPUfreq Samsung driver IO timing"
2211        depends on CPU_FREQ_S3C24XX
2212        help
2213          Enable s3c_freq_iodbg for the Samsung S3C CPUfreq core
2214
2215config CPU_FREQ_S3C24XX_DEBUGFS
2216        bool "Export debugfs for CPUFreq"
2217        depends on CPU_FREQ_S3C24XX && DEBUG_FS
2218        help
2219          Export status information via debugfs.
2220
2221endif
2222
2223source "drivers/cpuidle/Kconfig"
2224
2225endmenu
2226
2227menu "Floating point emulation"
2228
2229comment "At least one emulation must be selected"
2230
2231config FPE_NWFPE
2232        bool "NWFPE math emulation"
2233        depends on (!AEABI || OABI_COMPAT) && !THUMB2_KERNEL
2234        ---help---
2235          Say Y to include the NWFPE floating point emulator in the kernel.
2236          This is necessary to run most binaries. Linux does not currently
2237          support floating point hardware so you need to say Y here even if
2238          your machine has an FPA or floating point co-processor podule.
2239
2240          You may say N here if you are going to load the Acorn FPEmulator
2241          early in the bootup.
2242
2243config FPE_NWFPE_XP
2244        bool "Support extended precision"
2245        depends on FPE_NWFPE
2246        help
2247          Say Y to include 80-bit support in the kernel floating-point
2248          emulator.  Otherwise, only 32 and 64-bit support is compiled in.
2249          Note that gcc does not generate 80-bit operations by default,
2250          so in most cases this option only enlarges the size of the
2251          floating point emulator without any good reason.
2252
2253          You almost surely want to say N here.
2254
2255config FPE_FASTFPE
2256        bool "FastFPE math emulation (EXPERIMENTAL)"
2257        depends on (!AEABI || OABI_COMPAT) && !CPU_32v3 && EXPERIMENTAL
2258        ---help---
2259          Say Y here to include the FAST floating point emulator in the kernel.
2260          This is an experimental much faster emulator which now also has full
2261          precision for the mantissa.  It does not support any exceptions.
2262          It is very simple, and approximately 3-6 times faster than NWFPE.
2263
2264          It should be sufficient for most programs.  It may be not suitable
2265          for scientific calculations, but you have to check this for yourself.
2266          If you do not feel you need a faster FP emulation you should better
2267          choose NWFPE.
2268
2269config VFP
2270        bool "VFP-format floating point maths"
2271        depends on CPU_V6 || CPU_V6K || CPU_ARM926T || CPU_V7 || CPU_FEROCEON
2272        help
2273          Say Y to include VFP support code in the kernel. This is needed
2274          if your hardware includes a VFP unit.
2275
2276          Please see <file:Documentation/arm/VFP/release-notes.txt> for
2277          release notes and additional status information.
2278
2279          Say N if your target does not have VFP hardware.
2280
2281config VFPv3
2282        bool
2283        depends on VFP
2284        default y if CPU_V7
2285
2286config NEON
2287        bool "Advanced SIMD (NEON) Extension support"
2288        depends on VFPv3 && CPU_V7
2289        help
2290          Say Y to include support code for NEON, the ARMv7 Advanced SIMD
2291          Extension.
2292
2293endmenu
2294
2295menu "Userspace binary formats"
2296
2297source "fs/Kconfig.binfmt"
2298
2299config ARTHUR
2300        tristate "RISC OS personality"
2301        depends on !AEABI
2302        help
2303          Say Y here to include the kernel code necessary if you want to run
2304          Acorn RISC OS/Arthur binaries under Linux. This code is still very
2305          experimental; if this sounds frightening, say N and sleep in peace.
2306          You can also say M here to compile this support as a module (which
2307          will be called arthur).
2308
2309endmenu
2310
2311menu "Power management options"
2312
2313source "kernel/power/Kconfig"
2314
2315config ARCH_SUSPEND_POSSIBLE
2316        depends on !ARCH_S5PC100 && !ARCH_TEGRA
2317        depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
2318                CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE || CPU_MOHAWK
2319        def_bool y
2320
2321config ARM_CPU_SUSPEND
2322        def_bool PM_SLEEP
2323
2324endmenu
2325
2326source "net/Kconfig"
2327
2328source "drivers/Kconfig"
2329
2330source "fs/Kconfig"
2331
2332source "arch/arm/Kconfig.debug"
2333
2334source "security/Kconfig"
2335
2336source "crypto/Kconfig"
2337
2338source "lib/Kconfig"
2339
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.