SECTION .text ; INTN ; EFIAPI ; XenHypercall2 ( ; IN VOID *HypercallAddr, ; IN OUT INTN Arg1, ; IN OUT INTN Arg2 ; ); global ASM_PFX(XenHypercall2) ASM_PFX(XenHypercall2): ; Save only ebx, ecx is supposed to be a scratch register and needs to be ; saved by the caller push ebx ; Copy HypercallAddr to eax mov eax, [esp + 8] ; Copy Arg1 to the register expected by Xen mov ebx, [esp + 12] ; Copy Arg2 to the register expected by Xen mov ecx, [esp + 16] ; Call HypercallAddr call eax pop ebx ret