static void cpu_x86_fill_host(x86_def_t *x86_cpu_def)

{

    uint32_t eax = 0, ebx = 0, ecx = 0, edx = 0;



    x86_cpu_def->name = "host";

    host_cpuid(0x0, 0, &eax, &ebx, &ecx, &edx);

    x86_cpu_def->level = eax;

    x86_cpu_def->vendor1 = ebx;

    x86_cpu_def->vendor2 = edx;

    x86_cpu_def->vendor3 = ecx;



    host_cpuid(0x1, 0, &eax, &ebx, &ecx, &edx);

    x86_cpu_def->family = ((eax >> 8) & 0x0F) + ((eax >> 20) & 0xFF);

    x86_cpu_def->model = ((eax >> 4) & 0x0F) | ((eax & 0xF0000) >> 12);

    x86_cpu_def->stepping = eax & 0x0F;

    x86_cpu_def->ext_features = ecx;

    x86_cpu_def->features = edx;



    if (kvm_enabled() && x86_cpu_def->level >= 7) {

        x86_cpu_def->cpuid_7_0_ebx_features = kvm_arch_get_supported_cpuid(kvm_state, 0x7, 0, R_EBX);

    } else {

        x86_cpu_def->cpuid_7_0_ebx_features = 0;

    }



    host_cpuid(0x80000000, 0, &eax, &ebx, &ecx, &edx);

    x86_cpu_def->xlevel = eax;



    host_cpuid(0x80000001, 0, &eax, &ebx, &ecx, &edx);

    x86_cpu_def->ext2_features = edx;

    x86_cpu_def->ext3_features = ecx;

    cpu_x86_fill_model_id(x86_cpu_def->model_id);

    x86_cpu_def->vendor_override = 0;



    /* Call Centaur's CPUID instruction. */

    if (x86_cpu_def->vendor1 == CPUID_VENDOR_VIA_1 &&

        x86_cpu_def->vendor2 == CPUID_VENDOR_VIA_2 &&

        x86_cpu_def->vendor3 == CPUID_VENDOR_VIA_3) {

        host_cpuid(0xC0000000, 0, &eax, &ebx, &ecx, &edx);

        if (eax >= 0xC0000001) {

            /* Support VIA max extended level */

            x86_cpu_def->xlevel2 = eax;

            host_cpuid(0xC0000001, 0, &eax, &ebx, &ecx, &edx);

            x86_cpu_def->ext4_features = edx;

        }

    }



    /*

     * Every SVM feature requires emulation support in KVM - so we can't just

     * read the host features here. KVM might even support SVM features not

     * available on the host hardware. Just set all bits and mask out the

     * unsupported ones later.

     */

    x86_cpu_def->svm_features = -1;

}

static void cpu_x86_fill_host(x86_def_t *x86_cpu_def)

{

    uint32_t eax = 0, ebx = 0, ecx = 0, edx = 0;



    x86_cpu_def->name = "host";

    host_cpuid(0x0, 0, &eax, &ebx, &ecx, &edx);

    x86_cpu_def->level = eax;

    x86_cpu_def->vendor1 = ebx;

    x86_cpu_def->vendor2 = edx;

    x86_cpu_def->vendor3 = ecx;



    host_cpuid(0x1, 0, &eax, &ebx, &ecx, &edx);

    x86_cpu_def->family = ((eax >> 8) & 0x0F) + ((eax >> 20) & 0xFF);

    x86_cpu_def->model = ((eax >> 4) & 0x0F) | ((eax & 0xF0000) >> 12);

    x86_cpu_def->stepping = eax & 0x0F;

    x86_cpu_def->ext_features = ecx;

    x86_cpu_def->features = edx;



    if (kvm_enabled() && x86_cpu_def->level >= 7) {

        x86_cpu_def->cpuid_7_0_ebx_features = kvm_arch_get_supported_cpuid(kvm_state, 0x7, 0, R_EBX);

    } else {

        x86_cpu_def->cpuid_7_0_ebx_features = 0;

    }



    host_cpuid(0x80000000, 0, &eax, &ebx, &ecx, &edx);

    x86_cpu_def->xlevel = eax;



    host_cpuid(0x80000001, 0, &eax, &ebx, &ecx, &edx);

    x86_cpu_def->ext2_features = edx;

    x86_cpu_def->ext3_features = ecx;

    cpu_x86_fill_model_id(x86_cpu_def->model_id);

    x86_cpu_def->vendor_override = 0;



    

    if (x86_cpu_def->vendor1 == CPUID_VENDOR_VIA_1 &&

        x86_cpu_def->vendor2 == CPUID_VENDOR_VIA_2 &&

        x86_cpu_def->vendor3 == CPUID_VENDOR_VIA_3) {

        host_cpuid(0xC0000000, 0, &eax, &ebx, &ecx, &edx);

        if (eax >= 0xC0000001) {

            

            x86_cpu_def->xlevel2 = eax;

            host_cpuid(0xC0000001, 0, &eax, &ebx, &ecx, &edx);

            x86_cpu_def->ext4_features = edx;

        }

    }



    











    x86_cpu_def->svm_features = -1;

}

