commit 5619eb8c9330a45b18f280e64df1d056b9cae1a3
parent 5f3d5751d816c1d1b92a7b632108adeeb9640e18
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date: Mon, 5 Nov 2018 15:43:55 +0000
[arm64] Don't adjust SP in swtch()
The value of SP is saved before being decremented.
Change-Id: I50fe6c5a34fe7729d47c16c0d8c7c1936fc57d41
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>
Diffstat:
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/arch.s b/arch/arm64/arch.s
@@ -135,7 +135,7 @@ outsync:
swtch:
ldp x9,x10,[x0,#16*17]
msr S3_6_C6_C0_6,x10 /* FAR_R */
- add sp,x9,#16*18
+ mov sp,x9
ldp x9,x10,[x0,#16*16]
msr S3_6_C4_C0_6,x9 /* SPSR_R */
diff --git a/arch/arm64/rom-rmode.c b/arch/arm64/rom-rmode.c
@@ -23,7 +23,7 @@ main(void *text, void *ram, size_t ramsiz)
enaint();
isb();
- frame.sp = bp + (ramsiz - sizeof(frame));
+ frame.sp = bp + ramsiz;
frame.elr = rd_rvbar_el3();
frame.spsr = 0xf << 6 | 0xd;