From: Eduardo Habkost Date: Mon, 22 Apr 2013 19:00:18 +0000 (-0300) Subject: target-i386: Use FeatureWord loop on filter_features_for_kvm() X-Git-Tag: qemu-xen-4.4.0-rc1~6^2~443^2~9 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=bd87d2a2c05569a28768648b069cbc24c40f4fb8;p=qemu-upstream-4.5-testing.git target-i386: Use FeatureWord loop on filter_features_for_kvm() Instead of open-coding the filtering code for each feature word, change the existing code to use the feature_word_info array, that has exactly the same CPUID eax/ecx/register values for each feature word. Signed-off-by: Eduardo Habkost Reviewed-by: Eric Blake Signed-off-by: Andreas Färber --- diff --git a/target-i386/cpu.c b/target-i386/cpu.c index 0f924696f..a39b36422 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -1651,24 +1651,14 @@ static void filter_features_for_kvm(X86CPU *cpu) { CPUX86State *env = &cpu->env; KVMState *s = kvm_state; + FeatureWord w; - env->features[FEAT_1_EDX] &= - kvm_arch_get_supported_cpuid(s, 1, 0, R_EDX); - env->features[FEAT_1_ECX] &= - kvm_arch_get_supported_cpuid(s, 1, 0, R_ECX); - env->features[FEAT_8000_0001_EDX] &= - kvm_arch_get_supported_cpuid(s, 0x80000001, 0, R_EDX); - env->features[FEAT_8000_0001_ECX] &= - kvm_arch_get_supported_cpuid(s, 0x80000001, 0, R_ECX); - env->features[FEAT_SVM] &= - kvm_arch_get_supported_cpuid(s, 0x8000000A, 0, R_EDX); - env->features[FEAT_7_0_EBX] &= - kvm_arch_get_supported_cpuid(s, 7, 0, R_EBX); - env->features[FEAT_KVM] &= - kvm_arch_get_supported_cpuid(s, KVM_CPUID_FEATURES, 0, R_EAX); - env->features[FEAT_C000_0001_EDX] &= - kvm_arch_get_supported_cpuid(s, 0xC0000001, 0, R_EDX); - + for (w = 0; w < FEATURE_WORDS; w++) { + FeatureWordInfo *wi = &feature_word_info[w]; + env->features[w] &= kvm_arch_get_supported_cpuid(s, wi->cpuid_eax, + wi->cpuid_ecx, + wi->cpuid_reg); + } } #endif