diff options
author | Eduardo Habkost <ehabkost@redhat.com> | 2013-04-22 16:00:15 -0300 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2013-05-02 00:27:55 +0200 |
commit | 0514ef2fbb3882afe410ba7800c79fd0ef5dbf00 (patch) | |
tree | 8c1d86b84c878a805deeda3fbf508947cd672d5c /linux-user | |
parent | 27861ecc47cf9dc35961ac901e26abbd898c377c (diff) | |
download | qemu-0514ef2fbb3882afe410ba7800c79fd0ef5dbf00.zip qemu-0514ef2fbb3882afe410ba7800c79fd0ef5dbf00.tar.gz qemu-0514ef2fbb3882afe410ba7800c79fd0ef5dbf00.tar.bz2 |
target-i386: Replace cpuid_*features fields with a feature word array
This replaces the feature-bit fields on both X86CPU and x86_def_t
structs with an array.
With this, we will be able to simplify code that simply does the same
operation on all feature words (e.g. kvm_check_features_against_host(),
filter_features_for_kvm(), add_flagname_to_bitmaps(), CPU feature-bit
property lookup/registration, and the proposed "feature-words" property)
The following field replacements were made on X86CPU and x86_def_t:
(cpuid_)features -> features[FEAT_1_EDX]
(cpuid_)ext_features -> features[FEAT_1_ECX]
(cpuid_)ext2_features -> features[FEAT_8000_0001_EDX]
(cpuid_)ext3_features -> features[FEAT_8000_0001_ECX]
(cpuid_)ext4_features -> features[FEAT_C000_0001_EDX]
(cpuid_)kvm_features -> features[FEAT_KVM]
(cpuid_)svm_features -> features[FEAT_SVM]
(cpuid_)7_0_ebx_features -> features[FEAT_7_0_EBX]
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'linux-user')
-rw-r--r-- | linux-user/elfload.c | 2 | ||||
-rw-r--r-- | linux-user/main.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 979b57c..ddef23e 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -137,7 +137,7 @@ static const char *get_elf_platform(void) static uint32_t get_elf_hwcap(void) { - return thread_env->cpuid_features; + return thread_env->features[FEAT_1_EDX]; } #ifdef TARGET_X86_64 diff --git a/linux-user/main.c b/linux-user/main.c index 4e92a0b..b97b8cf 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -3764,13 +3764,13 @@ int main(int argc, char **argv, char **envp) env->cr[0] = CR0_PG_MASK | CR0_WP_MASK | CR0_PE_MASK; env->hflags |= HF_PE_MASK; - if (env->cpuid_features & CPUID_SSE) { + if (env->features[FEAT_1_EDX] & CPUID_SSE) { env->cr[4] |= CR4_OSFXSR_MASK; env->hflags |= HF_OSFXSR_MASK; } #ifndef TARGET_ABI32 /* enable 64 bit mode if possible */ - if (!(env->cpuid_ext2_features & CPUID_EXT2_LM)) { + if (!(env->features[FEAT_8000_0001_EDX] & CPUID_EXT2_LM)) { fprintf(stderr, "The selected x86 CPU does not support 64 bit mode\n"); exit(1); } |