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:
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[];