summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--OvmfPkg/XenBusDxe/X64/hypercall.S22
-rw-r--r--OvmfPkg/XenBusDxe/X64/hypercall.nasm (renamed from OvmfPkg/XenBusDxe/X64/hypercall.asm)8
-rw-r--r--OvmfPkg/XenBusDxe/XenBusDxe.inf3
3 files changed, 5 insertions, 28 deletions
diff --git a/OvmfPkg/XenBusDxe/X64/hypercall.S b/OvmfPkg/XenBusDxe/X64/hypercall.S
deleted file mode 100644
index 83cf466953..0000000000
--- a/OvmfPkg/XenBusDxe/X64/hypercall.S
+++ /dev/null
@@ -1,22 +0,0 @@
-# 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
diff --git a/OvmfPkg/XenBusDxe/X64/hypercall.asm b/OvmfPkg/XenBusDxe/X64/hypercall.nasm
index 5b3451473d..177f271ef0 100644
--- a/OvmfPkg/XenBusDxe/X64/hypercall.asm
+++ b/OvmfPkg/XenBusDxe/X64/hypercall.nasm
@@ -1,4 +1,5 @@
-.code
+DEFAULT REL
+SECTION .text
; INTN
; EFIAPI
@@ -7,7 +8,8 @@
; IN OUT INTN Arg1,
; IN OUT INTN Arg2
; );
-XenHypercall2 PROC
+global ASM_PFX(XenHypercall2)
+ASM_PFX(XenHypercall2):
push rdi
push rsi
; Copy HypercallAddr to rax
@@ -21,6 +23,4 @@ XenHypercall2 PROC
pop rsi
pop rdi
ret
-XenHypercall2 ENDP
-END
diff --git a/OvmfPkg/XenBusDxe/XenBusDxe.inf b/OvmfPkg/XenBusDxe/XenBusDxe.inf
index b421b852e8..3309f53f6b 100644
--- a/OvmfPkg/XenBusDxe/XenBusDxe.inf
+++ b/OvmfPkg/XenBusDxe/XenBusDxe.inf
@@ -54,8 +54,7 @@
Ia32/TestAndClearBit.nasm
[Sources.X64]
- X64/hypercall.S
- X64/hypercall.asm
+ X64/hypercall.nasm
X64/InterlockedCompareExchange16.S
X64/InterlockedCompareExchange16.asm
X64/TestAndClearBit.S