]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/XenHypercallLib/X64/hypercall.nasm
Ovmf/Xen: move XenBusDxe hypercall code to separate library
[mirror_edk2.git] / OvmfPkg / Library / XenHypercallLib / X64 / hypercall.nasm
diff --git a/OvmfPkg/Library/XenHypercallLib/X64/hypercall.nasm b/OvmfPkg/Library/XenHypercallLib/X64/hypercall.nasm
new file mode 100644 (file)
index 0000000..5e6a0c0
--- /dev/null
@@ -0,0 +1,26 @@
+DEFAULT REL\r
+SECTION .text\r
+\r
+; INTN\r
+; EFIAPI\r
+; __XenHypercall2 (\r
+;   IN     VOID *HypercallAddr,\r
+;   IN OUT INTN Arg1,\r
+;   IN OUT INTN Arg2\r
+;   );\r
+global ASM_PFX(__XenHypercall2)\r
+ASM_PFX(__XenHypercall2):\r
+  push rdi\r
+  push rsi\r
+  ; Copy HypercallAddr to rax\r
+  mov rax, rcx\r
+  ; Copy Arg1 to the register expected by Xen\r
+  mov rdi, rdx\r
+  ; Copy Arg2 to the register expected by Xen\r
+  mov rsi, r8\r
+  ; Call HypercallAddr\r
+  call rax\r
+  pop rsi\r
+  pop rdi\r
+  ret\r
+\r