summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/vmware.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/arch/x86/include/asm/vmware.h b/arch/x86/include/asm/vmware.h
index 3caac90f9761..ac9fc51e2b18 100644
--- a/arch/x86/include/asm/vmware.h
+++ b/arch/x86/include/asm/vmware.h
@@ -4,6 +4,7 @@
4 4
5#include <asm/cpufeatures.h> 5#include <asm/cpufeatures.h>
6#include <asm/alternative.h> 6#include <asm/alternative.h>
7#include <linux/stringify.h>
7 8
8/* 9/*
9 * The hypercall definitions differ in the low word of the %edx argument 10 * The hypercall definitions differ in the low word of the %edx argument
@@ -20,8 +21,8 @@
20 */ 21 */
21 22
22/* Old port-based version */ 23/* Old port-based version */
23#define VMWARE_HYPERVISOR_PORT "0x5658" 24#define VMWARE_HYPERVISOR_PORT 0x5658
24#define VMWARE_HYPERVISOR_PORT_HB "0x5659" 25#define VMWARE_HYPERVISOR_PORT_HB 0x5659
25 26
26/* Current vmcall / vmmcall version */ 27/* Current vmcall / vmmcall version */
27#define VMWARE_HYPERVISOR_HB BIT(0) 28#define VMWARE_HYPERVISOR_HB BIT(0)
@@ -29,7 +30,7 @@
29 30
30/* The low bandwidth call. The low word of edx is presumed clear. */ 31/* The low bandwidth call. The low word of edx is presumed clear. */
31#define VMWARE_HYPERCALL \ 32#define VMWARE_HYPERCALL \
32 ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT ", %%dx; " \ 33 ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT) ", %%dx; " \
33 "inl (%%dx), %%eax", \ 34 "inl (%%dx), %%eax", \
34 "vmcall", X86_FEATURE_VMCALL, \ 35 "vmcall", X86_FEATURE_VMCALL, \
35 "vmmcall", X86_FEATURE_VMW_VMMCALL) 36 "vmmcall", X86_FEATURE_VMW_VMMCALL)
@@ -39,7 +40,8 @@
39 * HB and OUT bits set. 40 * HB and OUT bits set.
40 */ 41 */
41#define VMWARE_HYPERCALL_HB_OUT \ 42#define VMWARE_HYPERCALL_HB_OUT \
42 ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT_HB ", %%dx; rep outsb", \ 43 ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT_HB) ", %%dx; " \
44 "rep outsb", \
43 "vmcall", X86_FEATURE_VMCALL, \ 45 "vmcall", X86_FEATURE_VMCALL, \
44 "vmmcall", X86_FEATURE_VMW_VMMCALL) 46 "vmmcall", X86_FEATURE_VMW_VMMCALL)
45 47
@@ -48,7 +50,8 @@
48 * HB bit set. 50 * HB bit set.
49 */ 51 */
50#define VMWARE_HYPERCALL_HB_IN \ 52#define VMWARE_HYPERCALL_HB_IN \
51 ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT_HB ", %%dx; rep insb", \ 53 ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT_HB) ", %%dx; " \
54 "rep insb", \
52 "vmcall", X86_FEATURE_VMCALL, \ 55 "vmcall", X86_FEATURE_VMCALL, \
53 "vmmcall", X86_FEATURE_VMW_VMMCALL) 56 "vmmcall", X86_FEATURE_VMW_VMMCALL)
54#endif 57#endif