summaryrefslogtreecommitdiff
path: root/OvmfPkg/XenBusDxe/X64/hypercall.S
blob: 83cf46695363149f814531b7723f3f1ef6bfeaf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# INTN
# EFIAPI
# XenHypercall2 (
#   IN     VOID *HypercallAddr,
#   IN OUT INTN Arg1,
#   IN OUT INTN Arg2
#   );
ASM_GLOBAL ASM_PFX(XenHypercall2)
ASM_PFX(XenHypercall2):
  push %rdi
  push %rsi
  # Copy HypercallAddr to rax
  movq %rcx, %rax
  # Copy Arg1 to the register expected by Xen
  movq %rdx, %rdi
  # Copy Arg2 to the register expected by Xen
  movq %r8, %rsi
  # Call HypercallAddr
  call *%rax
  pop %rsi
  pop %rdi
  ret