From 6f33f0a87d7ce60d10d2fe9cfa3f721fb598840e Mon Sep 17 00:00:00 2001
From: Furquan Shaikh <furquan@google.com>
Date: Thu, 2 Oct 2014 16:43:19 -0700
Subject: arm64: Add verstage support

This stage is not tested on any hardware.

BUG=None
BRANCH=None
TEST=Compiles successfully for rush_ryu and veyron_pinky

Original-Change-Id: I6dd266471c815895bb3dd53d34aacc8fe825eeb6
Original-Signed-off-by: Furquan Shaikh <furquan@google.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/221911
Original-Tested-by: Furquan Shaikh <furquan@chromium.org>
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Original-Commit-Queue: Furquan Shaikh <furquan@chromium.org>

(cherry picked from commit 907ea2d1f8c9f01d815e8673695dd5271322c7a8)
Signed-off-by: Aaron Durbin <adurbin@chromium.org>

Change-Id: I617a742d4a387be947086dae33e9a913f742a8d1
Reviewed-on: http://review.coreboot.org/9255
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
---
 src/arch/arm64/Makefile.inc           | 20 ++++++++++++++++++++
 src/arch/arm64/armv8/Makefile.inc     | 14 ++++++++++++++
 src/arch/arm64/armv8/lib/Makefile.inc |  4 ++++
 3 files changed, 38 insertions(+)

(limited to 'src/arch')

diff --git a/src/arch/arm64/Makefile.inc b/src/arch/arm64/Makefile.inc
index b2b627c07f..1bc6c1113e 100644
--- a/src/arch/arm64/Makefile.inc
+++ b/src/arch/arm64/Makefile.inc
@@ -76,6 +76,26 @@ $(objcbfs)/bootblock.debug: $$(bootblock-objs) $(obj)/config.h
 
 endif # CONFIG_ARCH_BOOTBLOCK_ARM64
 
+###############################################################################
+# verification stage
+###############################################################################
+
+ifeq ($(CONFIG_ARCH_VERSTAGE_ARM64),y)
+
+$(objcbfs)/verstage.debug: $$(verstage-objs) $$(VB2_LIB) $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.verstage.ld $(obj)/config.h
+	@printf "    LINK       $(subst $(obj)/,,$(@))\n"
+	$(LD_verstage) --gc-sections -static -o $@ -L$(obj) --start-group $(verstage-objs) $(VBS_LIB) --end-group -T $(obj)/mainboard/$(MAINBOARDDIR)/memlayout.verstage.ld
+
+verstage-$(CONFIG_EARLY_CONSOLE) += early_console.c
+verstage-y += div0.c
+verstage-y += eabi_compat.c
+verstage-y += ../../lib/memset.c
+verstage-y += ../../lib/memcpy.c
+verstage-y += ../../lib/memmove.c
+verstage-y += stages.c
+
+endif # CONFIG_ARCH_VERSTAGE_ARM64
+
 ################################################################################
 # romstage
 ################################################################################
diff --git a/src/arch/arm64/armv8/Makefile.inc b/src/arch/arm64/armv8/Makefile.inc
index ae9f38dd75..5532b47a14 100644
--- a/src/arch/arm64/armv8/Makefile.inc
+++ b/src/arch/arm64/armv8/Makefile.inc
@@ -45,6 +45,20 @@ bootblock-S-ccopts += $(armv8_asm_flags)
 
 endif
 
+################################################################################
+## verstage
+################################################################################
+ifeq ($(CONFIG_ARCH_VERSTAGE_ARMV8_64),y)
+
+verstage-y += cache.c
+verstage-y += cpu.S
+verstage-y += exception.c
+
+verstage-c-ccopts += $(armv8_flags)
+verstage-S-ccopts += $(armv8_asm_flags)
+
+endif
+
 ################################################################################
 ## romstage
 ################################################################################
diff --git a/src/arch/arm64/armv8/lib/Makefile.inc b/src/arch/arm64/armv8/lib/Makefile.inc
index 0622593e4f..7e647bd6bc 100644
--- a/src/arch/arm64/armv8/lib/Makefile.inc
+++ b/src/arch/arm64/armv8/lib/Makefile.inc
@@ -26,6 +26,10 @@ ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV8_64),y)
 bootblock-y += $(lib_access)
 endif
 
+ifeq ($(CONFIG_ARCH_VERSTAGE_ARMV8_64),y)
+verstage-y += $(lib_access)
+endif
+
 ifeq ($(CONFIG_ARCH_ROMSTAGE_ARMV8_64),y)
 romstage-y += $(lib_access)
 endif
-- 
cgit v1.2.3