mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-06 22:47:41 -07:00
target/i386: Add a new CPU feature word for CPUID.7.1.ECX
The immediate form of MSR access instructions will use this new CPU feature word. Signed-off-by: Xin Li (Intel) <xin@zytor.com> Link: https://lore.kernel.org/r/20250103084827.1820007-3-xin@zytor.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
0b901459a8
commit
99216748fd
2 changed files with 23 additions and 1 deletions
|
|
@ -900,6 +900,7 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
|
|||
|
||||
#define TCG_7_1_EAX_FEATURES (CPUID_7_1_EAX_FZRM | CPUID_7_1_EAX_FSRS | \
|
||||
CPUID_7_1_EAX_FSRC | CPUID_7_1_EAX_CMPCCXADD)
|
||||
#define TCG_7_1_ECX_FEATURES 0
|
||||
#define TCG_7_1_EDX_FEATURES 0
|
||||
#define TCG_7_2_EDX_FEATURES 0
|
||||
#define TCG_APM_FEATURES 0
|
||||
|
|
@ -1150,6 +1151,25 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
|
|||
},
|
||||
.tcg_features = TCG_7_1_EAX_FEATURES,
|
||||
},
|
||||
[FEAT_7_1_ECX] = {
|
||||
.type = CPUID_FEATURE_WORD,
|
||||
.feat_names = {
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
},
|
||||
.cpuid = {
|
||||
.eax = 7,
|
||||
.needs_ecx = true, .ecx = 1,
|
||||
.reg = R_ECX,
|
||||
},
|
||||
.tcg_features = TCG_7_1_ECX_FEATURES,
|
||||
},
|
||||
[FEAT_7_1_EDX] = {
|
||||
.type = CPUID_FEATURE_WORD,
|
||||
.feat_names = {
|
||||
|
|
@ -7442,9 +7462,9 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
|
|||
*edx = env->features[FEAT_7_0_EDX]; /* Feature flags */
|
||||
} else if (count == 1) {
|
||||
*eax = env->features[FEAT_7_1_EAX];
|
||||
*ecx = env->features[FEAT_7_1_ECX];
|
||||
*edx = env->features[FEAT_7_1_EDX];
|
||||
*ebx = 0;
|
||||
*ecx = 0;
|
||||
} else if (count == 2) {
|
||||
*edx = env->features[FEAT_7_2_EDX];
|
||||
*eax = 0;
|
||||
|
|
@ -8349,6 +8369,7 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
|
|||
x86_cpu_adjust_feat_level(cpu, FEAT_6_EAX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_7_0_ECX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_7_1_EAX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_7_1_ECX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_7_1_EDX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_7_2_EDX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_8000_0001_EDX);
|
||||
|
|
|
|||
|
|
@ -668,6 +668,7 @@ typedef enum FeatureWord {
|
|||
FEAT_SGX_12_1_EAX, /* CPUID[EAX=0x12,ECX=1].EAX (SGX ATTRIBUTES[31:0]) */
|
||||
FEAT_XSAVE_XSS_LO, /* CPUID[EAX=0xd,ECX=1].ECX */
|
||||
FEAT_XSAVE_XSS_HI, /* CPUID[EAX=0xd,ECX=1].EDX */
|
||||
FEAT_7_1_ECX, /* CPUID[EAX=7,ECX=1].ECX */
|
||||
FEAT_7_1_EDX, /* CPUID[EAX=7,ECX=1].EDX */
|
||||
FEAT_7_2_EDX, /* CPUID[EAX=7,ECX=2].EDX */
|
||||
FEAT_24_0_EBX, /* CPUID[EAX=0x24,ECX=0].EBX */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue