-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Catalin Marinas
committed
Sep 17, 2012
1 parent
10b663a
commit 8c2c3df
Showing
14 changed files
with
654 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,222 @@ | ||
config ARM64 | ||
def_bool y | ||
select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | ||
select GENERIC_CLOCKEVENTS | ||
select GENERIC_HARDIRQS_NO_DEPRECATED | ||
select GENERIC_IOMAP | ||
select GENERIC_IRQ_PROBE | ||
select GENERIC_IRQ_SHOW | ||
select GENERIC_SMP_IDLE_THREAD | ||
select GENERIC_TIME_VSYSCALL | ||
select HARDIRQS_SW_RESEND | ||
select HAVE_ARCH_TRACEHOOK | ||
select HAVE_DMA_API_DEBUG | ||
select HAVE_DMA_ATTRS | ||
select HAVE_GENERIC_DMA_COHERENT | ||
select HAVE_GENERIC_HARDIRQS | ||
select HAVE_HW_BREAKPOINT if PERF_EVENTS | ||
select HAVE_IRQ_WORK | ||
select HAVE_MEMBLOCK | ||
select HAVE_PERF_EVENTS | ||
select HAVE_SPARSE_IRQ | ||
select IRQ_DOMAIN | ||
select NO_BOOTMEM | ||
select OF | ||
select OF_EARLY_FLATTREE | ||
select PERF_USE_VMALLOC | ||
select RTC_LIB | ||
select SPARSE_IRQ | ||
help | ||
ARM 64-bit (AArch64) Linux support. | ||
|
||
config 64BIT | ||
def_bool y | ||
|
||
config ARCH_PHYS_ADDR_T_64BIT | ||
def_bool y | ||
|
||
config MMU | ||
def_bool y | ||
|
||
config NO_IOPORT | ||
def_bool y | ||
|
||
config STACKTRACE_SUPPORT | ||
def_bool y | ||
|
||
config LOCKDEP_SUPPORT | ||
def_bool y | ||
|
||
config TRACE_IRQFLAGS_SUPPORT | ||
def_bool y | ||
|
||
config GENERIC_LOCKBREAK | ||
def_bool y | ||
depends on SMP && PREEMPT | ||
|
||
config RWSEM_GENERIC_SPINLOCK | ||
def_bool y | ||
|
||
config GENERIC_HWEIGHT | ||
def_bool y | ||
|
||
config GENERIC_CSUM | ||
def_bool y | ||
|
||
config GENERIC_CALIBRATE_DELAY | ||
def_bool y | ||
|
||
config ZONE_DMA32 | ||
def_bool y | ||
|
||
config ARCH_DMA_ADDR_T_64BIT | ||
def_bool y | ||
|
||
config NEED_DMA_MAP_STATE | ||
def_bool y | ||
|
||
config NEED_SG_DMA_LENGTH | ||
def_bool y | ||
|
||
config SWIOTLB | ||
def_bool y | ||
|
||
config IOMMU_HELPER | ||
def_bool SWIOTLB | ||
|
||
source "init/Kconfig" | ||
|
||
source "kernel/Kconfig.freezer" | ||
|
||
menu "System Type" | ||
|
||
endmenu | ||
|
||
menu "Bus support" | ||
|
||
config ARM_AMBA | ||
bool | ||
|
||
endmenu | ||
|
||
menu "Kernel Features" | ||
|
||
source "kernel/time/Kconfig" | ||
|
||
config ARM64_64K_PAGES | ||
bool "Enable 64KB pages support" | ||
help | ||
This feature enables 64KB pages support (4KB by default) | ||
allowing only two levels of page tables and faster TLB | ||
look-up. AArch32 emulation is not available when this feature | ||
is enabled. | ||
|
||
config SMP | ||
bool "Symmetric Multi-Processing" | ||
select USE_GENERIC_SMP_HELPERS | ||
help | ||
This enables support for systems with more than one CPU. If | ||
you say N here, the kernel will run on single and | ||
multiprocessor machines, but will use only one CPU of a | ||
multiprocessor machine. If you say Y here, the kernel will run | ||
on many, but not all, single processor machines. On a single | ||
processor machine, the kernel will run faster if you say N | ||
here. | ||
|
||
If you don't know what to do here, say N. | ||
|
||
config NR_CPUS | ||
int "Maximum number of CPUs (2-32)" | ||
range 2 32 | ||
depends on SMP | ||
default "4" | ||
|
||
source kernel/Kconfig.preempt | ||
|
||
config HZ | ||
int | ||
default 100 | ||
|
||
config ARCH_HAS_HOLES_MEMORYMODEL | ||
def_bool y if SPARSEMEM | ||
|
||
config ARCH_SPARSEMEM_ENABLE | ||
def_bool y | ||
select SPARSEMEM_VMEMMAP_ENABLE | ||
|
||
config ARCH_SPARSEMEM_DEFAULT | ||
def_bool ARCH_SPARSEMEM_ENABLE | ||
|
||
config ARCH_SELECT_MEMORY_MODEL | ||
def_bool ARCH_SPARSEMEM_ENABLE | ||
|
||
config HAVE_ARCH_PFN_VALID | ||
def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM | ||
|
||
config HW_PERF_EVENTS | ||
bool "Enable hardware performance counter support for perf events" | ||
depends on PERF_EVENTS | ||
default y | ||
help | ||
Enable hardware performance counter support for perf events. If | ||
disabled, perf events will use software events only. | ||
|
||
source "mm/Kconfig" | ||
|
||
endmenu | ||
|
||
menu "Boot options" | ||
|
||
config CMDLINE | ||
string "Default kernel command string" | ||
default "" | ||
help | ||
Provide a set of default command-line options at build time by | ||
entering them here. As a minimum, you should specify the the | ||
root device (e.g. root=/dev/nfs). | ||
|
||
config CMDLINE_FORCE | ||
bool "Always use the default kernel command string" | ||
help | ||
Always use the default kernel command string, even if the boot | ||
loader passes other arguments to the kernel. | ||
This is useful if you cannot or don't want to change the | ||
command-line options your boot loader passes to the kernel. | ||
|
||
endmenu | ||
|
||
menu "Userspace binary formats" | ||
|
||
source "fs/Kconfig.binfmt" | ||
|
||
config COMPAT | ||
bool "Kernel support for 32-bit EL0" | ||
depends on !ARM64_64K_PAGES | ||
select COMPAT_BINFMT_ELF | ||
help | ||
This option enables support for a 32-bit EL0 running under a 64-bit | ||
kernel at EL1. AArch32-specific components such as system calls, | ||
the user helper functions, VFP support and the ptrace interface are | ||
handled appropriately by the kernel. | ||
|
||
If you want to execute 32-bit userspace applications, say Y. | ||
|
||
config SYSVIPC_COMPAT | ||
def_bool y | ||
depends on COMPAT && SYSVIPC | ||
|
||
endmenu | ||
|
||
source "net/Kconfig" | ||
|
||
source "drivers/Kconfig" | ||
|
||
source "fs/Kconfig" | ||
|
||
source "arch/arm64/Kconfig.debug" | ||
|
||
source "security/Kconfig" | ||
|
||
source "crypto/Kconfig" | ||
|
||
source "lib/Kconfig" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
menu "Kernel hacking" | ||
|
||
source "lib/Kconfig.debug" | ||
|
||
config FRAME_POINTER | ||
bool | ||
default y | ||
|
||
config DEBUG_ERRORS | ||
bool "Verbose kernel error messages" | ||
depends on DEBUG_KERNEL | ||
help | ||
This option controls verbose debugging information which can be | ||
printed when the kernel detects an internal error. This debugging | ||
information is useful to kernel hackers when tracking down problems, | ||
but mostly meaningless to other people. It's safe to say Y unless | ||
you are concerned with the code size or don't want to see these | ||
messages. | ||
|
||
config DEBUG_STACK_USAGE | ||
bool "Enable stack utilization instrumentation" | ||
depends on DEBUG_KERNEL | ||
help | ||
Enables the display of the minimum amount of free stack which each | ||
task has ever had available in the sysrq-T output. | ||
|
||
endmenu |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
# | ||
# arch/arm64/Makefile | ||
# | ||
# This file is included by the global makefile so that you can add your own | ||
# architecture-specific flags and dependencies. | ||
# | ||
# This file is subject to the terms and conditions of the GNU General Public | ||
# License. See the file "COPYING" in the main directory of this archive | ||
# for more details. | ||
# | ||
# Copyright (C) 1995-2001 by Russell King | ||
|
||
LDFLAGS_vmlinux :=-p --no-undefined -X | ||
CPPFLAGS_vmlinux.lds = -DTEXT_OFFSET=$(TEXT_OFFSET) | ||
OBJCOPYFLAGS :=-O binary -R .note -R .note.gnu.build-id -R .comment -S | ||
GZFLAGS :=-9 | ||
|
||
LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) | ||
|
||
KBUILD_DEFCONFIG := defconfig | ||
|
||
KBUILD_CFLAGS += -mgeneral-regs-only | ||
KBUILD_CPPFLAGS += -mlittle-endian | ||
AS += -EL | ||
LD += -EL | ||
|
||
comma = , | ||
|
||
CHECKFLAGS += -D__aarch64__ | ||
|
||
# Default value | ||
head-y := arch/arm64/kernel/head.o | ||
|
||
# The byte offset of the kernel image in RAM from the start of RAM. | ||
TEXT_OFFSET := 0x00080000 | ||
|
||
export TEXT_OFFSET GZFLAGS | ||
|
||
core-y += arch/arm64/kernel/ arch/arm64/mm/ | ||
libs-y := arch/arm64/lib/ $(libs-y) | ||
libs-y += $(LIBGCC) | ||
|
||
# Default target when executing plain make | ||
KBUILD_IMAGE := Image.gz | ||
|
||
all: $(KBUILD_IMAGE) | ||
|
||
boot := arch/arm64/boot | ||
|
||
Image Image.gz: vmlinux | ||
$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ | ||
|
||
zinstall install: vmlinux | ||
$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@ | ||
|
||
%.dtb: | ||
$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ | ||
|
||
# We use MRPROPER_FILES and CLEAN_FILES now | ||
archclean: | ||
$(Q)$(MAKE) $(clean)=$(boot) | ||
|
||
define archhelp | ||
echo '* Image.gz - Compressed kernel image (arch/$(ARCH)/boot/Image.gz)' | ||
echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' | ||
echo ' install - Install uncompressed kernel' | ||
echo ' zinstall - Install compressed kernel' | ||
echo ' Install using (your) ~/bin/installkernel or' | ||
echo ' (distribution) /sbin/installkernel or' | ||
echo ' install to $$(INSTALL_PATH) and run lilo' | ||
endef |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Image | ||
Image.gz |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# | ||
# arch/arm64/boot/Makefile | ||
# | ||
# This file is included by the global makefile so that you can add your own | ||
# architecture-specific flags and dependencies. | ||
# | ||
# This file is subject to the terms and conditions of the GNU General Public | ||
# License. See the file "COPYING" in the main directory of this archive | ||
# for more details. | ||
# | ||
# Copyright (C) 2012, ARM Ltd. | ||
# Author: Will Deacon <will.deacon@arm.com> | ||
# | ||
# Based on the ia64 boot/Makefile. | ||
# | ||
|
||
targets := Image Image.gz | ||
|
||
$(obj)/Image: vmlinux FORCE | ||
$(call if_changed,objcopy) | ||
|
||
$(obj)/Image.gz: $(obj)/Image FORCE | ||
$(call if_changed,gzip) | ||
|
||
$(obj)/%.dtb: $(src)/dts/%.dts | ||
$(call cmd,dtc) | ||
|
||
install: $(obj)/Image | ||
$(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \ | ||
$(obj)/Image System.map "$(INSTALL_PATH)" | ||
|
||
zinstall: $(obj)/Image.gz | ||
$(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \ | ||
$(obj)/Image.gz System.map "$(INSTALL_PATH)" | ||
|
||
clean-files += *.dtb |
Oops, something went wrong.