host_cpuid is now available in target-i386/helper.c. Rename that function to cpu_x86_host_cpuid and use that one everywhere.
Signed-off-by: Amit Shah <[email protected]> --- qemu/qemu-kvm-x86.c | 37 ++----------------------------------- qemu/target-i386/cpu.h | 3 +++ qemu/target-i386/helper.c | 8 ++++---- 3 files changed, 9 insertions(+), 39 deletions(-) diff --git a/qemu/qemu-kvm-x86.c b/qemu/qemu-kvm-x86.c index aa36be8..510692b 100644 --- a/qemu/qemu-kvm-x86.c +++ b/qemu/qemu-kvm-x86.c @@ -451,39 +451,6 @@ void kvm_arch_save_regs(CPUState *env) } } -static void host_cpuid(uint32_t function, uint32_t *eax, uint32_t *ebx, - uint32_t *ecx, uint32_t *edx) -{ - uint32_t vec[4]; - -#ifdef __x86_64__ - asm volatile("cpuid" - : "=a"(vec[0]), "=b"(vec[1]), - "=c"(vec[2]), "=d"(vec[3]) - : "0"(function) : "cc"); -#else - asm volatile("pusha \n\t" - "cpuid \n\t" - "mov %%eax, 0(%1) \n\t" - "mov %%ebx, 4(%1) \n\t" - "mov %%ecx, 8(%1) \n\t" - "mov %%edx, 12(%1) \n\t" - "popa" - : : "a"(function), "S"(vec) - : "memory", "cc"); -#endif - - if (eax) - *eax = vec[0]; - if (ebx) - *ebx = vec[1]; - if (ecx) - *ecx = vec[2]; - if (edx) - *edx = vec[3]; -} - - static void do_cpuid_ent(struct kvm_cpuid_entry *e, uint32_t function, CPUState *env) { @@ -497,7 +464,7 @@ static void do_cpuid_ent(struct kvm_cpuid_entry *e, uint32_t function, if (function == 0x80000001) { uint32_t h_eax, h_edx; - host_cpuid(function, &h_eax, NULL, NULL, &h_edx); + cpu_x86_host_cpuid(function, &h_eax, NULL, NULL, &h_edx); // long mode if ((h_edx & 0x20000000) == 0 || !lm_capable_kernel) @@ -519,7 +486,7 @@ static void do_cpuid_ent(struct kvm_cpuid_entry *e, uint32_t function, if (function == 0) { uint32_t bcd[3]; - host_cpuid(0, NULL, &bcd[0], &bcd[1], &bcd[2]); + cpu_x86_host_cpuid(0, NULL, &bcd[0], &bcd[1], &bcd[2]); e->ebx = bcd[0]; e->ecx = bcd[1]; e->edx = bcd[2]; diff --git a/qemu/target-i386/cpu.h b/qemu/target-i386/cpu.h index 0f518f8..816832d 100644 --- a/qemu/target-i386/cpu.h +++ b/qemu/target-i386/cpu.h @@ -746,6 +746,9 @@ void cpu_x86_set_a20(CPUX86State *env, int a20_state); void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx); +void cpu_x86_host_cpuid(uint32_t function, uint32_t *eax, uint32_t *ebx, + uint32_t *ecx, uint32_t *edx); + static inline int hw_breakpoint_enabled(unsigned long dr7, int index) { diff --git a/qemu/target-i386/helper.c b/qemu/target-i386/helper.c index 1c5b85c..6faa521 100644 --- a/qemu/target-i386/helper.c +++ b/qemu/target-i386/helper.c @@ -1377,8 +1377,8 @@ static void breakpoint_handler(CPUState *env) } #endif /* !CONFIG_USER_ONLY */ -static void host_cpuid(uint32_t function, uint32_t *eax, uint32_t *ebx, - uint32_t *ecx, uint32_t *edx) +void cpu_x86_host_cpuid(uint32_t function, uint32_t *eax, uint32_t *ebx, + uint32_t *ecx, uint32_t *edx) { #if defined(CONFIG_KVM) || defined(USE_KVM) uint32_t vec[4]; @@ -1436,7 +1436,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, * actuall cpu, and say goodbye to migration between different vendors * is you use compatibility mode. */ if (kvm_enabled()) - host_cpuid(0, NULL, ebx, ecx, edx); + cpu_x86_host_cpuid(0, NULL, ebx, ecx, edx); break; case 1: *eax = env->cpuid_version; @@ -1528,7 +1528,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, if (kvm_enabled()) { uint32_t h_eax, h_edx; - host_cpuid(0x80000001, &h_eax, NULL, NULL, &h_edx); + cpu_x86_host_cpuid(0x80000001, &h_eax, NULL, NULL, &h_edx); /* disable CPU features that the host does not support */ -- 1.5.4.3 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
