diff options
| author | Catalin Marinas <catalin.marinas@arm.com> | 2012-04-20 09:45:54 -0400 |
|---|---|---|
| committer | Catalin Marinas <catalin.marinas@arm.com> | 2012-09-17 08:42:21 -0400 |
| commit | 8c2c3df31e3b87cb5348e48776c366ebd1dc5a7a (patch) | |
| tree | c67b6e60bffd8d61a7d61ccb48f18cf1d6a68d75 | |
| parent | 10b663aef1c24794d32141be86b4dfcc64293bd0 (diff) | |
arm64: Build infrastructure
This patch adds Makefile and Kconfig files required for building an
AArch64 kernel.
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Acked-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Olof Johansson <olof@lixom.net>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
| -rw-r--r-- | arch/arm64/Kconfig | 222 | ||||
| -rw-r--r-- | arch/arm64/Kconfig.debug | 27 | ||||
| -rw-r--r-- | arch/arm64/Makefile | 71 | ||||
| -rw-r--r-- | arch/arm64/boot/.gitignore | 2 | ||||
| -rw-r--r-- | arch/arm64/boot/Makefile | 36 | ||||
| -rw-r--r-- | arch/arm64/boot/install.sh | 46 | ||||
| -rw-r--r-- | arch/arm64/configs/defconfig | 85 | ||||
| -rw-r--r-- | arch/arm64/include/asm/prom.h | 1 | ||||
| -rw-r--r-- | arch/arm64/kernel/.gitignore | 1 | ||||
| -rw-r--r-- | arch/arm64/kernel/Makefile | 27 | ||||
| -rw-r--r-- | arch/arm64/kernel/vmlinux.lds.S | 126 | ||||
| -rw-r--r-- | arch/arm64/mm/Makefile | 4 | ||||
| -rw-r--r-- | init/Kconfig | 3 | ||||
| -rw-r--r-- | lib/Kconfig.debug | 6 |
14 files changed, 654 insertions, 3 deletions
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig new file mode 100644 index 000000000000..767ba5685454 --- /dev/null +++ b/arch/arm64/Kconfig | |||
| @@ -0,0 +1,222 @@ | |||
| 1 | config ARM64 | ||
| 2 | def_bool y | ||
| 3 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | ||
| 4 | select GENERIC_CLOCKEVENTS | ||
| 5 | select GENERIC_HARDIRQS_NO_DEPRECATED | ||
| 6 | select GENERIC_IOMAP | ||
| 7 | select GENERIC_IRQ_PROBE | ||
| 8 | select GENERIC_IRQ_SHOW | ||
| 9 | select GENERIC_SMP_IDLE_THREAD | ||
| 10 | select GENERIC_TIME_VSYSCALL | ||
| 11 | select HARDIRQS_SW_RESEND | ||
| 12 | select HAVE_ARCH_TRACEHOOK | ||
| 13 | select HAVE_DMA_API_DEBUG | ||
| 14 | select HAVE_DMA_ATTRS | ||
| 15 | select HAVE_GENERIC_DMA_COHERENT | ||
| 16 | select HAVE_GENERIC_HARDIRQS | ||
| 17 | select HAVE_HW_BREAKPOINT if PERF_EVENTS | ||
| 18 | select HAVE_IRQ_WORK | ||
| 19 | select HAVE_MEMBLOCK | ||
| 20 | select HAVE_PERF_EVENTS | ||
| 21 | select HAVE_SPARSE_IRQ | ||
| 22 | select IRQ_DOMAIN | ||
| 23 | select NO_BOOTMEM | ||
| 24 | select OF | ||
| 25 | select OF_EARLY_FLATTREE | ||
| 26 | select PERF_USE_VMALLOC | ||
| 27 | select RTC_LIB | ||
| 28 | select SPARSE_IRQ | ||
| 29 | help | ||
| 30 | ARM 64-bit (AArch64) Linux support. | ||
| 31 | |||
| 32 | config 64BIT | ||
| 33 | def_bool y | ||
| 34 | |||
| 35 | config ARCH_PHYS_ADDR_T_64BIT | ||
| 36 | def_bool y | ||
| 37 | |||
| 38 | config MMU | ||
| 39 | def_bool y | ||
| 40 | |||
| 41 | config NO_IOPORT | ||
| 42 | def_bool y | ||
| 43 | |||
| 44 | config STACKTRACE_SUPPORT | ||
| 45 | def_bool y | ||
| 46 | |||
| 47 | config LOCKDEP_SUPPORT | ||
| 48 | def_bool y | ||
| 49 | |||
| 50 | config TRACE_IRQFLAGS_SUPPORT | ||
| 51 | def_bool y | ||
| 52 | |||
| 53 | config GENERIC_LOCKBREAK | ||
| 54 | def_bool y | ||
| 55 | depends on SMP && PREEMPT | ||
| 56 | |||
| 57 | config RWSEM_GENERIC_SPINLOCK | ||
| 58 | def_bool y | ||
| 59 | |||
| 60 | config GENERIC_HWEIGHT | ||
| 61 | def_bool y | ||
| 62 | |||
| 63 | config GENERIC_CSUM | ||
| 64 | def_bool y | ||
| 65 | |||
| 66 | config GENERIC_CALIBRATE_DELAY | ||
| 67 | def_bool y | ||
| 68 | |||
| 69 | config ZONE_DMA32 | ||
| 70 | def_bool y | ||
| 71 | |||
| 72 | config ARCH_DMA_ADDR_T_64BIT | ||
| 73 | def_bool y | ||
| 74 | |||
| 75 | config NEED_DMA_MAP_STATE | ||
| 76 | def_bool y | ||
| 77 | |||
| 78 | config NEED_SG_DMA_LENGTH | ||
| 79 | def_bool y | ||
| 80 | |||
| 81 | config SWIOTLB | ||
| 82 | def_bool y | ||
| 83 | |||
| 84 | config IOMMU_HELPER | ||
| 85 | def_bool SWIOTLB | ||
| 86 | |||
| 87 | source "init/Kconfig" | ||
| 88 | |||
| 89 | source "kernel/Kconfig.freezer" | ||
| 90 | |||
| 91 | menu "System Type" | ||
| 92 | |||
| 93 | endmenu | ||
| 94 | |||
| 95 | menu "Bus support" | ||
| 96 | |||
| 97 | config ARM_AMBA | ||
| 98 | bool | ||
| 99 | |||
| 100 | endmenu | ||
| 101 | |||
| 102 | menu "Kernel Features" | ||
| 103 | |||
| 104 | source "kernel/time/Kconfig" | ||
| 105 | |||
| 106 | config ARM64_64K_PAGES | ||
| 107 | bool "Enable 64KB pages support" | ||
| 108 | help | ||
| 109 | This feature enables 64KB pages support (4KB by default) | ||
| 110 | allowing only two levels of page tables and faster TLB | ||
| 111 | look-up. AArch32 emulation is not available when this feature | ||
| 112 | is enabled. | ||
| 113 | |||
| 114 | config SMP | ||
| 115 | bool "Symmetric Multi-Processing" | ||
| 116 | select USE_GENERIC_SMP_HELPERS | ||
| 117 | help | ||
| 118 | This enables support for systems with more than one CPU. If | ||
| 119 | you say N here, the kernel will run on single and | ||
| 120 | multiprocessor machines, but will use only one CPU of a | ||
| 121 | multiprocessor machine. If you say Y here, the kernel will run | ||
| 122 | on many, but not all, single processor machines. On a single | ||
| 123 | processor machine, the kernel will run faster if you say N | ||
| 124 | here. | ||
| 125 | |||
| 126 | If you don't know what to do here, say N. | ||
| 127 | |||
| 128 | config NR_CPUS | ||
| 129 | int "Maximum number of CPUs (2-32)" | ||
| 130 | range 2 32 | ||
| 131 | depends on SMP | ||
| 132 | default "4" | ||
| 133 | |||
| 134 | source kernel/Kconfig.preempt | ||
| 135 | |||
| 136 | config HZ | ||
| 137 | int | ||
| 138 | default 100 | ||
| 139 | |||
| 140 | config ARCH_HAS_HOLES_MEMORYMODEL | ||
| 141 | def_bool y if SPARSEMEM | ||
| 142 | |||
| 143 | config ARCH_SPARSEMEM_ENABLE | ||
| 144 | def_bool y | ||
| 145 | select SPARSEMEM_VMEMMAP_ENABLE | ||
| 146 | |||
| 147 | config ARCH_SPARSEMEM_DEFAULT | ||
| 148 | def_bool ARCH_SPARSEMEM_ENABLE | ||
| 149 | |||
| 150 | config ARCH_SELECT_MEMORY_MODEL | ||
| 151 | def_bool ARCH_SPARSEMEM_ENABLE | ||
| 152 | |||
| 153 | config HAVE_ARCH_PFN_VALID | ||
| 154 | def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM | ||
| 155 | |||
| 156 | config HW_PERF_EVENTS | ||
| 157 | bool "Enable hardware performance counter support for perf events" | ||
| 158 | depends on PERF_EVENTS | ||
| 159 | default y | ||
| 160 | help | ||
| 161 | Enable hardware performance counter support for perf events. If | ||
| 162 | disabled, perf events will use software events only. | ||
| 163 | |||
| 164 | source "mm/Kconfig" | ||
| 165 | |||
| 166 | endmenu | ||
| 167 | |||
| 168 | menu "Boot options" | ||
| 169 | |||
| 170 | config CMDLINE | ||
| 171 | string "Default kernel command string" | ||
| 172 | default "" | ||
| 173 | help | ||
| 174 | Provide a set of default command-line options at build time by | ||
| 175 | entering them here. As a minimum, you should specify the the | ||
| 176 | root device (e.g. root=/dev/nfs). | ||
| 177 | |||
| 178 | config CMDLINE_FORCE | ||
| 179 | bool "Always use the default kernel command string" | ||
| 180 | help | ||
| 181 | Always use the default kernel command string, even if the boot | ||
| 182 | loader passes other arguments to the kernel. | ||
| 183 | This is useful if you cannot or don't want to change the | ||
| 184 | command-line options your boot loader passes to the kernel. | ||
| 185 | |||
| 186 | endmenu | ||
| 187 | |||
| 188 | menu "Userspace binary formats" | ||
| 189 | |||
| 190 | source "fs/Kconfig.binfmt" | ||
| 191 | |||
| 192 | config COMPAT | ||
| 193 | bool "Kernel support for 32-bit EL0" | ||
| 194 | depends on !ARM64_64K_PAGES | ||
| 195 | select COMPAT_BINFMT_ELF | ||
| 196 | help | ||
| 197 | This option enables support for a 32-bit EL0 running under a 64-bit | ||
| 198 | kernel at EL1. AArch32-specific components such as system calls, | ||
| 199 | the user helper functions, VFP support and the ptrace interface are | ||
| 200 | handled appropriately by the kernel. | ||
| 201 | |||
| 202 | If you want to execute 32-bit userspace applications, say Y. | ||
| 203 | |||
| 204 | config SYSVIPC_COMPAT | ||
| 205 | def_bool y | ||
| 206 | depends on COMPAT && SYSVIPC | ||
| 207 | |||
| 208 | endmenu | ||
| 209 | |||
| 210 | source "net/Kconfig" | ||
| 211 | |||
| 212 | source "drivers/Kconfig" | ||
| 213 | |||
| 214 | source "fs/Kconfig" | ||
| 215 | |||
| 216 | source "arch/arm64/Kconfig.debug" | ||
| 217 | |||
| 218 | source "security/Kconfig" | ||
| 219 | |||
| 220 | source "crypto/Kconfig" | ||
| 221 | |||
| 222 | source "lib/Kconfig" | ||
diff --git a/arch/arm64/Kconfig.debug b/arch/arm64/Kconfig.debug new file mode 100644 index 000000000000..d7553f2bda66 --- /dev/null +++ b/arch/arm64/Kconfig.debug | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | menu "Kernel hacking" | ||
| 2 | |||
| 3 | source "lib/Kconfig.debug" | ||
| 4 | |||
| 5 | config FRAME_POINTER | ||
| 6 | bool | ||
| 7 | default y | ||
| 8 | |||
| 9 | config DEBUG_ERRORS | ||
| 10 | bool "Verbose kernel error messages" | ||
| 11 | depends on DEBUG_KERNEL | ||
| 12 | help | ||
| 13 | This option controls verbose debugging information which can be | ||
| 14 | printed when the kernel detects an internal error. This debugging | ||
| 15 | information is useful to kernel hackers when tracking down problems, | ||
| 16 | but mostly meaningless to other people. It's safe to say Y unless | ||
| 17 | you are concerned with the code size or don't want to see these | ||
| 18 | messages. | ||
| 19 | |||
| 20 | config DEBUG_STACK_USAGE | ||
| 21 | bool "Enable stack utilization instrumentation" | ||
| 22 | depends on DEBUG_KERNEL | ||
| 23 | help | ||
| 24 | Enables the display of the minimum amount of free stack which each | ||
| 25 | task has ever had available in the sysrq-T output. | ||
| 26 | |||
| 27 | endmenu | ||
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile new file mode 100644 index 000000000000..364191f3be43 --- /dev/null +++ b/arch/arm64/Makefile | |||
| @@ -0,0 +1,71 @@ | |||
| 1 | # | ||
| 2 | # arch/arm64/Makefile | ||
| 3 | # | ||
| 4 | # This file is included by the global makefile so that you can add your own | ||
| 5 | # architecture-specific flags and dependencies. | ||
| 6 | # | ||
| 7 | # This file is subject to the terms and conditions of the GNU General Public | ||
| 8 | # License. See the file "COPYING" in the main directory of this archive | ||
| 9 | # for more details. | ||
| 10 | # | ||
| 11 | # Copyright (C) 1995-2001 by Russell King | ||
| 12 | |||
| 13 | LDFLAGS_vmlinux :=-p --no-undefined -X | ||
| 14 | CPPFLAGS_vmlinux.lds = -DTEXT_OFFSET=$(TEXT_OFFSET) | ||
| 15 | OBJCOPYFLAGS :=-O binary -R .note -R .note.gnu.build-id -R .comment -S | ||
| 16 | GZFLAGS :=-9 | ||
| 17 | |||
| 18 | LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) | ||
| 19 | |||
| 20 | KBUILD_DEFCONFIG := defconfig | ||
| 21 | |||
| 22 | KBUILD_CFLAGS += -mgeneral-regs-only | ||
| 23 | KBUILD_CPPFLAGS += -mlittle-endian | ||
| 24 | AS += -EL | ||
| 25 | LD += -EL | ||
| 26 | |||
| 27 | comma = , | ||
| 28 | |||
| 29 | CHECKFLAGS += -D__aarch64__ | ||
| 30 | |||
| 31 | # Default value | ||
| 32 | head-y := arch/arm64/kernel/head.o | ||
| 33 | |||
| 34 | # The byte offset of the kernel image in RAM from the start of RAM. | ||
| 35 | TEXT_OFFSET := 0x00080000 | ||
| 36 | |||
| 37 | export TEXT_OFFSET GZFLAGS | ||
| 38 | |||
| 39 | core-y += arch/arm64/kernel/ arch/arm64/mm/ | ||
| 40 | libs-y := arch/arm64/lib/ $(libs-y) | ||
| 41 | libs-y += $(LIBGCC) | ||
| 42 | |||
| 43 | # Default target when executing plain make | ||
| 44 | KBUILD_IMAGE := Image.gz | ||
| 45 | |||
| 46 | all: $(KBUILD_IMAGE) | ||
| 47 | |||
| 48 | boot := arch/arm64/boot | ||
| 49 | |||
| 50 | Image Image.gz: vmlinux | ||
| 51 | $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ | ||
| 52 | |||
| 53 | zinstall install: vmlinux | ||
| 54 | $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@ | ||
| 55 | |||
| 56 | %.dtb: | ||
| 57 | $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ | ||
| 58 | |||
| 59 | # We use MRPROPER_FILES and CLEAN_FILES now | ||
| 60 | archclean: | ||
| 61 | $(Q)$(MAKE) $(clean)=$(boot) | ||
| 62 | |||
| 63 | define archhelp | ||
| 64 | echo '* Image.gz - Compressed kernel image (arch/$(ARCH)/boot/Image.gz)' | ||
| 65 | echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' | ||
| 66 | echo ' install - Install uncompressed kernel' | ||
| 67 | echo ' zinstall - Install compressed kernel' | ||
| 68 | echo ' Install using (your) ~/bin/installkernel or' | ||
| 69 | echo ' (distribution) /sbin/installkernel or' | ||
| 70 | echo ' install to $$(INSTALL_PATH) and run lilo' | ||
| 71 | endef | ||
diff --git a/arch/arm64/boot/.gitignore b/arch/arm64/boot/.gitignore new file mode 100644 index 000000000000..8dab0bb6ae66 --- /dev/null +++ b/arch/arm64/boot/.gitignore | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | Image | ||
| 2 | Image.gz | ||
diff --git a/arch/arm64/boot/Makefile b/arch/arm64/boot/Makefile new file mode 100644 index 000000000000..eca209b2b0bf --- /dev/null +++ b/arch/arm64/boot/Makefile | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | # | ||
| 2 | # arch/arm64/boot/Makefile | ||
| 3 | # | ||
| 4 | # This file is included by the global makefile so that you can add your own | ||
| 5 | # architecture-specific flags and dependencies. | ||
| 6 | # | ||
| 7 | # This file is subject to the terms and conditions of the GNU General Public | ||
| 8 | # License. See the file "COPYING" in the main directory of this archive | ||
| 9 | # for more details. | ||
| 10 | # | ||
| 11 | # Copyright (C) 2012, ARM Ltd. | ||
| 12 | # Author: Will Deacon <will.deacon@arm.com> | ||
| 13 | # | ||
| 14 | # Based on the ia64 boot/Makefile. | ||
| 15 | # | ||
| 16 | |||
| 17 | targets := Image Image.gz | ||
| 18 | |||
| 19 | $(obj)/Image: vmlinux FORCE | ||
| 20 | $(call if_changed,objcopy) | ||
| 21 | |||
| 22 | $(obj)/Image.gz: $(obj)/Image FORCE | ||
| 23 | $(call if_changed,gzip) | ||
| 24 | |||
| 25 | $(obj)/%.dtb: $(src)/dts/%.dts | ||
| 26 | $(call cmd,dtc) | ||
| 27 | |||
| 28 | install: $(obj)/Image | ||
| 29 | $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \ | ||
| 30 | $(obj)/Image System.map "$(INSTALL_PATH)" | ||
| 31 | |||
| 32 | zinstall: $(obj)/Image.gz | ||
| 33 | $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \ | ||
| 34 | $(obj)/Image.gz System.map "$(INSTALL_PATH)" | ||
| 35 | |||
| 36 | clean-files += *.dtb | ||
diff --git a/arch/arm64/boot/install.sh b/arch/arm64/boot/install.sh new file mode 100644 index 000000000000..12ed78aa6f0c --- /dev/null +++ b/arch/arm64/boot/install.sh | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # | ||
| 3 | # arch/arm64/boot/install.sh | ||
| 4 | # | ||
| 5 | # This file is subject to the terms and conditions of the GNU General Public | ||
| 6 | # License. See the file "COPYING" in the main directory of this archive | ||
| 7 | # for more details. | ||
| 8 | # | ||
| 9 | # Copyright (C) 1995 by Linus Torvalds | ||
| 10 | # | ||
| 11 | # Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin | ||
| 12 | # Adapted from code in arch/i386/boot/install.sh by Russell King | ||
| 13 | # | ||
| 14 | # "make install" script for the AArch64 Linux port | ||
| 15 | # | ||
| 16 | # Arguments: | ||
| 17 | # $1 - kernel version | ||
| 18 | # $2 - kernel image file | ||
| 19 | # $3 - kernel map file | ||
| 20 | # $4 - default install path (blank if root directory) | ||
| 21 | # | ||
| 22 | |||
| 23 | # User may have a custom install script | ||
| 24 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi | ||
| 25 | if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi | ||
| 26 | |||
| 27 | if [ "$(basename $2)" = "Image.gz" ]; then | ||
| 28 | # Compressed install | ||
| 29 | echo "Installing compressed kernel" | ||
| 30 | base=vmlinuz | ||
| 31 | else | ||
| 32 | # Normal install | ||
| 33 | echo "Installing normal kernel" | ||
| 34 | base=vmlinux | ||
| 35 | fi | ||
| 36 | |||
| 37 | if [ -f $4/$base-$1 ]; then | ||
| 38 | mv $4/$base-$1 $4/$base-$1.old | ||
| 39 | fi | ||
| 40 | cat $2 > $4/$base-$1 | ||
| 41 | |||
| 42 | # Install system map file | ||
| 43 | if [ -f $4/System.map-$1 ]; then | ||
| 44 | mv $4/System.map-$1 $4/System.map-$1.old | ||
| 45 | fi | ||
| 46 | cp $3 $4/System.map-$1 | ||
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig new file mode 100644 index 000000000000..9212c7880da7 --- /dev/null +++ b/arch/arm64/configs/defconfig | |||
| @@ -0,0 +1,85 @@ | |||
| 1 | CONFIG_EXPERIMENTAL=y | ||
| 2 | # CONFIG_LOCALVERSION_AUTO is not set | ||
| 3 | # CONFIG_SWAP is not set | ||
| 4 | CONFIG_SYSVIPC=y | ||
| 5 | CONFIG_POSIX_MQUEUE=y | ||
| 6 | CONFIG_BSD_PROCESS_ACCT=y | ||
| 7 | CONFIG_BSD_PROCESS_ACCT_V3=y | ||
| 8 | CONFIG_NO_HZ=y | ||
| 9 | CONFIG_HIGH_RES_TIMERS=y | ||
| 10 | CONFIG_IKCONFIG=y | ||
| 11 | CONFIG_IKCONFIG_PROC=y | ||
| 12 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 13 | # CONFIG_UTS_NS is not set | ||
| 14 | # CONFIG_IPC_NS is not set | ||
| 15 | # CONFIG_PID_NS is not set | ||
| 16 | # CONFIG_NET_NS is not set | ||
| 17 | CONFIG_SCHED_AUTOGROUP=y | ||
| 18 | CONFIG_BLK_DEV_INITRD=y | ||
| 19 | CONFIG_KALLSYMS_ALL=y | ||
| 20 | # CONFIG_COMPAT_BRK is not set | ||
| 21 | CONFIG_PROFILING=y | ||
| 22 | CONFIG_MODULES=y | ||
| 23 | CONFIG_MODULE_UNLOAD=y | ||
| 24 | # CONFIG_BLK_DEV_BSG is not set | ||
| 25 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 26 | CONFIG_SMP=y | ||
| 27 | CONFIG_PREEMPT_VOLUNTARY=y | ||
| 28 | CONFIG_CMDLINE="console=ttyAMA0" | ||
| 29 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 30 | CONFIG_COMPAT=y | ||
| 31 | CONFIG_NET=y | ||
| 32 | CONFIG_PACKET=y | ||
| 33 | CONFIG_UNIX=y | ||
| 34 | CONFIG_INET=y | ||
| 35 | CONFIG_IP_PNP=y | ||
| 36 | CONFIG_IP_PNP_DHCP=y | ||
| 37 | CONFIG_IP_PNP_BOOTP=y | ||
| 38 | # CONFIG_INET_LRO is not set | ||
| 39 | # CONFIG_IPV6 is not set | ||
| 40 | # CONFIG_WIRELESS is not set | ||
| 41 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 42 | CONFIG_DEVTMPFS=y | ||
| 43 | # CONFIG_BLK_DEV is not set | ||
| 44 | CONFIG_SCSI=y | ||
| 45 | # CONFIG_SCSI_PROC_FS is not set | ||
| 46 | CONFIG_BLK_DEV_SD=y | ||
| 47 | # CONFIG_SCSI_LOWLEVEL is not set | ||
| 48 | CONFIG_NETDEVICES=y | ||
| 49 | CONFIG_MII=y | ||
| 50 | # CONFIG_WLAN is not set | ||
| 51 | CONFIG_INPUT_EVDEV=y | ||
| 52 | # CONFIG_SERIO_I8042 is not set | ||
| 53 | # CONFIG_SERIO_SERPORT is not set | ||
| 54 | CONFIG_LEGACY_PTY_COUNT=16 | ||
| 55 | # CONFIG_HW_RANDOM is not set | ||
| 56 | # CONFIG_HWMON is not set | ||
| 57 | CONFIG_FB=y | ||
| 58 | # CONFIG_VGA_CONSOLE is not set | ||
| 59 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 60 | CONFIG_LOGO=y | ||
| 61 | # CONFIG_LOGO_LINUX_MONO is not set | ||
| 62 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
| 63 | # CONFIG_USB_SUPPORT is not set | ||
| 64 | # CONFIG_IOMMU_SUPPORT is not set | ||
| 65 | CONFIG_EXT2_FS=y | ||
| 66 | CONFIG_EXT3_FS=y | ||
| 67 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
| 68 | # CONFIG_EXT3_FS_XATTR is not set | ||
| 69 | CONFIG_FUSE_FS=y | ||
| 70 | CONFIG_CUSE=y | ||
| 71 | CONFIG_VFAT_FS=y | ||
| 72 | CONFIG_TMPFS=y | ||
| 73 | # CONFIG_MISC_FILESYSTEMS is not set | ||
| 74 | CONFIG_NFS_FS=y | ||
| 75 | CONFIG_ROOT_NFS=y | ||
| 76 | CONFIG_NLS_CODEPAGE_437=y | ||
| 77 | CONFIG_NLS_ISO8859_1=y | ||
| 78 | CONFIG_MAGIC_SYSRQ=y | ||
| 79 | CONFIG_DEBUG_FS=y | ||
| 80 | CONFIG_DEBUG_KERNEL=y | ||
| 81 | # CONFIG_SCHED_DEBUG is not set | ||
| 82 | CONFIG_DEBUG_INFO=y | ||
| 83 | # CONFIG_FTRACE is not set | ||
| 84 | CONFIG_ATOMIC64_SELFTEST=y | ||
| 85 | CONFIG_DEBUG_ERRORS=y | ||
diff --git a/arch/arm64/include/asm/prom.h b/arch/arm64/include/asm/prom.h new file mode 100644 index 000000000000..68b90e682957 --- /dev/null +++ b/arch/arm64/include/asm/prom.h | |||
| @@ -0,0 +1 @@ | |||
| /* Empty for now */ | |||
diff --git a/arch/arm64/kernel/.gitignore b/arch/arm64/kernel/.gitignore new file mode 100644 index 000000000000..c5f676c3c224 --- /dev/null +++ b/arch/arm64/kernel/.gitignore | |||
| @@ -0,0 +1 @@ | |||
| vmlinux.lds | |||
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile new file mode 100644 index 000000000000..e2caff1b812a --- /dev/null +++ b/arch/arm64/kernel/Makefile | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | # | ||
| 2 | # Makefile for the linux kernel. | ||
| 3 | # | ||
| 4 | |||
| 5 | CPPFLAGS_vmlinux.lds := -DTEXT_OFFSET=$(TEXT_OFFSET) | ||
| 6 | AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET) | ||
| 7 | |||
| 8 | # Object file lists. | ||
| 9 | arm64-obj-y := cputable.o debug-monitors.o entry.o irq.o fpsimd.o \ | ||
| 10 | entry-fpsimd.o process.o ptrace.o setup.o signal.o \ | ||
| 11 | sys.o stacktrace.o time.o traps.o io.o vdso.o | ||
| 12 | |||
| 13 | arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \ | ||
| 14 | sys_compat.o | ||
| 15 | arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o | ||
| 16 | arm64-obj-$(CONFIG_SMP) += smp.o | ||
| 17 | arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o | ||
| 18 | arm64-obj-$(CONFIG_HAVE_HW_BREAKPOINT)+= hw_breakpoint.o | ||
| 19 | |||
| 20 | obj-y += $(arm64-obj-y) vdso/ | ||
| 21 | obj-m += $(arm64-obj-m) | ||
| 22 | head-y := head.o | ||
| 23 | extra-y := $(head-y) vmlinux.lds | ||
| 24 | |||
| 25 | # vDSO - this must be built first to generate the symbol offsets | ||
| 26 | $(call objectify,$(arm64-obj-y)): $(obj)/vdso/vdso-offsets.h | ||
| 27 | $(obj)/vdso/vdso-offsets.h: $(obj)/vdso | ||
diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S new file mode 100644 index 000000000000..3fae2be8b016 --- /dev/null +++ b/arch/arm64/kernel/vmlinux.lds.S | |||
| @@ -0,0 +1,126 @@ | |||
| 1 | /* | ||
| 2 | * ld script to make ARM Linux kernel | ||
| 3 | * taken from the i386 version by Russell King | ||
| 4 | * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz> | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <asm-generic/vmlinux.lds.h> | ||
| 8 | #include <asm/thread_info.h> | ||
| 9 | #include <asm/memory.h> | ||
| 10 | #include <asm/page.h> | ||
| 11 | |||
| 12 | #define ARM_EXIT_KEEP(x) | ||
| 13 | #define ARM_EXIT_DISCARD(x) x | ||
| 14 | |||
| 15 | OUTPUT_ARCH(aarch64) | ||
| 16 | ENTRY(stext) | ||
| 17 | |||
| 18 | jiffies = jiffies_64; | ||
| 19 | |||
| 20 | SECTIONS | ||
| 21 | { | ||
| 22 | /* | ||
| 23 | * XXX: The linker does not define how output sections are | ||
| 24 | * assigned to input sections when there are multiple statements | ||
| 25 | * matching the same input section name. There is no documented | ||
| 26 | * order of matching. | ||
| 27 | */ | ||
| 28 | /DISCARD/ : { | ||
| 29 | ARM_EXIT_DISCARD(EXIT_TEXT) | ||
| 30 | ARM_EXIT_DISCARD(EXIT_DATA) | ||
| 31 | EXIT_CALL | ||
| 32 | *(.discard) | ||
| 33 | *(.discard.*) | ||
| 34 | } | ||
| 35 | |||
| 36 | . = PAGE_OFFSET + TEXT_OFFSET; | ||
| 37 | |||
| 38 | .head.text : { | ||
| 39 | _text = .; | ||
| 40 | HEAD_TEXT | ||
| 41 | } | ||
| 42 | .text : { /* Real text segment */ | ||
| 43 | _stext = .; /* Text and read-only data */ | ||
| 44 | *(.smp.pen.text) | ||
| 45 | __exception_text_start = .; | ||
| 46 | *(.exception.text) | ||
| 47 | __exception_text_end = .; | ||
| 48 | IRQENTRY_TEXT | ||
| 49 | TEXT_TEXT | ||
| 50 | SCHED_TEXT | ||
| 51 | LOCK_TEXT | ||
| 52 | *(.fixup) | ||
| 53 | *(.gnu.warning) | ||
| 54 | . = ALIGN(16); | ||
| 55 | *(.got) /* Global offset table */ | ||
| 56 | } | ||
| 57 | |||
| 58 | RO_DATA(PAGE_SIZE) | ||
| 59 | |||
| 60 | _etext = .; /* End of text and rodata section */ | ||
| 61 | |||
| 62 | . = ALIGN(PAGE_SIZE); | ||
| 63 | __init_begin = .; | ||
| 64 | |||
| 65 | INIT_TEXT_SECTION(8) | ||
| 66 | .exit.text : { | ||
| 67 | ARM_EXIT_KEEP(EXIT_TEXT) | ||
| 68 | } | ||
| 69 | . = ALIGN(16); | ||
| 70 | .init.data : { | ||
| 71 | INIT_DATA | ||
| 72 | INIT_SETUP(16) | ||
| 73 | INIT_CALLS | ||
| 74 | CON_INITCALL | ||
| 75 | SECURITY_INITCALL | ||
| 76 | INIT_RAM_FS | ||
| 77 | } | ||
| 78 | .exit.data : { | ||
| 79 | ARM_EXIT_KEEP(EXIT_DATA) | ||
| 80 | } | ||
| 81 | |||
| 82 | PERCPU_SECTION(64) | ||
| 83 | |||
| 84 | __init_end = .; | ||
| 85 | . = ALIGN(THREAD_SIZE); | ||
| 86 | __data_loc = .; | ||
| 87 | |||
| 88 | .data : AT(__data_loc) { | ||
| 89 | _data = .; /* address in memory */ | ||
| 90 | _sdata = .; | ||
| 91 | |||
| 92 | /* | ||
| 93 | * first, the init task union, aligned | ||
| 94 | * to an 8192 byte boundary. | ||
| 95 | */ | ||
| 96 | INIT_TASK_DATA(THREAD_SIZE) | ||
| 97 | NOSAVE_DATA | ||
| 98 | CACHELINE_ALIGNED_DATA(64) | ||
| 99 | READ_MOSTLY_DATA(64) | ||
| 100 | |||
| 101 | /* | ||
| 102 | * The exception fixup table (might need resorting at runtime) | ||
| 103 | */ | ||
| 104 | . = ALIGN(32); | ||
| 105 | __start___ex_table = .; | ||
| 106 | *(__ex_table) | ||
| 107 | __stop___ex_table = .; | ||
| 108 | |||
| 109 | /* | ||
| 110 | * and the usual data section | ||
| 111 | */ | ||
| 112 | DATA_DATA | ||
| 113 | CONSTRUCTORS | ||
| 114 | |||
| 115 | _edata = .; | ||
| 116 | } | ||
| 117 | _edata_loc = __data_loc + SIZEOF(.data); | ||
| 118 | |||
| 119 | NOTES | ||
| 120 | |||
| 121 | BSS_SECTION(0, 0, 0) | ||
| 122 | _end = .; | ||
| 123 | |||
| 124 | STABS_DEBUG | ||
| 125 | .comment 0 : { *(.comment) } | ||
| 126 | } | ||
diff --git a/arch/arm64/mm/Makefile b/arch/arm64/mm/Makefile new file mode 100644 index 000000000000..3140a2abcdc2 --- /dev/null +++ b/arch/arm64/mm/Makefile | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | obj-y := dma-mapping.o extable.o fault.o init.o \ | ||
| 2 | cache.o copypage.o flush.o \ | ||
| 3 | ioremap.o mmap.o pgd.o mmu.o \ | ||
| 4 | context.o tlb.o proc.o | ||
diff --git a/init/Kconfig b/init/Kconfig index af6c7f8ba019..8bfda465df2d 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
| @@ -1153,7 +1153,8 @@ menuconfig EXPERT | |||
| 1153 | 1153 | ||
| 1154 | config UID16 | 1154 | config UID16 |
| 1155 | bool "Enable 16-bit UID system calls" if EXPERT | 1155 | bool "Enable 16-bit UID system calls" if EXPERT |
| 1156 | depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION) | 1156 | depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION) \ |
| 1157 | || AARCH32_EMULATION | ||
| 1157 | default y | 1158 | default y |
| 1158 | help | 1159 | help |
| 1159 | This enables the legacy 16-bit UID syscall wrappers. | 1160 | This enables the legacy 16-bit UID syscall wrappers. |
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 2403a63b5da5..cfb4578ac2f7 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
| @@ -452,7 +452,8 @@ config SLUB_STATS | |||
| 452 | config DEBUG_KMEMLEAK | 452 | config DEBUG_KMEMLEAK |
| 453 | bool "Kernel memory leak detector" | 453 | bool "Kernel memory leak detector" |
| 454 | depends on DEBUG_KERNEL && EXPERIMENTAL && \ | 454 | depends on DEBUG_KERNEL && EXPERIMENTAL && \ |
| 455 | (X86 || ARM || PPC || MIPS || S390 || SPARC64 || SUPERH || MICROBLAZE || TILE) | 455 | (X86 || ARM || PPC || MIPS || S390 || SPARC64 || SUPERH || \ |
| 456 | MICROBLAZE || TILE || ARM64) | ||
| 456 | 457 | ||
| 457 | select DEBUG_FS | 458 | select DEBUG_FS |
| 458 | select STACKTRACE if STACKTRACE_SUPPORT | 459 | select STACKTRACE if STACKTRACE_SUPPORT |
| @@ -739,7 +740,8 @@ config DEBUG_BUGVERBOSE | |||
| 739 | bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT | 740 | bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT |
| 740 | depends on BUG | 741 | depends on BUG |
| 741 | depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \ | 742 | depends on ARM || AVR32 || M32R || M68K || SPARC32 || SPARC64 || \ |
| 742 | FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300 || TILE | 743 | FRV || SUPERH || GENERIC_BUG || BLACKFIN || MN10300 || \ |
| 744 | TILE || ARM64 | ||
| 743 | default y | 745 | default y |
| 744 | help | 746 | help |
| 745 | Say Y here to make BUG() panics output the file name and line number | 747 | Say Y here to make BUG() panics output the file name and line number |
