We can retrieve them from the per-cpu data structure now.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
void __attribute__((noreturn))
vcpu_deactivate_vmm(union registers *guest_regs);
-void vcpu_handle_exit(union registers *guest_regs, struct per_cpu *cpu_data);
+void vcpu_handle_exit(struct per_cpu *cpu_data);
void vcpu_park(void);
push %r14
push %r15
- mov %rsp,%rdi
- lea -PERCPU_STACK_END+16*8(%rsp),%rsi
+ lea -PERCPU_STACK_END+16*8(%rsp),%rdi
push %rax
call vcpu_handle_exit
pop %rax
mmio->is_write = !!(vmcb->exitinfo1 & 0x2);
}
-void vcpu_handle_exit(union registers *guest_regs, struct per_cpu *cpu_data)
+void vcpu_handle_exit(struct per_cpu *cpu_data)
{
+ union registers *guest_regs = &cpu_data->guest_regs;
struct vmcb *vmcb = &cpu_data->vmcb;
bool res = false;
int sipi_vector;
push %r14
push %r15
- mov %rsp,%rdi
- lea -PERCPU_STACK_END+16*8(%rsp),%rsi
+ lea -PERCPU_STACK_END+16*8(%rsp),%rdi
call vcpu_handle_exit
pop %r15
mmio->is_write = !!(exitq & 0x2);
}
-void vcpu_handle_exit(union registers *guest_regs, struct per_cpu *cpu_data)
+void vcpu_handle_exit(struct per_cpu *cpu_data)
{
+ union registers *guest_regs = &cpu_data->guest_regs;
u32 reason = vmcs_read32(VM_EXIT_REASON);
int sipi_vector;