mirror of
https://github.com/AsahiLinux/m1n1
synced 2025-02-16 21:58:27 +00:00
hv_asm: Move SP saving to a variable, per-CPU
Signed-off-by: Hector Martin <marcan@marcan.st>
This commit is contained in:
parent
c317b73b8c
commit
6c186f8468
2 changed files with 10 additions and 2 deletions
2
src/hv.c
2
src/hv.c
|
@ -17,6 +17,8 @@ extern char _hv_vectors_start[0];
|
||||||
|
|
||||||
u64 hv_tick_interval;
|
u64 hv_tick_interval;
|
||||||
|
|
||||||
|
u64 hv_saved_sp[MAX_CPUS];
|
||||||
|
|
||||||
void hv_init(void)
|
void hv_init(void)
|
||||||
{
|
{
|
||||||
pcie_shutdown();
|
pcie_shutdown();
|
||||||
|
|
10
src/hv_asm.S
10
src/hv_asm.S
|
@ -138,6 +138,8 @@ _v_hv_serr:
|
||||||
|
|
||||||
b _hv_return
|
b _hv_return
|
||||||
|
|
||||||
|
.extern hv_saved_sp
|
||||||
|
|
||||||
.globl hv_enter_guest
|
.globl hv_enter_guest
|
||||||
.type hv_enter_guest, @function
|
.type hv_enter_guest, @function
|
||||||
hv_enter_guest:
|
hv_enter_guest:
|
||||||
|
@ -149,8 +151,10 @@ hv_enter_guest:
|
||||||
stp x19, x20, [sp, #-16]!
|
stp x19, x20, [sp, #-16]!
|
||||||
str x18, [sp, #-16]!
|
str x18, [sp, #-16]!
|
||||||
|
|
||||||
|
mrs x7, tpidr_el2
|
||||||
|
ldr x6, =hv_saved_sp
|
||||||
mov x5, sp
|
mov x5, sp
|
||||||
msr tpidr_el2, x5
|
str x5, [x6, x7, LSL #3]
|
||||||
|
|
||||||
mrs x5, daif
|
mrs x5, daif
|
||||||
msr daifclr, 3
|
msr daifclr, 3
|
||||||
|
@ -168,7 +172,9 @@ hv_enter_guest:
|
||||||
.globl hv_exit_guest
|
.globl hv_exit_guest
|
||||||
.type hv_exit_guest, @function
|
.type hv_exit_guest, @function
|
||||||
hv_exit_guest:
|
hv_exit_guest:
|
||||||
mrs x5, tpidr_el2
|
mrs x7, tpidr_el2
|
||||||
|
ldr x6, =hv_saved_sp
|
||||||
|
ldr x5, [x6, x7, LSL #3]
|
||||||
mov sp, x5
|
mov sp, x5
|
||||||
|
|
||||||
ldr x18, [sp], #16
|
ldr x18, [sp], #16
|
||||||
|
|
Loading…
Add table
Reference in a new issue