From 786605b21d3996df956bf785b020996cc7df3763 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Tue, 15 Apr 2014 16:50:50 +0200 Subject: add basic support for aarch64 with ARMv8 foundation model, toolchain and kernel works, userland broken. --- target/aarch64/Config.in | 9 ++++++ target/aarch64/Makefile | 38 ++++++++++++++++++++++++++ target/aarch64/kernel/arm-fm | 7 +++++ target/aarch64/sys-available/arm-fm | 13 +++++++++ target/aarch64/sys-available/toolchain-aarch64 | 14 ++++++++++ target/aarch64/target.mk | 4 +++ 6 files changed, 85 insertions(+) create mode 100644 target/aarch64/Config.in create mode 100644 target/aarch64/Makefile create mode 100644 target/aarch64/kernel/arm-fm create mode 100644 target/aarch64/sys-available/arm-fm create mode 100644 target/aarch64/sys-available/toolchain-aarch64 create mode 100644 target/aarch64/target.mk (limited to 'target/aarch64') diff --git a/target/aarch64/Config.in b/target/aarch64/Config.in new file mode 100644 index 000000000..9e48de6b4 --- /dev/null +++ b/target/aarch64/Config.in @@ -0,0 +1,9 @@ +choice +depends on ADK_LINUX_AARCH64 && !ADK_CHOOSE_TARGET_ARCH +prompt "Target system" + +config ADK_CHOOSE_TARGET_SYSTEM_AARCH64 + boolean "Choose target system" + +source "target/aarch64/Config.in.systems" +endchoice diff --git a/target/aarch64/Makefile b/target/aarch64/Makefile new file mode 100644 index 000000000..d276472fa --- /dev/null +++ b/target/aarch64/Makefile @@ -0,0 +1,38 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(TOPDIR)/rules.mk +include $(TOPDIR)/mk/kernel.mk +include $(TOPDIR)/mk/modules.mk +include $(TOPDIR)/mk/kernel-build.mk +include $(TOPDIR)/mk/image.mk + +KERNEL:=${LINUX_DIR}/arch/arm64/boot/Image + +kernel-install: + cd $(TOPDIR) && \ + make -f Makefile \ + -C package/boot-wrapper-aarch64 clean + cd $(TOPDIR) && \ + make -f Makefile \ + -C package/boot-wrapper-aarch64 package + ${CP} ${LINUX_DIR}/linux-system.axf \ + $(FW_DIR)/$(TARGET_KERNEL) + +ifeq ($(ADK_TARGET_FS),archive) +imageinstall: $(FW_DIR)/$(ROOTFSTARBALL) + @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)" +endif +ifeq ($(ADK_TARGET_FS),initramfsarchive) +imageinstall: $(FW_DIR)/$(ROOTFSUSERTARBALL) + @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}' + @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSUSERTARBALL)" +endif +ifeq ($(ADK_TARGET_FS),initramfs-piggyback) +imageinstall: createinitramfs kernel-install + @echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}' +ifeq ($(ADK_TARGET_SYSTEM_ARM_FM),y) + @echo 'Start emulator via:' + @echo 'Foundation_v8 --image=$(FW_DIR)/${TARGET_KERNEL}' +endif +endif diff --git a/target/aarch64/kernel/arm-fm b/target/aarch64/kernel/arm-fm new file mode 100644 index 000000000..db8edb12d --- /dev/null +++ b/target/aarch64/kernel/arm-fm @@ -0,0 +1,7 @@ +CONFIG_ARM64=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_AEABI=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_SMC91X=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y diff --git a/target/aarch64/sys-available/arm-fm b/target/aarch64/sys-available/arm-fm new file mode 100644 index 000000000..4eef2aeaf --- /dev/null +++ b/target/aarch64/sys-available/arm-fm @@ -0,0 +1,13 @@ +config ADK_TARGET_SYSTEM_ARM_FM + bool "ARMv8 Foundation Model" + select ADK_aarch64 + select ADK_arm_fm + select ADK_little + select ADK_soft_float + select ADK_eabi + select ADK_CPU_ARMV8 + select ADK_LINUX_64 + select ADK_TARGET_KERNEL_IMAGE + select ADK_PACKAGE_BOOT_WRAPPER_AARCH64 + help + Support for ARMv8 Foundation Model (aarch64). diff --git a/target/aarch64/sys-available/toolchain-aarch64 b/target/aarch64/sys-available/toolchain-aarch64 new file mode 100644 index 000000000..638c3cdcf --- /dev/null +++ b/target/aarch64/sys-available/toolchain-aarch64 @@ -0,0 +1,14 @@ +config ADK_TARGET_SYSTEM_TOOLCHAIN_AARCH64 + bool "Toolchain only (little endian)" + select ADK_aarch64 + select ADK_toolchain_aarch64 + select ADK_little + select ADK_soft_float + select ADK_fpu_vfp + select ADK_eabi + select ADK_TOOLCHAIN + select ADK_CPU_ARMV8 + select ADK_LINUX_64 + select ADK_TARGET_PACKAGE_TXZ + help + AARCH64 toolchain. diff --git a/target/aarch64/target.mk b/target/aarch64/target.mk new file mode 100644 index 000000000..95a9f3337 --- /dev/null +++ b/target/aarch64/target.mk @@ -0,0 +1,4 @@ +include $(TOPDIR)/mk/kernel-ver.mk +ARCH:= arm64 +CPU_ARCH:= $(ADK_TARGET_CPU_ARCH) +TARGET_CFLAGS_ARCH:= $(ADK_TARGET_CFLAGS) -- cgit v1.2.3