aboutsummaryrefslogtreecommitdiff
path: root/target-i386/cpu.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2015-07-02 15:21:23 +0100
committerRichard Henderson <rth@twiddle.net>2016-02-13 07:59:59 +1100
commitc9cfe8f9fb21f086e24b3a8f7ccd9c06e4d8d9d6 (patch)
tree802459173e6c82c15335ed7626b1c1b6c4682046 /target-i386/cpu.c
parent19dc85dba23c0db1ca932c62e453c37e00761628 (diff)
target-i386: Implement XSAVEOPT
Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'target-i386/cpu.c')
-rw-r--r--target-i386/cpu.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index fb8a646a20..dcc6e9ca5e 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -366,7 +366,9 @@ static const char *cpuid_6_feature_name[] = {
#define TCG_7_0_ECX_FEATURES 0
#define TCG_APM_FEATURES 0
#define TCG_6_EAX_FEATURES CPUID_6_EAX_ARAT
-
+#define TCG_XSAVE_FEATURES (CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XGETBV1)
+ /* missing:
+ CPUID_XSAVE_XSAVEC, CPUID_XSAVE_XSAVES */
typedef struct FeatureWordInfo {
const char **feat_names;
@@ -440,7 +442,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
.cpuid_eax = 0xd,
.cpuid_needs_ecx = true, .cpuid_ecx = 1,
.cpuid_reg = R_EAX,
- .tcg_features = 0,
+ .tcg_features = TCG_XSAVE_FEATURES,
},
[FEAT_6_EAX] = {
.feat_names = cpuid_6_feature_name,