This is the second step to get rid of arch_handle_exit(). There's no need to call vmreturn() from arch_handle_exit(). Let's move this to assembly.
Signed-off-by: Ralf Ramsauer <ralf.ramsa...@oth-regensburg.de> --- hypervisor/arch/arm64/entry.S | 4 +++- hypervisor/arch/arm64/traps.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hypervisor/arch/arm64/entry.S b/hypervisor/arch/arm64/entry.S index 8cf9dd6b..e0240f00 100644 --- a/hypervisor/arch/arm64/entry.S +++ b/hypervisor/arch/arm64/entry.S @@ -315,7 +315,8 @@ bootstrap_vectors: mov x30, xzr mov x0, sp bl arch_handle_exit - b . + /* take the fast exit path, sp is already in place */ + b __vmreturn .endm .align 11 @@ -413,6 +414,7 @@ shutdown_el2: vmreturn: /* x0: union registers* */ mov sp, x0 +__vmreturn: ldp x29, x30, [sp, #(15 * 16)] ldp x27, x28, [sp, #(14 * 16)] ldp x25, x26, [sp, #(13 * 16)] diff --git a/hypervisor/arch/arm64/traps.c b/hypervisor/arch/arm64/traps.c index 42dd9792..ccb86954 100644 --- a/hypervisor/arch/arm64/traps.c +++ b/hypervisor/arch/arm64/traps.c @@ -213,5 +213,5 @@ union registers *arch_handle_exit(union registers *regs) panic_stop(); } - vmreturn(regs); + return regs; } -- 2.19.1 -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to jailhouse-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.