static void FUNC_0(x86_def_t *VAR_0)

{

    uint32_t eax = 0, ebx = 0, ecx = 0, edx = 0;



    VAR_0->name = "host";

    host_cpuid(0x0, 0, &eax, &ebx, &ecx, &edx);

    VAR_0->level = eax;

    VAR_0->vendor1 = ebx;

    VAR_0->vendor2 = edx;

    VAR_0->vendor3 = ecx;



    host_cpuid(0x1, 0, &eax, &ebx, &ecx, &edx);

    VAR_0->family = ((eax >> 8) & 0x0F) + ((eax >> 20) & 0xFF);

    VAR_0->model = ((eax >> 4) & 0x0F) | ((eax & 0xF0000) >> 12);

    VAR_0->stepping = eax & 0x0F;

    VAR_0->ext_features = ecx;

    VAR_0->features = edx;



    if (kvm_enabled() && VAR_0->level >= 7) {

        VAR_0->cpuid_7_0_ebx_features = kvm_arch_get_supported_cpuid(kvm_state, 0x7, 0, R_EBX);

    } else {

        VAR_0->cpuid_7_0_ebx_features = 0;

    }



    host_cpuid(0x80000000, 0, &eax, &ebx, &ecx, &edx);

    VAR_0->xlevel = eax;



    host_cpuid(0x80000001, 0, &eax, &ebx, &ecx, &edx);

    VAR_0->ext2_features = edx;

    VAR_0->ext3_features = ecx;

    cpu_x86_fill_model_id(VAR_0->model_id);

    VAR_0->vendor_override = 0;



    

    if (VAR_0->vendor1 == CPUID_VENDOR_VIA_1 &&

        VAR_0->vendor2 == CPUID_VENDOR_VIA_2 &&

        VAR_0->vendor3 == CPUID_VENDOR_VIA_3) {

        host_cpuid(0xC0000000, 0, &eax, &ebx, &ecx, &edx);

        if (eax >= 0xC0000001) {

            

            VAR_0->xlevel2 = eax;

            host_cpuid(0xC0000001, 0, &eax, &ebx, &ecx, &edx);

            VAR_0->ext4_features = edx;

        }

    }



    











    VAR_0->svm_features = -1;

}

static void FUNC_0(x86_def_t *VAR_0)
{ uint32_t eax = 0, ebx = 0, ecx = 0, edx = 0; VAR_0->name = "host"; host_cpuid(0x0, 0, &eax, &ebx, &ecx, &edx); VAR_0->level = eax; VAR_0->vendor1 = ebx; VAR_0->vendor2 = edx; VAR_0->vendor3 = ecx; host_cpuid(0x1, 0, &eax, &ebx, &ecx, &edx); VAR_0->family = ((eax >> 8) & 0x0F) + ((eax >> 20) & 0xFF); VAR_0->model = ((eax >> 4) & 0x0F) | ((eax & 0xF0000) >> 12); VAR_0->stepping = eax & 0x0F; VAR_0->ext_features = ecx; VAR_0->features = edx; if (kvm_enabled() && VAR_0->level >= 7) { VAR_0->cpuid_7_0_ebx_features = kvm_arch_get_supported_cpuid(kvm_state, 0x7, 0, R_EBX); } else { VAR_0->cpuid_7_0_ebx_features = 0; } host_cpuid(0x80000000, 0, &eax, &ebx, &ecx, &edx); VAR_0->xlevel = eax; host_cpuid(0x80000001, 0, &eax, &ebx, &ecx, &edx); VAR_0->ext2_features = edx; VAR_0->ext3_features = ecx; cpu_x86_fill_model_id(VAR_0->model_id); VAR_0->vendor_override = 0; if (VAR_0->vendor1 == CPUID_VENDOR_VIA_1 &&
VAR_0->vendor2 == CPUID_VENDOR_VIA_2 &&
VAR_0->vendor3 == CPUID_VENDOR_VIA_3) { host_cpuid(0xC0000000, 0, &eax, &ebx, &ecx, &edx); if (eax >= 0xC0000001) { VAR_0->xlevel2 = eax; host_cpuid(0xC0000001, 0, &eax, &ebx, &ecx, &edx); VAR_0->ext4_features = edx; } } VAR_0->svm_features = -1; }