KVM/x86: Use SVM assembly instruction mnemonics instead of .byte streams
authorUros Bizjak <ubizjak@gmail.com>
Mon, 26 Nov 2018 16:00:08 +0000 (17:00 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 21 Dec 2018 10:28:44 +0000 (11:28 +0100)
Recently the minimum required version of binutils was changed to 2.20,
which supports all SVM instruction mnemonics. The patch removes
all .byte #defines and uses real instruction mnemonics instead.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/svm.h
arch/x86/kvm/svm.c

index 93b462e480671da6867ece31ec53c14c90093684..dec9c1e84c78ea3ef5ab1717c05ec0178aad2d99 100644 (file)
@@ -290,11 +290,4 @@ struct __attribute__ ((__packed__)) vmcb {
 
 #define SVM_CR0_SELECTIVE_MASK (X86_CR0_TS | X86_CR0_MP)
 
-#define SVM_VMLOAD ".byte 0x0f, 0x01, 0xda"
-#define SVM_VMRUN  ".byte 0x0f, 0x01, 0xd8"
-#define SVM_VMSAVE ".byte 0x0f, 0x01, 0xdb"
-#define SVM_CLGI   ".byte 0x0f, 0x01, 0xdd"
-#define SVM_STGI   ".byte 0x0f, 0x01, 0xdc"
-#define SVM_INVLPGA ".byte 0x0f, 0x01, 0xdf"
-
 #endif
index 47a9a45a2f70da42c7c37f1725f05ef2c13abe74..00594332bba5c349e14b7d70ce2c86cea7fbaa6e 100644 (file)
@@ -706,17 +706,17 @@ static u32 svm_msrpm_offset(u32 msr)
 
 static inline void clgi(void)
 {
-       asm volatile (__ex(SVM_CLGI));
+       asm volatile (__ex("clgi"));
 }
 
 static inline void stgi(void)
 {
-       asm volatile (__ex(SVM_STGI));
+       asm volatile (__ex("stgi"));
 }
 
 static inline void invlpga(unsigned long addr, u32 asid)
 {
-       asm volatile (__ex(SVM_INVLPGA) : : "a"(addr), "c"(asid));
+       asm volatile (__ex("invlpga %1, %0") : : "c"(asid), "a"(addr));
 }
 
 static int get_npt_level(struct kvm_vcpu *vcpu)
@@ -5652,9 +5652,9 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
                /* Enter guest mode */
                "push %%" _ASM_AX " \n\t"
                "mov %c[vmcb](%[svm]), %%" _ASM_AX " \n\t"
-               __ex(SVM_VMLOAD) "\n\t"
-               __ex(SVM_VMRUN) "\n\t"
-               __ex(SVM_VMSAVE) "\n\t"
+               __ex("vmload %%" _ASM_AX) "\n\t"
+               __ex("vmrun %%" _ASM_AX) "\n\t"
+               __ex("vmsave %%" _ASM_AX) "\n\t"
                "pop %%" _ASM_AX " \n\t"
 
                /* Save guest registers, load host registers */