aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@arm.com>2012-04-20 09:45:54 -0400
committerCatalin Marinas <catalin.marinas@arm.com>2012-09-17 08:42:21 -0400
commit8c2c3df31e3b87cb5348e48776c366ebd1dc5a7a (patch)
treec67b6e60bffd8d61a7d61ccb48f18cf1d6a68d75 /arch
parent10b663aef1c24794d32141be86b4dfcc64293bd0 (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/Kconfig222
-rw-r--r--arch/arm64/Kconfig.debug27
-rw-r--r--arch/arm64/Makefile71
-rw-r--r--arch/arm64/boot/.gitignore2
-rw-r--r--arch/arm64/boot/Makefile36
-rw-r--r--arch/arm64/boot/install.sh46
-rw-r--r--arch/arm64/configs/defconfig85
-rw-r--r--arch/arm64/include/asm/prom.h1
-rw-r--r--arch/arm64/kernel/.gitignore1
-rw-r--r--arch/arm64/kernel/Makefile27
-rw-r--r--arch/arm64/kernel/vmlinux.lds.S126
-rw-r--r--arch/arm64/mm/Makefile4
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 @@
1config 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
32config 64BIT
33 def_bool y
34
35config ARCH_PHYS_ADDR_T_64BIT
36 def_bool y
37
38config MMU
39 def_bool y
40
41config NO_IOPORT
42 def_bool y
43
44config STACKTRACE_SUPPORT
45 def_bool y
46
47config LOCKDEP_SUPPORT
48 def_bool y
49
50config TRACE_IRQFLAGS_SUPPORT
51 def_bool y
52
53config GENERIC_LOCKBREAK
54 def_bool y
55 depends on SMP && PREEMPT
56
57config RWSEM_GENERIC_SPINLOCK
58 def_bool y
59
60config GENERIC_HWEIGHT
61 def_bool y
62
63config GENERIC_CSUM
64 def_bool y
65
66config GENERIC_CALIBRATE_DELAY
67 def_bool y
68
69config ZONE_DMA32
70 def_bool y
71
72config ARCH_DMA_ADDR_T_64BIT
73 def_bool y
74
75config NEED_DMA_MAP_STATE
76 def_bool y
77
78config NEED_SG_DMA_LENGTH
79 def_bool y
80
81config SWIOTLB
82 def_bool y
83
84config IOMMU_HELPER
85 def_bool SWIOTLB
86
87source "init/Kconfig"
88
89source "kernel/Kconfig.freezer"
90
91menu "System Type"
92
93endmenu
94
95menu "Bus support"
96
97config ARM_AMBA
98 bool
99
100endmenu
101
102menu "Kernel Features"
103
104source "kernel/time/Kconfig"
105
106config 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
114config 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
128config NR_CPUS
129 int "Maximum number of CPUs (2-32)"
130 range 2 32
131 depends on SMP
132 default "4"
133
134source kernel/Kconfig.preempt
135
136config HZ
137 int
138 default 100
139
140config ARCH_HAS_HOLES_MEMORYMODEL
141 def_bool y if SPARSEMEM
142
143config ARCH_SPARSEMEM_ENABLE
144 def_bool y
145 select SPARSEMEM_VMEMMAP_ENABLE
146
147config ARCH_SPARSEMEM_DEFAULT
148 def_bool ARCH_SPARSEMEM_ENABLE
149
150config ARCH_SELECT_MEMORY_MODEL
151 def_bool ARCH_SPARSEMEM_ENABLE
152
153config HAVE_ARCH_PFN_VALID
154 def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
155
156config 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
164source "mm/Kconfig"
165
166endmenu
167
168menu "Boot options"
169
170config 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
178config 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
186endmenu
187
188menu "Userspace binary formats"
189
190source "fs/Kconfig.binfmt"
191
192config 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
204config SYSVIPC_COMPAT
205 def_bool y
206 depends on COMPAT && SYSVIPC
207
208endmenu
209
210source "net/Kconfig"
211
212source "drivers/Kconfig"
213
214source "fs/Kconfig"
215
216source "arch/arm64/Kconfig.debug"
217
218source "security/Kconfig"
219
220source "crypto/Kconfig"
221
222source "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 @@
1menu "Kernel hacking"
2
3source "lib/Kconfig.debug"
4
5config FRAME_POINTER
6 bool
7 default y
8
9config 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
20config 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
27endmenu
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
13LDFLAGS_vmlinux :=-p --no-undefined -X
14CPPFLAGS_vmlinux.lds = -DTEXT_OFFSET=$(TEXT_OFFSET)
15OBJCOPYFLAGS :=-O binary -R .note -R .note.gnu.build-id -R .comment -S
16GZFLAGS :=-9
17
18LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
19
20KBUILD_DEFCONFIG := defconfig
21
22KBUILD_CFLAGS += -mgeneral-regs-only
23KBUILD_CPPFLAGS += -mlittle-endian
24AS += -EL
25LD += -EL
26
27comma = ,
28
29CHECKFLAGS += -D__aarch64__
30
31# Default value
32head-y := arch/arm64/kernel/head.o
33
34# The byte offset of the kernel image in RAM from the start of RAM.
35TEXT_OFFSET := 0x00080000
36
37export TEXT_OFFSET GZFLAGS
38
39core-y += arch/arm64/kernel/ arch/arm64/mm/
40libs-y := arch/arm64/lib/ $(libs-y)
41libs-y += $(LIBGCC)
42
43# Default target when executing plain make
44KBUILD_IMAGE := Image.gz
45
46all: $(KBUILD_IMAGE)
47
48boot := arch/arm64/boot
49
50Image Image.gz: vmlinux
51 $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
52
53zinstall 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
60archclean:
61 $(Q)$(MAKE) $(clean)=$(boot)
62
63define 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'
71endef
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 @@
1Image
2Image.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
17targets := 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
28install: $(obj)/Image
29 $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
30 $(obj)/Image System.map "$(INSTALL_PATH)"
31
32zinstall: $(obj)/Image.gz
33 $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
34 $(obj)/Image.gz System.map "$(INSTALL_PATH)"
35
36clean-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
24if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
25if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
26
27if [ "$(basename $2)" = "Image.gz" ]; then
28# Compressed install
29 echo "Installing compressed kernel"
30 base=vmlinuz
31else
32# Normal install
33 echo "Installing normal kernel"
34 base=vmlinux
35fi
36
37if [ -f $4/$base-$1 ]; then
38 mv $4/$base-$1 $4/$base-$1.old
39fi
40cat $2 > $4/$base-$1
41
42# Install system map file
43if [ -f $4/System.map-$1 ]; then
44 mv $4/System.map-$1 $4/System.map-$1.old
45fi
46cp $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 @@
1CONFIG_EXPERIMENTAL=y
2# CONFIG_LOCALVERSION_AUTO is not set
3# CONFIG_SWAP is not set
4CONFIG_SYSVIPC=y
5CONFIG_POSIX_MQUEUE=y
6CONFIG_BSD_PROCESS_ACCT=y
7CONFIG_BSD_PROCESS_ACCT_V3=y
8CONFIG_NO_HZ=y
9CONFIG_HIGH_RES_TIMERS=y
10CONFIG_IKCONFIG=y
11CONFIG_IKCONFIG_PROC=y
12CONFIG_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
17CONFIG_SCHED_AUTOGROUP=y
18CONFIG_BLK_DEV_INITRD=y
19CONFIG_KALLSYMS_ALL=y
20# CONFIG_COMPAT_BRK is not set
21CONFIG_PROFILING=y
22CONFIG_MODULES=y
23CONFIG_MODULE_UNLOAD=y
24# CONFIG_BLK_DEV_BSG is not set
25# CONFIG_IOSCHED_DEADLINE is not set
26CONFIG_SMP=y
27CONFIG_PREEMPT_VOLUNTARY=y
28CONFIG_CMDLINE="console=ttyAMA0"
29# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
30CONFIG_COMPAT=y
31CONFIG_NET=y
32CONFIG_PACKET=y
33CONFIG_UNIX=y
34CONFIG_INET=y
35CONFIG_IP_PNP=y
36CONFIG_IP_PNP_DHCP=y
37CONFIG_IP_PNP_BOOTP=y
38# CONFIG_INET_LRO is not set
39# CONFIG_IPV6 is not set
40# CONFIG_WIRELESS is not set
41CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
42CONFIG_DEVTMPFS=y
43# CONFIG_BLK_DEV is not set
44CONFIG_SCSI=y
45# CONFIG_SCSI_PROC_FS is not set
46CONFIG_BLK_DEV_SD=y
47# CONFIG_SCSI_LOWLEVEL is not set
48CONFIG_NETDEVICES=y
49CONFIG_MII=y
50# CONFIG_WLAN is not set
51CONFIG_INPUT_EVDEV=y
52# CONFIG_SERIO_I8042 is not set
53# CONFIG_SERIO_SERPORT is not set
54CONFIG_LEGACY_PTY_COUNT=16
55# CONFIG_HW_RANDOM is not set
56# CONFIG_HWMON is not set
57CONFIG_FB=y
58# CONFIG_VGA_CONSOLE is not set
59CONFIG_FRAMEBUFFER_CONSOLE=y
60CONFIG_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
65CONFIG_EXT2_FS=y
66CONFIG_EXT3_FS=y
67# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
68# CONFIG_EXT3_FS_XATTR is not set
69CONFIG_FUSE_FS=y
70CONFIG_CUSE=y
71CONFIG_VFAT_FS=y
72CONFIG_TMPFS=y
73# CONFIG_MISC_FILESYSTEMS is not set
74CONFIG_NFS_FS=y
75CONFIG_ROOT_NFS=y
76CONFIG_NLS_CODEPAGE_437=y
77CONFIG_NLS_ISO8859_1=y
78CONFIG_MAGIC_SYSRQ=y
79CONFIG_DEBUG_FS=y
80CONFIG_DEBUG_KERNEL=y
81# CONFIG_SCHED_DEBUG is not set
82CONFIG_DEBUG_INFO=y
83# CONFIG_FTRACE is not set
84CONFIG_ATOMIC64_SELFTEST=y
85CONFIG_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
5CPPFLAGS_vmlinux.lds := -DTEXT_OFFSET=$(TEXT_OFFSET)
6AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET)
7
8# Object file lists.
9arm64-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
13arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \
14 sys_compat.o
15arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o
16arm64-obj-$(CONFIG_SMP) += smp.o
17arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o
18arm64-obj-$(CONFIG_HAVE_HW_BREAKPOINT)+= hw_breakpoint.o
19
20obj-y += $(arm64-obj-y) vdso/
21obj-m += $(arm64-obj-m)
22head-y := head.o
23extra-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
15OUTPUT_ARCH(aarch64)
16ENTRY(stext)
17
18jiffies = jiffies_64;
19
20SECTIONS
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 @@
1obj-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