From 786605b21d3996df956bf785b020996cc7df3763 Mon Sep 17 00:00:00 2001
From: Waldemar Brodkorb <wbx@openadk.org>
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