From 668316bdccdb0372c7e450398ad1c81a9205d158 Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Sat, 30 Aug 2014 21:59:11 -0700 Subject: arm64: Add support for transition library Transition library provides the following functionalities: 1) Setup the environment for switching to any particular EL and jump to the loaded program at that EL. In short "Execute program X at exception level Y using the state Z" 2) Provides routines for exception entry and exception exit that can be used by any program to implement exception handling. The only routine required by the program would be exc_dispatch which handles the exception in its own required way and returns by making a call to exc_exit. On exc_exit, the transition library unwinds the whole stack by popping out the saved state of xregs BUG=chrome-os-partner:30785 BRANCH=None TEST=Compiles successfully and exceptions are tested for ramstage on ryu Change-Id: I8116556109665e61a53e4b3987d649e3cfed64a1 Signed-off-by: Patrick Georgi Original-Commit-Id: 8ab888e8cae0c5f1e79b0e16ca292869f16f1cca Original-Change-Id: I90f664ac657258724dc0c79bd9f6ceef70064f90 Original-Signed-off-by: Furquan Shaikh Original-Reviewed-on: https://chromium-review.googlesource.com/216375 Original-Reviewed-by: Aaron Durbin Original-Tested-by: Furquan Shaikh Original-Commit-Queue: Furquan Shaikh Reviewed-on: http://review.coreboot.org/9070 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- src/arch/arm64/Makefile.inc | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/arch/arm64/Makefile.inc') diff --git a/src/arch/arm64/Makefile.inc b/src/arch/arm64/Makefile.inc index b50499e93d..12f936e8c8 100644 --- a/src/arch/arm64/Makefile.inc +++ b/src/arch/arm64/Makefile.inc @@ -61,6 +61,8 @@ bootblock-y += c_entry.c bootblock-y += stage_entry.S bootblock-y += stages.c bootblock-y += eabi_compat.c +bootblock-y += transition.c transition_asm.S + bootblock-y += ../../lib/memset.c bootblock-y += ../../lib/memcpy.c bootblock-y += ../../lib/memmove.c @@ -88,6 +90,7 @@ romstage-y += ../../lib/memset.c romstage-y += ../../lib/memcpy.c romstage-y += ../../lib/memmove.c romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c +romstage-y += transition.c transition_asm.S rmodules_arm64-y += ../../lib/memset.c rmodules_arm64-y += ../../lib/memcpy.c @@ -120,6 +123,8 @@ ramstage-y += ../../lib/memset.c ramstage-y += ../../lib/memcpy.c ramstage-y += ../../lib/memmove.c ramstage-y += stage_entry.S +ramstage-y += transition.c transition_asm.S + rmodules_arm64-y += ../../lib/memset.c rmodules_arm64-y += ../../lib/memcpy.c rmodules_arm64-y += ../../lib/memmove.c -- cgit v1.2.3