Loading Documentation/arm/memory.txt +7 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,13 @@ ffff0000 ffff0fff CPU vector page. fffe0000 fffeffff XScale cache flush area. This is used in proc-xscale.S to flush the whole data cache. Free for other usage on non-XScale. cache. (XScale does not have TCM.) fffe8000 fffeffff DTCM mapping area for platforms with DTCM mounted inside the CPU. fffe0000 fffe7fff ITCM mapping area for platforms with ITCM mounted inside the CPU. fff00000 fffdffff Fixmap mapping region. Addresses provided by fix_to_virt() will be located here. Loading Documentation/arm/tcm.txt +19 −11 Original line number Diff line number Diff line Loading @@ -19,8 +19,8 @@ defines a CPUID_TCM register that you can read out from the system control coprocessor. Documentation from ARM can be found at http://infocenter.arm.com, search for "TCM Status Register" to see documents for all CPUs. Reading this register you can determine if ITCM (bit 0) and/or DTCM (bit 16) is present in the machine. determine if ITCM (bits 1-0) and/or DTCM (bit 17-16) is present in the machine. There is further a TCM region register (search for "TCM Region Registers" at the ARM site) that can report and modify the location Loading @@ -35,7 +35,15 @@ The TCM memory can then be remapped to another address again using the MMU, but notice that the TCM if often used in situations where the MMU is turned off. To avoid confusion the current Linux implementation will map the TCM 1 to 1 from physical to virtual memory in the location specified by the machine. memory in the location specified by the kernel. Currently Linux will map ITCM to 0xfffe0000 and on, and DTCM to 0xfffe8000 and on, supporting a maximum of 32KiB of ITCM and 32KiB of DTCM. Newer versions of the region registers also support dividing these TCMs in two separate banks, so for example an 8KiB ITCM is divided into two 4KiB banks with its own control registers. The idea is to be able to lock and hide one of the banks for use by the secure world (TrustZone). TCM is used for a few things: Loading Loading @@ -65,18 +73,18 @@ in <asm/tcm.h>. Using this interface it is possible to: memory. Such a heap is great for things like saving device state when shutting off device power domains. A machine that has TCM memory shall select HAVE_TCM in arch/arm/Kconfig for itself, and then the rest of the functionality will depend on the physical location and size of ITCM and DTCM to be defined in mach/memory.h for the machine. Code that needs to use TCM shall #include <asm/tcm.h> If the TCM is not located at the place given in memory.h it will be moved using the TCM Region registers. A machine that has TCM memory shall select HAVE_TCM from arch/arm/Kconfig for itself. Code that needs to use TCM shall #include <asm/tcm.h> Functions to go into itcm can be tagged like this: int __tcmfunc foo(int bar); Since these are marked to become long_calls and you may want to have functions called locally inside the TCM without wasting space, there is also the __tcmlocalfunc prefix that will make the call relative. Variables to go into dtcm can be tagged like this: int __tcmdata foo; Loading arch/arm/Kconfig +168 −37 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ config ARM default y select HAVE_AOUT select HAVE_IDE select HAVE_MEMBLOCK select RTC_LIB select SYS_SUPPORTS_APM_EMULATION select GENERIC_ATOMIC64 if (!CPU_32v6K) Loading @@ -24,6 +25,7 @@ config ARM select HAVE_KERNEL_LZMA select HAVE_PERF_EVENTS select PERF_USE_VMALLOC select HAVE_REGS_AND_STACK_ACCESS_API help The ARM series is a line of low-power-consumption RISC chip designs licensed by ARM Ltd and targeted at embedded applications and Loading Loading @@ -55,7 +57,7 @@ config GENERIC_CLOCKEVENTS config GENERIC_CLOCKEVENTS_BROADCAST bool depends on GENERIC_CLOCKEVENTS default y if SMP && !LOCAL_TIMERS default y if SMP config HAVE_TCM bool Loading Loading @@ -301,6 +303,7 @@ config ARCH_CNS3XXX select CPU_V6 select GENERIC_CLOCKEVENTS select ARM_GIC select PCI_DOMAINS if PCI help Support for Cavium Networks CNS3XXX platform. Loading Loading @@ -439,21 +442,6 @@ config ARCH_IXP4XX help Support for Intel's IXP4XX (XScale) family of processors. config ARCH_L7200 bool "LinkUp-L7200" select CPU_ARM720T select FIQ select ARCH_USES_GETTIMEOFFSET help Say Y here if you intend to run this kernel on a LinkUp Systems L7200 Software Development Board which uses an ARM720T processor. Information on this board can be obtained at: <http://www.linkupsys.com/> If you have any questions or comments about the Linux kernel port to this board, send e-mail to <sjhill@cotw.com>. config ARCH_DOVE bool "Marvell Dove" select PCI Loading Loading @@ -482,6 +470,19 @@ config ARCH_LOKI help Support for the Marvell Loki (88RC8480) SoC. config ARCH_LPC32XX bool "NXP LPC32XX" select CPU_ARM926T select ARCH_REQUIRE_GPIOLIB select HAVE_IDE select ARM_AMBA select USB_ARCH_HAS_OHCI select COMMON_CLKDEV select GENERIC_TIME select GENERIC_CLOCKEVENTS help Support for the NXP LPC32XX family of processors config ARCH_MV78XX0 bool "Marvell MV78xx0" select CPU_FEROCEON Loading Loading @@ -586,6 +587,7 @@ config ARCH_MSM bool "Qualcomm MSM" select HAVE_CLK select GENERIC_CLOCKEVENTS select ARCH_REQUIRE_GPIOLIB help Support for Qualcomm MSM/QSD based systems. This runs on the apps processor of the MSM/QSD and depends on a shared memory Loading Loading @@ -719,7 +721,6 @@ config ARCH_SHARK config ARCH_LH7A40X bool "Sharp LH7A40X" select CPU_ARM922T select ARCH_DISCONTIGMEM_ENABLE if !LH7A40X_CONTIGMEM select ARCH_SPARSEMEM_ENABLE if !LH7A40X_CONTIGMEM select ARCH_USES_GETTIMEOFFSET help Loading Loading @@ -845,6 +846,8 @@ source "arch/arm/mach-lh7a40x/Kconfig" source "arch/arm/mach-loki/Kconfig" source "arch/arm/mach-lpc32xx/Kconfig" source "arch/arm/mach-msm/Kconfig" source "arch/arm/mach-mv78xx0/Kconfig" Loading Loading @@ -1031,11 +1034,6 @@ endmenu source "arch/arm/common/Kconfig" config FORCE_MAX_ZONEORDER int depends on SA1111 default "9" menu "Bus support" config ARM_AMBA Loading @@ -1060,7 +1058,7 @@ config ISA_DMA_API bool config PCI bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX || ARCH_KS8695 || MACH_ARMCORE bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX || ARCH_KS8695 || MACH_ARMCORE || ARCH_CNS3XXX help Find out whether you have a PCI motherboard. PCI is the name of a bus system, i.e. the way the CPU talks to the other stuff inside Loading Loading @@ -1172,9 +1170,10 @@ config HOTPLUG_CPU config LOCAL_TIMERS bool "Use local timer interrupts" depends on SMP && (REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || \ REALVIEW_EB_A9MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || ARCH_U8500) REALVIEW_EB_A9MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || \ ARCH_U8500 || ARCH_VEXPRESS_CA9X4) default y select HAVE_ARM_TWD if (ARCH_REALVIEW || ARCH_OMAP4 || ARCH_U8500) select HAVE_ARM_TWD if (ARCH_REALVIEW || ARCH_VEXPRESS || ARCH_OMAP4 || ARCH_U8500) help Enable support for local timers on SMP platforms, rather then the legacy IPI broadcast method. Local timers allows the system Loading @@ -1185,10 +1184,10 @@ source kernel/Kconfig.preempt config HZ int default 128 if ARCH_L7200 default 200 if ARCH_EBSA110 || ARCH_S3C2410 || ARCH_S5P6440 || ARCH_S5P6442 || ARCH_S5PV210 default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER default AT91_TIMER_HZ if ARCH_AT91 default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE default 100 config THUMB2_KERNEL Loading Loading @@ -1241,10 +1240,6 @@ config OABI_COMPAT config ARCH_HAS_HOLES_MEMORYMODEL bool # Discontigmem is deprecated config ARCH_DISCONTIGMEM_ENABLE bool config ARCH_SPARSEMEM_ENABLE bool Loading @@ -1252,13 +1247,7 @@ config ARCH_SPARSEMEM_DEFAULT def_bool ARCH_SPARSEMEM_ENABLE config ARCH_SELECT_MEMORY_MODEL def_bool ARCH_DISCONTIGMEM_ENABLE && ARCH_SPARSEMEM_ENABLE config NODES_SHIFT int default "4" if ARCH_LH7A40X default "2" depends on NEED_MULTIPLE_NODES def_bool ARCH_SPARSEMEM_ENABLE config HIGHMEM bool "High Memory Support (EXPERIMENTAL)" Loading Loading @@ -1290,8 +1279,33 @@ config HW_PERF_EVENTS Enable hardware performance counter support for perf events. If disabled, perf events will use software events only. config SPARSE_IRQ def_bool n help This enables support for sparse irqs. This is useful in general as most CPUs have a fairly sparse array of IRQ vectors, which the irq_desc then maps directly on to. Systems with a high number of off-chip IRQs will want to treat this as experimental until they have been independently verified. source "mm/Kconfig" config FORCE_MAX_ZONEORDER int "Maximum zone order" if ARCH_SHMOBILE range 11 64 if ARCH_SHMOBILE default "9" if SA1111 default "11" help The kernel memory allocator divides physically contiguous memory blocks into "zones", where each zone is a power of two number of pages. This option selects the largest power of two that the kernel keeps in the memory allocator. If you need to allocate very large blocks of physically contiguous memory, then you may need to increase this value. This config option is actually maximum order plus one. For example, a value of 11 means that the largest free memory block is 2^10 pages. config LEDS bool "Timer and CPU usage LEDs" depends on ARCH_CDB89712 || ARCH_EBSA110 || \ Loading Loading @@ -1375,6 +1389,24 @@ config UACCESS_WITH_MEMCPY However, if the CPU data cache is using a write-allocate mode, this option is unlikely to provide any performance gain. config CC_STACKPROTECTOR bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)" help This option turns on the -fstack-protector GCC feature. This feature puts, at the beginning of functions, a canary value on the stack just before the return address, and validates the value just before actually returning. Stack based buffer overflows (that need to overwrite this return address) now also overwrite the canary, which gets detected and the attack is then neutralized via a kernel panic. This feature requires gcc version 4.2 or above. config DEPRECATED_PARAM_STRUCT bool "Provide old way to pass kernel parameters" help This was deprecated in 2001 and announced to live on for 5 years. Some old boot loaders still use this way. endmenu menu "Boot options" Loading Loading @@ -1485,6 +1517,105 @@ config ATAGS_PROC Should the atags used to boot the kernel be exported in an "atags" file in procfs. Useful with kexec. config AUTO_ZRELADDR bool "Auto calculation of the decompressed kernel image address" depends on !ZBOOT_ROM && !ARCH_U300 help ZRELADDR is the physical address where the decompressed kernel image will be placed. If AUTO_ZRELADDR is selected, the address will be determined at run-time by masking the current IP with 0xf8000000. This assumes the zImage being placed in the first 128MB from start of memory. config ZRELADDR hex "Physical address of the decompressed kernel image" depends on !AUTO_ZRELADDR default 0x00008000 if ARCH_BCMRING ||\ ARCH_CNS3XXX ||\ ARCH_DOVE ||\ ARCH_EBSA110 ||\ ARCH_FOOTBRIDGE ||\ ARCH_INTEGRATOR ||\ ARCH_IOP13XX ||\ ARCH_IOP33X ||\ ARCH_IXP2000 ||\ ARCH_IXP23XX ||\ ARCH_IXP4XX ||\ ARCH_KIRKWOOD ||\ ARCH_KS8695 ||\ ARCH_LOKI ||\ ARCH_MMP ||\ ARCH_MV78XX0 ||\ ARCH_NOMADIK ||\ ARCH_NUC93X ||\ ARCH_NS9XXX ||\ ARCH_ORION5X ||\ ARCH_SPEAR3XX ||\ ARCH_SPEAR6XX ||\ ARCH_U8500 ||\ ARCH_VERSATILE ||\ ARCH_W90X900 default 0x08008000 if ARCH_MX1 ||\ ARCH_SHARK default 0x10008000 if ARCH_MSM ||\ ARCH_OMAP1 ||\ ARCH_RPC default 0x20008000 if ARCH_S5P6440 ||\ ARCH_S5P6442 ||\ ARCH_S5PC100 ||\ ARCH_S5PV210 default 0x30008000 if ARCH_S3C2410 ||\ ARCH_S3C2400 ||\ ARCH_S3C2412 ||\ ARCH_S3C2416 ||\ ARCH_S3C2440 ||\ ARCH_S3C2443 default 0x40008000 if ARCH_STMP378X ||\ ARCH_STMP37XX ||\ ARCH_SH7372 ||\ ARCH_SH7377 default 0x50008000 if ARCH_S3C64XX ||\ ARCH_SH7367 default 0x60008000 if ARCH_VEXPRESS default 0x80008000 if ARCH_MX25 ||\ ARCH_MX3 ||\ ARCH_NETX ||\ ARCH_OMAP2PLUS ||\ ARCH_PNX4008 default 0x90008000 if ARCH_MX5 ||\ ARCH_MX91231 default 0xa0008000 if ARCH_IOP32X ||\ ARCH_PXA ||\ MACH_MX27 default 0xc0008000 if ARCH_LH7A40X ||\ MACH_MX21 default 0xf0008000 if ARCH_AAEC2000 ||\ ARCH_L7200 default 0xc0028000 if ARCH_CLPS711X default 0x70008000 if ARCH_AT91 && (ARCH_AT91CAP9 || ARCH_AT91SAM9G45) default 0x20008000 if ARCH_AT91 && !(ARCH_AT91CAP9 || ARCH_AT91SAM9G45) default 0xc0008000 if ARCH_DAVINCI && ARCH_DAVINCI_DA8XX default 0x80008000 if ARCH_DAVINCI && !ARCH_DAVINCI_DA8XX default 0x00008000 if ARCH_EP93XX && EP93XX_SDCE3_SYNC_PHYS_OFFSET default 0xc0008000 if ARCH_EP93XX && EP93XX_SDCE0_PHYS_OFFSET default 0xd0008000 if ARCH_EP93XX && EP93XX_SDCE1_PHYS_OFFSET default 0xe0008000 if ARCH_EP93XX && EP93XX_SDCE2_PHYS_OFFSET default 0xf0008000 if ARCH_EP93XX && EP93XX_SDCE3_ASYNC_PHYS_OFFSET default 0x00008000 if ARCH_GEMINI && GEMINI_MEM_SWAP default 0x10008000 if ARCH_GEMINI && !GEMINI_MEM_SWAP default 0x70008000 if ARCH_REALVIEW && REALVIEW_HIGH_PHYS_OFFSET default 0x00008000 if ARCH_REALVIEW && !REALVIEW_HIGH_PHYS_OFFSET default 0xc0208000 if ARCH_SA1100 && SA1111 default 0xc0008000 if ARCH_SA1100 && !SA1111 default 0x30108000 if ARCH_S3C2410 && PM_H1940 default 0x28E08000 if ARCH_U300 && MACH_U300_SINGLE_RAM default 0x48008000 if ARCH_U300 && !MACH_U300_SINGLE_RAM help ZRELADDR is the physical address where the decompressed kernel image will be placed. ZRELADDR has to be specified when the assumption of AUTO_ZRELADDR is not valid, or when ZBOOT_ROM is selected. endmenu menu "CPU Power Management" Loading arch/arm/Makefile +7 −3 Original line number Diff line number Diff line Loading @@ -34,6 +34,10 @@ ifeq ($(CONFIG_FRAME_POINTER),y) KBUILD_CFLAGS +=-fno-omit-frame-pointer -mapcs -mno-sched-prolog endif ifeq ($(CONFIG_CC_STACKPROTECTOR),y) KBUILD_CFLAGS +=-fstack-protector endif ifeq ($(CONFIG_CPU_BIG_ENDIAN),y) KBUILD_CPPFLAGS += -mbig-endian AS += -EB Loading Loading @@ -139,14 +143,14 @@ machine-$(CONFIG_ARCH_IXP23XX) := ixp23xx machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx machine-$(CONFIG_ARCH_KIRKWOOD) := kirkwood machine-$(CONFIG_ARCH_KS8695) := ks8695 machine-$(CONFIG_ARCH_L7200) := l7200 machine-$(CONFIG_ARCH_LH7A40X) := lh7a40x machine-$(CONFIG_ARCH_LOKI) := loki machine-$(CONFIG_ARCH_LPC32XX) := lpc32xx machine-$(CONFIG_ARCH_MMP) := mmp machine-$(CONFIG_ARCH_MSM) := msm machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0 machine-$(CONFIG_ARCH_MX1) := mx1 machine-$(CONFIG_ARCH_MX2) := mx2 machine-$(CONFIG_ARCH_MX1) := imx machine-$(CONFIG_ARCH_MX2) := imx machine-$(CONFIG_ARCH_MX25) := mx25 machine-$(CONFIG_ARCH_MX3) := mx3 machine-$(CONFIG_ARCH_MX5) := mx5 Loading arch/arm/boot/Makefile +3 −5 Original line number Diff line number Diff line Loading @@ -14,18 +14,16 @@ MKIMAGE := $(srctree)/scripts/mkuboot.sh ifneq ($(MACHINE),) include $(srctree)/$(MACHINE)/Makefile.boot -include $(srctree)/$(MACHINE)/Makefile.boot endif # Note: the following conditions must always be true: # ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET) # PARAMS_PHYS must be within 4MB of ZRELADDR # INITRD_PHYS must be in RAM ZRELADDR := $(zreladdr-y) PARAMS_PHYS := $(params_phys-y) INITRD_PHYS := $(initrd_phys-y) export ZRELADDR INITRD_PHYS PARAMS_PHYS export INITRD_PHYS PARAMS_PHYS targets := Image zImage xipImage bootpImage uImage Loading Loading @@ -67,7 +65,7 @@ quiet_cmd_uimage = UIMAGE $@ ifeq ($(CONFIG_ZBOOT_ROM),y) $(obj)/uImage: LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT) else $(obj)/uImage: LOADADDR=$(ZRELADDR) $(obj)/uImage: LOADADDR=$(CONFIG_ZRELADDR) endif ifeq ($(CONFIG_THUMB2_KERNEL),y) Loading Loading
Documentation/arm/memory.txt +7 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,13 @@ ffff0000 ffff0fff CPU vector page. fffe0000 fffeffff XScale cache flush area. This is used in proc-xscale.S to flush the whole data cache. Free for other usage on non-XScale. cache. (XScale does not have TCM.) fffe8000 fffeffff DTCM mapping area for platforms with DTCM mounted inside the CPU. fffe0000 fffe7fff ITCM mapping area for platforms with ITCM mounted inside the CPU. fff00000 fffdffff Fixmap mapping region. Addresses provided by fix_to_virt() will be located here. Loading
Documentation/arm/tcm.txt +19 −11 Original line number Diff line number Diff line Loading @@ -19,8 +19,8 @@ defines a CPUID_TCM register that you can read out from the system control coprocessor. Documentation from ARM can be found at http://infocenter.arm.com, search for "TCM Status Register" to see documents for all CPUs. Reading this register you can determine if ITCM (bit 0) and/or DTCM (bit 16) is present in the machine. determine if ITCM (bits 1-0) and/or DTCM (bit 17-16) is present in the machine. There is further a TCM region register (search for "TCM Region Registers" at the ARM site) that can report and modify the location Loading @@ -35,7 +35,15 @@ The TCM memory can then be remapped to another address again using the MMU, but notice that the TCM if often used in situations where the MMU is turned off. To avoid confusion the current Linux implementation will map the TCM 1 to 1 from physical to virtual memory in the location specified by the machine. memory in the location specified by the kernel. Currently Linux will map ITCM to 0xfffe0000 and on, and DTCM to 0xfffe8000 and on, supporting a maximum of 32KiB of ITCM and 32KiB of DTCM. Newer versions of the region registers also support dividing these TCMs in two separate banks, so for example an 8KiB ITCM is divided into two 4KiB banks with its own control registers. The idea is to be able to lock and hide one of the banks for use by the secure world (TrustZone). TCM is used for a few things: Loading Loading @@ -65,18 +73,18 @@ in <asm/tcm.h>. Using this interface it is possible to: memory. Such a heap is great for things like saving device state when shutting off device power domains. A machine that has TCM memory shall select HAVE_TCM in arch/arm/Kconfig for itself, and then the rest of the functionality will depend on the physical location and size of ITCM and DTCM to be defined in mach/memory.h for the machine. Code that needs to use TCM shall #include <asm/tcm.h> If the TCM is not located at the place given in memory.h it will be moved using the TCM Region registers. A machine that has TCM memory shall select HAVE_TCM from arch/arm/Kconfig for itself. Code that needs to use TCM shall #include <asm/tcm.h> Functions to go into itcm can be tagged like this: int __tcmfunc foo(int bar); Since these are marked to become long_calls and you may want to have functions called locally inside the TCM without wasting space, there is also the __tcmlocalfunc prefix that will make the call relative. Variables to go into dtcm can be tagged like this: int __tcmdata foo; Loading
arch/arm/Kconfig +168 −37 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ config ARM default y select HAVE_AOUT select HAVE_IDE select HAVE_MEMBLOCK select RTC_LIB select SYS_SUPPORTS_APM_EMULATION select GENERIC_ATOMIC64 if (!CPU_32v6K) Loading @@ -24,6 +25,7 @@ config ARM select HAVE_KERNEL_LZMA select HAVE_PERF_EVENTS select PERF_USE_VMALLOC select HAVE_REGS_AND_STACK_ACCESS_API help The ARM series is a line of low-power-consumption RISC chip designs licensed by ARM Ltd and targeted at embedded applications and Loading Loading @@ -55,7 +57,7 @@ config GENERIC_CLOCKEVENTS config GENERIC_CLOCKEVENTS_BROADCAST bool depends on GENERIC_CLOCKEVENTS default y if SMP && !LOCAL_TIMERS default y if SMP config HAVE_TCM bool Loading Loading @@ -301,6 +303,7 @@ config ARCH_CNS3XXX select CPU_V6 select GENERIC_CLOCKEVENTS select ARM_GIC select PCI_DOMAINS if PCI help Support for Cavium Networks CNS3XXX platform. Loading Loading @@ -439,21 +442,6 @@ config ARCH_IXP4XX help Support for Intel's IXP4XX (XScale) family of processors. config ARCH_L7200 bool "LinkUp-L7200" select CPU_ARM720T select FIQ select ARCH_USES_GETTIMEOFFSET help Say Y here if you intend to run this kernel on a LinkUp Systems L7200 Software Development Board which uses an ARM720T processor. Information on this board can be obtained at: <http://www.linkupsys.com/> If you have any questions or comments about the Linux kernel port to this board, send e-mail to <sjhill@cotw.com>. config ARCH_DOVE bool "Marvell Dove" select PCI Loading Loading @@ -482,6 +470,19 @@ config ARCH_LOKI help Support for the Marvell Loki (88RC8480) SoC. config ARCH_LPC32XX bool "NXP LPC32XX" select CPU_ARM926T select ARCH_REQUIRE_GPIOLIB select HAVE_IDE select ARM_AMBA select USB_ARCH_HAS_OHCI select COMMON_CLKDEV select GENERIC_TIME select GENERIC_CLOCKEVENTS help Support for the NXP LPC32XX family of processors config ARCH_MV78XX0 bool "Marvell MV78xx0" select CPU_FEROCEON Loading Loading @@ -586,6 +587,7 @@ config ARCH_MSM bool "Qualcomm MSM" select HAVE_CLK select GENERIC_CLOCKEVENTS select ARCH_REQUIRE_GPIOLIB help Support for Qualcomm MSM/QSD based systems. This runs on the apps processor of the MSM/QSD and depends on a shared memory Loading Loading @@ -719,7 +721,6 @@ config ARCH_SHARK config ARCH_LH7A40X bool "Sharp LH7A40X" select CPU_ARM922T select ARCH_DISCONTIGMEM_ENABLE if !LH7A40X_CONTIGMEM select ARCH_SPARSEMEM_ENABLE if !LH7A40X_CONTIGMEM select ARCH_USES_GETTIMEOFFSET help Loading Loading @@ -845,6 +846,8 @@ source "arch/arm/mach-lh7a40x/Kconfig" source "arch/arm/mach-loki/Kconfig" source "arch/arm/mach-lpc32xx/Kconfig" source "arch/arm/mach-msm/Kconfig" source "arch/arm/mach-mv78xx0/Kconfig" Loading Loading @@ -1031,11 +1034,6 @@ endmenu source "arch/arm/common/Kconfig" config FORCE_MAX_ZONEORDER int depends on SA1111 default "9" menu "Bus support" config ARM_AMBA Loading @@ -1060,7 +1058,7 @@ config ISA_DMA_API bool config PCI bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX || ARCH_KS8695 || MACH_ARMCORE bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX || ARCH_KS8695 || MACH_ARMCORE || ARCH_CNS3XXX help Find out whether you have a PCI motherboard. PCI is the name of a bus system, i.e. the way the CPU talks to the other stuff inside Loading Loading @@ -1172,9 +1170,10 @@ config HOTPLUG_CPU config LOCAL_TIMERS bool "Use local timer interrupts" depends on SMP && (REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || \ REALVIEW_EB_A9MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || ARCH_U8500) REALVIEW_EB_A9MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || \ ARCH_U8500 || ARCH_VEXPRESS_CA9X4) default y select HAVE_ARM_TWD if (ARCH_REALVIEW || ARCH_OMAP4 || ARCH_U8500) select HAVE_ARM_TWD if (ARCH_REALVIEW || ARCH_VEXPRESS || ARCH_OMAP4 || ARCH_U8500) help Enable support for local timers on SMP platforms, rather then the legacy IPI broadcast method. Local timers allows the system Loading @@ -1185,10 +1184,10 @@ source kernel/Kconfig.preempt config HZ int default 128 if ARCH_L7200 default 200 if ARCH_EBSA110 || ARCH_S3C2410 || ARCH_S5P6440 || ARCH_S5P6442 || ARCH_S5PV210 default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER default AT91_TIMER_HZ if ARCH_AT91 default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE default 100 config THUMB2_KERNEL Loading Loading @@ -1241,10 +1240,6 @@ config OABI_COMPAT config ARCH_HAS_HOLES_MEMORYMODEL bool # Discontigmem is deprecated config ARCH_DISCONTIGMEM_ENABLE bool config ARCH_SPARSEMEM_ENABLE bool Loading @@ -1252,13 +1247,7 @@ config ARCH_SPARSEMEM_DEFAULT def_bool ARCH_SPARSEMEM_ENABLE config ARCH_SELECT_MEMORY_MODEL def_bool ARCH_DISCONTIGMEM_ENABLE && ARCH_SPARSEMEM_ENABLE config NODES_SHIFT int default "4" if ARCH_LH7A40X default "2" depends on NEED_MULTIPLE_NODES def_bool ARCH_SPARSEMEM_ENABLE config HIGHMEM bool "High Memory Support (EXPERIMENTAL)" Loading Loading @@ -1290,8 +1279,33 @@ config HW_PERF_EVENTS Enable hardware performance counter support for perf events. If disabled, perf events will use software events only. config SPARSE_IRQ def_bool n help This enables support for sparse irqs. This is useful in general as most CPUs have a fairly sparse array of IRQ vectors, which the irq_desc then maps directly on to. Systems with a high number of off-chip IRQs will want to treat this as experimental until they have been independently verified. source "mm/Kconfig" config FORCE_MAX_ZONEORDER int "Maximum zone order" if ARCH_SHMOBILE range 11 64 if ARCH_SHMOBILE default "9" if SA1111 default "11" help The kernel memory allocator divides physically contiguous memory blocks into "zones", where each zone is a power of two number of pages. This option selects the largest power of two that the kernel keeps in the memory allocator. If you need to allocate very large blocks of physically contiguous memory, then you may need to increase this value. This config option is actually maximum order plus one. For example, a value of 11 means that the largest free memory block is 2^10 pages. config LEDS bool "Timer and CPU usage LEDs" depends on ARCH_CDB89712 || ARCH_EBSA110 || \ Loading Loading @@ -1375,6 +1389,24 @@ config UACCESS_WITH_MEMCPY However, if the CPU data cache is using a write-allocate mode, this option is unlikely to provide any performance gain. config CC_STACKPROTECTOR bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)" help This option turns on the -fstack-protector GCC feature. This feature puts, at the beginning of functions, a canary value on the stack just before the return address, and validates the value just before actually returning. Stack based buffer overflows (that need to overwrite this return address) now also overwrite the canary, which gets detected and the attack is then neutralized via a kernel panic. This feature requires gcc version 4.2 or above. config DEPRECATED_PARAM_STRUCT bool "Provide old way to pass kernel parameters" help This was deprecated in 2001 and announced to live on for 5 years. Some old boot loaders still use this way. endmenu menu "Boot options" Loading Loading @@ -1485,6 +1517,105 @@ config ATAGS_PROC Should the atags used to boot the kernel be exported in an "atags" file in procfs. Useful with kexec. config AUTO_ZRELADDR bool "Auto calculation of the decompressed kernel image address" depends on !ZBOOT_ROM && !ARCH_U300 help ZRELADDR is the physical address where the decompressed kernel image will be placed. If AUTO_ZRELADDR is selected, the address will be determined at run-time by masking the current IP with 0xf8000000. This assumes the zImage being placed in the first 128MB from start of memory. config ZRELADDR hex "Physical address of the decompressed kernel image" depends on !AUTO_ZRELADDR default 0x00008000 if ARCH_BCMRING ||\ ARCH_CNS3XXX ||\ ARCH_DOVE ||\ ARCH_EBSA110 ||\ ARCH_FOOTBRIDGE ||\ ARCH_INTEGRATOR ||\ ARCH_IOP13XX ||\ ARCH_IOP33X ||\ ARCH_IXP2000 ||\ ARCH_IXP23XX ||\ ARCH_IXP4XX ||\ ARCH_KIRKWOOD ||\ ARCH_KS8695 ||\ ARCH_LOKI ||\ ARCH_MMP ||\ ARCH_MV78XX0 ||\ ARCH_NOMADIK ||\ ARCH_NUC93X ||\ ARCH_NS9XXX ||\ ARCH_ORION5X ||\ ARCH_SPEAR3XX ||\ ARCH_SPEAR6XX ||\ ARCH_U8500 ||\ ARCH_VERSATILE ||\ ARCH_W90X900 default 0x08008000 if ARCH_MX1 ||\ ARCH_SHARK default 0x10008000 if ARCH_MSM ||\ ARCH_OMAP1 ||\ ARCH_RPC default 0x20008000 if ARCH_S5P6440 ||\ ARCH_S5P6442 ||\ ARCH_S5PC100 ||\ ARCH_S5PV210 default 0x30008000 if ARCH_S3C2410 ||\ ARCH_S3C2400 ||\ ARCH_S3C2412 ||\ ARCH_S3C2416 ||\ ARCH_S3C2440 ||\ ARCH_S3C2443 default 0x40008000 if ARCH_STMP378X ||\ ARCH_STMP37XX ||\ ARCH_SH7372 ||\ ARCH_SH7377 default 0x50008000 if ARCH_S3C64XX ||\ ARCH_SH7367 default 0x60008000 if ARCH_VEXPRESS default 0x80008000 if ARCH_MX25 ||\ ARCH_MX3 ||\ ARCH_NETX ||\ ARCH_OMAP2PLUS ||\ ARCH_PNX4008 default 0x90008000 if ARCH_MX5 ||\ ARCH_MX91231 default 0xa0008000 if ARCH_IOP32X ||\ ARCH_PXA ||\ MACH_MX27 default 0xc0008000 if ARCH_LH7A40X ||\ MACH_MX21 default 0xf0008000 if ARCH_AAEC2000 ||\ ARCH_L7200 default 0xc0028000 if ARCH_CLPS711X default 0x70008000 if ARCH_AT91 && (ARCH_AT91CAP9 || ARCH_AT91SAM9G45) default 0x20008000 if ARCH_AT91 && !(ARCH_AT91CAP9 || ARCH_AT91SAM9G45) default 0xc0008000 if ARCH_DAVINCI && ARCH_DAVINCI_DA8XX default 0x80008000 if ARCH_DAVINCI && !ARCH_DAVINCI_DA8XX default 0x00008000 if ARCH_EP93XX && EP93XX_SDCE3_SYNC_PHYS_OFFSET default 0xc0008000 if ARCH_EP93XX && EP93XX_SDCE0_PHYS_OFFSET default 0xd0008000 if ARCH_EP93XX && EP93XX_SDCE1_PHYS_OFFSET default 0xe0008000 if ARCH_EP93XX && EP93XX_SDCE2_PHYS_OFFSET default 0xf0008000 if ARCH_EP93XX && EP93XX_SDCE3_ASYNC_PHYS_OFFSET default 0x00008000 if ARCH_GEMINI && GEMINI_MEM_SWAP default 0x10008000 if ARCH_GEMINI && !GEMINI_MEM_SWAP default 0x70008000 if ARCH_REALVIEW && REALVIEW_HIGH_PHYS_OFFSET default 0x00008000 if ARCH_REALVIEW && !REALVIEW_HIGH_PHYS_OFFSET default 0xc0208000 if ARCH_SA1100 && SA1111 default 0xc0008000 if ARCH_SA1100 && !SA1111 default 0x30108000 if ARCH_S3C2410 && PM_H1940 default 0x28E08000 if ARCH_U300 && MACH_U300_SINGLE_RAM default 0x48008000 if ARCH_U300 && !MACH_U300_SINGLE_RAM help ZRELADDR is the physical address where the decompressed kernel image will be placed. ZRELADDR has to be specified when the assumption of AUTO_ZRELADDR is not valid, or when ZBOOT_ROM is selected. endmenu menu "CPU Power Management" Loading
arch/arm/Makefile +7 −3 Original line number Diff line number Diff line Loading @@ -34,6 +34,10 @@ ifeq ($(CONFIG_FRAME_POINTER),y) KBUILD_CFLAGS +=-fno-omit-frame-pointer -mapcs -mno-sched-prolog endif ifeq ($(CONFIG_CC_STACKPROTECTOR),y) KBUILD_CFLAGS +=-fstack-protector endif ifeq ($(CONFIG_CPU_BIG_ENDIAN),y) KBUILD_CPPFLAGS += -mbig-endian AS += -EB Loading Loading @@ -139,14 +143,14 @@ machine-$(CONFIG_ARCH_IXP23XX) := ixp23xx machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx machine-$(CONFIG_ARCH_KIRKWOOD) := kirkwood machine-$(CONFIG_ARCH_KS8695) := ks8695 machine-$(CONFIG_ARCH_L7200) := l7200 machine-$(CONFIG_ARCH_LH7A40X) := lh7a40x machine-$(CONFIG_ARCH_LOKI) := loki machine-$(CONFIG_ARCH_LPC32XX) := lpc32xx machine-$(CONFIG_ARCH_MMP) := mmp machine-$(CONFIG_ARCH_MSM) := msm machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0 machine-$(CONFIG_ARCH_MX1) := mx1 machine-$(CONFIG_ARCH_MX2) := mx2 machine-$(CONFIG_ARCH_MX1) := imx machine-$(CONFIG_ARCH_MX2) := imx machine-$(CONFIG_ARCH_MX25) := mx25 machine-$(CONFIG_ARCH_MX3) := mx3 machine-$(CONFIG_ARCH_MX5) := mx5 Loading
arch/arm/boot/Makefile +3 −5 Original line number Diff line number Diff line Loading @@ -14,18 +14,16 @@ MKIMAGE := $(srctree)/scripts/mkuboot.sh ifneq ($(MACHINE),) include $(srctree)/$(MACHINE)/Makefile.boot -include $(srctree)/$(MACHINE)/Makefile.boot endif # Note: the following conditions must always be true: # ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET) # PARAMS_PHYS must be within 4MB of ZRELADDR # INITRD_PHYS must be in RAM ZRELADDR := $(zreladdr-y) PARAMS_PHYS := $(params_phys-y) INITRD_PHYS := $(initrd_phys-y) export ZRELADDR INITRD_PHYS PARAMS_PHYS export INITRD_PHYS PARAMS_PHYS targets := Image zImage xipImage bootpImage uImage Loading Loading @@ -67,7 +65,7 @@ quiet_cmd_uimage = UIMAGE $@ ifeq ($(CONFIG_ZBOOT_ROM),y) $(obj)/uImage: LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT) else $(obj)/uImage: LOADADDR=$(ZRELADDR) $(obj)/uImage: LOADADDR=$(CONFIG_ZRELADDR) endif ifeq ($(CONFIG_THUMB2_KERNEL),y) Loading