|
4 | 4 |
|
5 | 5 | #include <asm/cpufeatures.h>
|
6 | 6 | #include <asm/alternative.h>
|
| 7 | +#include <linux/stringify.h> |
7 | 8 |
|
8 | 9 | /*
|
9 | 10 | * The hypercall definitions differ in the low word of the %edx argument
|
|
20 | 21 | */
|
21 | 22 |
|
22 | 23 | /* Old port-based version */
|
23 |
| -#define VMWARE_HYPERVISOR_PORT "0x5658" |
24 |
| -#define VMWARE_HYPERVISOR_PORT_HB "0x5659" |
| 24 | +#define VMWARE_HYPERVISOR_PORT 0x5658 |
| 25 | +#define VMWARE_HYPERVISOR_PORT_HB 0x5659 |
25 | 26 |
|
26 | 27 | /* Current vmcall / vmmcall version */
|
27 | 28 | #define VMWARE_HYPERVISOR_HB BIT(0)
|
28 | 29 | #define VMWARE_HYPERVISOR_OUT BIT(1)
|
29 | 30 |
|
30 | 31 | /* The low bandwidth call. The low word of edx is presumed clear. */
|
31 | 32 | #define VMWARE_HYPERCALL \
|
32 |
| - ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT ", %%dx; " \ |
| 33 | + ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT) ", %%dx; " \ |
33 | 34 | "inl (%%dx), %%eax", \
|
34 | 35 | "vmcall", X86_FEATURE_VMCALL, \
|
35 | 36 | "vmmcall", X86_FEATURE_VMW_VMMCALL)
|
|
39 | 40 | * HB and OUT bits set.
|
40 | 41 | */
|
41 | 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 | 45 | "vmcall", X86_FEATURE_VMCALL, \
|
44 | 46 | "vmmcall", X86_FEATURE_VMW_VMMCALL)
|
45 | 47 |
|
|
48 | 50 | * HB bit set.
|
49 | 51 | */
|
50 | 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 | 55 | "vmcall", X86_FEATURE_VMCALL, \
|
53 | 56 | "vmmcall", X86_FEATURE_VMW_VMMCALL)
|
54 | 57 | #endif
|
0 commit comments