[coreboot-gerrit] New patch to review for coreboot: 7841dee libpayload arm64: Initialize exception stack

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Fri Mar 20 10:33:03 CET 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8782

-gerrit

commit 7841dee5b3fb8a8dd07dd2fec7b0136ac591eaf8
Author: Furquan Shaikh <furquan at google.com>
Date:   Wed Aug 27 21:40:23 2014 -0700

    libpayload arm64: Initialize exception stack
    
    Initialize exception stack to be able to handle exceptions properly
    
    BUG=chrome-os-partner:31634
    BRANCH=None
    TEST=test_exc successfully generates and handles exceptions on ryu
    
    Change-Id: I19163fae080b9ac3297a7ffe404446e427bf9a1c
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: 99157687c5178c3b3eb79f5589343db1b2b4cc86
    Original-Change-Id: I4dc83ff32c1665e22127bf0b1e6d4c6b45c07a4a
    Original-Signed-off-by: Furquan Shaikh <furquan at google.com>
    Original-Reviewed-on: https://chromium-review.googlesource.com/214608
    Original-Tested-by: Furquan Shaikh <furquan at chromium.org>
    Original-Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    Original-Commit-Queue: Furquan Shaikh <furquan at chromium.org>
---
 payloads/libpayload/arch/arm64/head.S              | 19 ++++++++++---------
 payloads/libpayload/arch/arm64/libpayload.ldscript |  5 +++++
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/payloads/libpayload/arch/arm64/head.S b/payloads/libpayload/arch/arm64/head.S
index 214c5d7..349dfd4 100644
--- a/payloads/libpayload/arch/arm64/head.S
+++ b/payloads/libpayload/arch/arm64/head.S
@@ -38,24 +38,23 @@ ENTRY(_entry)
 	ldr x1, 1f
 	str x0, [x1]
 
-	/* TODO: disable interrupts */
+	/* Setup exception stack */
+	ldr x1, 3f
+	msr SPSel, #1
+	isb
 
-	/* TODO: Clear BSS */
+	mov sp, x1
 
 	/* Setup new stack */
 	ldr x1, 2f
-	mov sp, x1
+	msr SPSel, #0
+	isb
 
-	/* TODO: Save old stack pointer and link register */
+	mov sp, x1
 
 	/* Let's rock. */
 	bl start_main
 
-	/* %r0 has the return value - pass it on unmolested */
-
-	/* TODO: restore old stack pointer and link register */
-
-	/* Return to the original context. */
 	ret
 ENDPROC(_entry)
 
@@ -64,3 +63,5 @@ ENDPROC(_entry)
 .quad	cb_header_ptr
 2:
 .quad	_stack
+3:
+.quad   _exc_stack
diff --git a/payloads/libpayload/arch/arm64/libpayload.ldscript b/payloads/libpayload/arch/arm64/libpayload.ldscript
index 41a2e89..1b4395f 100644
--- a/payloads/libpayload/arch/arm64/libpayload.ldscript
+++ b/payloads/libpayload/arch/arm64/libpayload.ldscript
@@ -82,6 +82,11 @@ SECTIONS
 		. += STACK_SIZE;
 		. = ALIGN(16);
 		_stack = .;
+
+		_exc_estack = .;
+		. += STACK_SIZE;
+		. = ALIGN(16);
+		_exc_stack = .;
 	}
 
 	_end = .;



More information about the coreboot-gerrit mailing list