9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit c8e0b8c035409bc5a289288ec69ccfe74b35deb4
parent cacbb76201a4151eeb31ea1054cd945fbd358c69
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date:   Sun, 14 Oct 2018 10:11:06 +0100

[arm64] Add a function to read rvbar_el3 from C

Change-Id: Ic1f7d456a9d7a3482b9858c670dd5860aa5c6105
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>

Diffstat:
March/arm64/arch.s | 5+++++
March/arm64/crt-none.s | 1-
March/arm64/rom.c | 4++--
Minclude/rcode.h | 1+
4 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/arch/arm64/arch.s b/arch/arm64/arch.s @@ -5,6 +5,7 @@ DAIF_DBG = 4 .text .globl panic,enaabt,disabt,enadbg,disdbg,wfi,wfe,swtch + .globl read_rvbar_el3 .align 2 panic: @@ -59,6 +60,10 @@ wfi: wfi wfe: wfe ret +read_rvbar_el3: + mrs x0,rvbar_el3 + ret + swtch: mov sp,x0 ldp x1,x0,[sp],#16 diff --git a/arch/arm64/crt-none.s b/arch/arm64/crt-none.s @@ -26,7 +26,6 @@ _start: mov x2,BSSSIZ bl memset - mrs x0,rvbar_el3 bl main adr x0,outsync b panic diff --git a/arch/arm64/rom.c b/arch/arm64/rom.c @@ -30,11 +30,11 @@ badrmc(Rmucmd *cmd, int error) } void -main(unsigned long long rvbar_el3) +main(void) { struct trapframe frame = { 0 }; /* don't leak info to EL3h */ - frame.elr = rvbar_el3; + frame.elr = read_rvbar_el3(); frame.spsr = 0xf << 6 | 0xd; swtch(&frame); diff --git a/include/rcode.h b/include/rcode.h @@ -65,6 +65,7 @@ extern void enadbg(void); extern void disdbg(void); extern void wfi(void); extern void wfe(void); +extern unsigned long long read_rvbar_el3(void); /* global constant variables */ extern const struct rowidx rowidx[];