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 /arch | |
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>
Diffstat (limited to 'arch')
-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 |
12 files changed, 648 insertions, 0 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 | ||