9os

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

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:
March/arm64/arch.s | 2+-
March/arm64/rom-rmode.c | 2+-
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;