update CPUID bits and CR bits according to recently published SDM documents by Intel
This commit is contained in:
parent
8e0541fe5a
commit
a378441254
@ -1023,12 +1023,13 @@ void bx_dbg_info_control_regs_command(void)
|
||||
dbg_printf(" PWT=page-level write-through=%d\n", (cr3>>3) & 1);
|
||||
#if BX_CPU_LEVEL >= 5
|
||||
Bit32u cr4 = SIM->get_param_num("CR4", dbg_cpu_list)->get();
|
||||
dbg_printf("CR4=0x%08x: %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s\n", cr4,
|
||||
dbg_printf("CR4=0x%08x: %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s\n", cr4,
|
||||
(cr4 & (1<<24)) ? "PKS" : "pks",
|
||||
(cr4 & (1<<23)) ? "CET" : "cet",
|
||||
(cr4 & (1<<22)) ? "PKE" : "pke",
|
||||
(cr4 & (1<<21)) ? "SMAP" : "smap",
|
||||
(cr4 & (1<<20)) ? "SMEP" : "smep",
|
||||
(cr4 & (1<<19)) ? "KEYLOCK" : "keylock",
|
||||
(cr4 & (1<<18)) ? "OSXSAVE" : "osxsave",
|
||||
(cr4 & (1<<17)) ? "PCID" : "pcid",
|
||||
(cr4 & (1<<16)) ? "FSGSBASE" : "fsgsbase",
|
||||
@ -1063,16 +1064,18 @@ void bx_dbg_info_control_regs_command(void)
|
||||
#if BX_CPU_LEVEL >= 6
|
||||
if (BX_CPU(dbg_cpu)->is_cpu_extension_supported(BX_ISA_XSAVE)) {
|
||||
Bit32u xcr0 = SIM->get_param_num("XCR0", dbg_cpu_list)->get();
|
||||
dbg_printf("XCR0=0x%08x: %s %s %s %s %s %s %s %s %s\n", xcr0,
|
||||
(xcr0 & (1<<9)) ? "PKRU" : "pkru",
|
||||
(xcr0 & (1<<7)) ? "HI_ZMM" : "hi_zmm",
|
||||
(xcr0 & (1<<6)) ? "ZMM_HI256" : "zmm_hi256",
|
||||
(xcr0 & (1<<5)) ? "OPMASK" : "opmask",
|
||||
(xcr0 & (1<<4)) ? "BNDCFG" : "bndcfg",
|
||||
(xcr0 & (1<<3)) ? "BNDREGS" : "bndregs",
|
||||
(xcr0 & (1<<2)) ? "YMM" : "ymm",
|
||||
(xcr0 & (1<<1)) ? "SSE" : "sse",
|
||||
(xcr0 & (1<<0)) ? "FPU" : "fpu");
|
||||
dbg_printf("XCR0=0x%08x: %s %s %s %s %s %s %s %s %s %s %s\n", xcr0,
|
||||
(xcr0 & (1<<11)) ? "CET_S" : "cet_s",
|
||||
(xcr0 & (1<<10)) ? "CET_U" : "cet_u",
|
||||
(xcr0 & (1<<9)) ? "PKRU" : "pkru",
|
||||
(xcr0 & (1<<7)) ? "HI_ZMM" : "hi_zmm",
|
||||
(xcr0 & (1<<6)) ? "ZMM_HI256" : "zmm_hi256",
|
||||
(xcr0 & (1<<5)) ? "OPMASK" : "opmask",
|
||||
(xcr0 & (1<<4)) ? "BNDCFG" : "bndcfg",
|
||||
(xcr0 & (1<<3)) ? "BNDREGS" : "bndregs",
|
||||
(xcr0 & (1<<2)) ? "YMM" : "ymm",
|
||||
(xcr0 & (1<<1)) ? "SSE" : "sse",
|
||||
(xcr0 & (1<<0)) ? "FPU" : "fpu");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -400,6 +400,7 @@ typedef bx_cpuid_t* (*bx_create_cpuid_method)(BX_CPU_C *cpu);
|
||||
// [16:16] LA57: LA57 and 5-level paging
|
||||
// [21:17] reserved
|
||||
// [22:22] RDPID: Read Processor ID support
|
||||
// [23:23] Keylocker
|
||||
// [24:23] reserved
|
||||
// [25:25] CLDEMOTE: CLDEMOTE instruction support
|
||||
// [26:26] reserved
|
||||
@ -432,7 +433,7 @@ typedef bx_cpuid_t* (*bx_create_cpuid_method)(BX_CPU_C *cpu);
|
||||
#define BX_CPUID_EXT4_RESERVED20 (1 << 20)
|
||||
#define BX_CPUID_EXT4_RESERVED21 (1 << 21)
|
||||
#define BX_CPUID_EXT4_RDPID (1 << 22)
|
||||
#define BX_CPUID_EXT4_RESERVED23 (1 << 23)
|
||||
#define BX_CPUID_EXT4_KEYLOCKER (1 << 23)
|
||||
#define BX_CPUID_EXT4_RESERVED24 (1 << 24)
|
||||
#define BX_CPUID_EXT4_CLDEMOTE (1 << 25)
|
||||
#define BX_CPUID_EXT4_RESERVED26 (1 << 26)
|
||||
@ -448,7 +449,8 @@ typedef bx_cpuid_t* (*bx_create_cpuid_method)(BX_CPU_C *cpu);
|
||||
// [2:2] AVX512 4VNNIW instructions support
|
||||
// [3:3] AVX512 4FMAPS instructions support
|
||||
// [4:4] Support of Fast REP MOV instructions with short length
|
||||
// [7:5] reserved
|
||||
// [5:5] UINTR: User interrupts support
|
||||
// [7:6] reserved
|
||||
// [8:8] AVX512 VP2INTERSECT instructions support
|
||||
// [9:9] reserved
|
||||
// [10:10] MD clear
|
||||
@ -458,7 +460,11 @@ typedef bx_cpuid_t* (*bx_create_cpuid_method)(BX_CPU_C *cpu);
|
||||
// [16:16] TSXLDTRK: TSX suspent load tracking support
|
||||
// [19:17] reserved
|
||||
// [20:20] CET IBT: Support CET indirect branch tracking
|
||||
// [25:21] reserved
|
||||
// [21:21] reserved
|
||||
// [22:22] AMX BF16 support
|
||||
// [23:23] AVX512_FP16 instructions support
|
||||
// [24:24] AMX TILE architecture support
|
||||
// [25:25] AMX INT8 support
|
||||
// [26:26] IBRS and IBPB: Indirect branch restricted speculation (SCA)
|
||||
// [27:27] STIBP: Single Thread Indirect Branch Predictors supported (SCA)
|
||||
// [28:28] L1D_FLUSH supported (SCA)
|
||||
@ -471,7 +477,7 @@ typedef bx_cpuid_t* (*bx_create_cpuid_method)(BX_CPU_C *cpu);
|
||||
#define BX_CPUID_EXT5_AVX512_4VNNIW (1 << 2)
|
||||
#define BX_CPUID_EXT5_AVX512_4FMAPS (1 << 3)
|
||||
#define BX_CPUID_EXT5_FAST_SHORT_REP_MOV (1 << 4)
|
||||
#define BX_CPUID_EXT5_RESERVED5 (1 << 5)
|
||||
#define BX_CPUID_EXT5_UINTR (1 << 5)
|
||||
#define BX_CPUID_EXT5_RESERVED6 (1 << 6)
|
||||
#define BX_CPUID_EXT5_RESERVED7 (1 << 7)
|
||||
#define BX_CPUID_EXT5_AVX512_VPINTERSECT (1 << 8)
|
||||
@ -488,10 +494,10 @@ typedef bx_cpuid_t* (*bx_create_cpuid_method)(BX_CPU_C *cpu);
|
||||
#define BX_CPUID_EXT5_RESERVED19 (1 << 19)
|
||||
#define BX_CPUID_EXT5_CET_IBT (1 << 20)
|
||||
#define BX_CPUID_EXT5_RESERVED21 (1 << 21)
|
||||
#define BX_CPUID_EXT5_RESERVED22 (1 << 22)
|
||||
#define BX_CPUID_EXT5_RESERVED23 (1 << 23)
|
||||
#define BX_CPUID_EXT5_RESERVED24 (1 << 24)
|
||||
#define BX_CPUID_EXT5_RESERVED25 (1 << 25)
|
||||
#define BX_CPUID_EXT5_AMX_BF16 (1 << 22)
|
||||
#define BX_CPUID_EXT5_AVX512_FP16 (1 << 23)
|
||||
#define BX_CPUID_EXT5_AMX_TILE (1 << 24)
|
||||
#define BX_CPUID_EXT5_AMX_INT8 (1 << 25)
|
||||
#define BX_CPUID_EXT5_SCA_IBRS_IBPB (1 << 26)
|
||||
#define BX_CPUID_EXT5_SCA_STIBP (1 << 27)
|
||||
#define BX_CPUID_EXT5_L1D_FLUSH (1 << 28)
|
||||
|
@ -106,6 +106,7 @@ struct bx_cr0_t {
|
||||
#define BX_CR4_FSGSBASE_MASK (1 << 16)
|
||||
#define BX_CR4_PCIDE_MASK (1 << 17)
|
||||
#define BX_CR4_OSXSAVE_MASK (1 << 18)
|
||||
#define BX_CR4_KEYLOCKER_MASK (1 << 19)
|
||||
#define BX_CR4_SMEP_MASK (1 << 20)
|
||||
#define BX_CR4_SMAP_MASK (1 << 21)
|
||||
#define BX_CR4_PKE_MASK (1 << 22)
|
||||
@ -137,6 +138,7 @@ struct bx_cr4_t {
|
||||
#endif
|
||||
IMPLEMENT_CRREG_ACCESSORS(PCIDE, 17);
|
||||
IMPLEMENT_CRREG_ACCESSORS(OSXSAVE, 18);
|
||||
IMPLEMENT_CRREG_ACCESSORS(KEYLOCKER, 19);
|
||||
IMPLEMENT_CRREG_ACCESSORS(SMEP, 20);
|
||||
IMPLEMENT_CRREG_ACCESSORS(SMAP, 21);
|
||||
IMPLEMENT_CRREG_ACCESSORS(PKE, 22);
|
||||
@ -275,6 +277,9 @@ struct xcr0_t {
|
||||
BX_XCR0_PKRU_BIT = 9,
|
||||
BX_XCR0_CET_U_BIT = 11,
|
||||
BX_XCR0_CET_S_BIT = 12,
|
||||
BX_XCR0_UINTR_BIT = 14,
|
||||
BX_XCR0_XTILECFG_BIT = 17,
|
||||
BX_XCR0_XTILEDATA_BIT = 18,
|
||||
BX_XCR0_LAST
|
||||
};
|
||||
|
||||
@ -290,6 +295,9 @@ struct xcr0_t {
|
||||
#define BX_XCR0_PKRU_MASK (1 << xcr0_t::BX_XCR0_PKRU_BIT)
|
||||
#define BX_XCR0_CET_U_MASK (1 << xcr0_t::BX_XCR0_CET_U_BIT)
|
||||
#define BX_XCR0_CET_S_MASK (1 << xcr0_t::BX_XCR0_CET_S_BIT)
|
||||
#define BX_XCR0_UINTR_MASK (1 << xcr0_t::BX_XCR0_UINTR_BIT)
|
||||
#define BX_XCR0_XTILECFG_MASK (1 << xcr0_t::BX_XCR0_XTILECFG_BIT)
|
||||
#define BX_XCR0_XTILEDATA_MASK (1 << xcr0_t::BX_XCR0_XTILEDATA_BIT)
|
||||
|
||||
IMPLEMENT_CRREG_ACCESSORS(FPU, BX_XCR0_FPU_BIT);
|
||||
IMPLEMENT_CRREG_ACCESSORS(SSE, BX_XCR0_SSE_BIT);
|
||||
@ -301,6 +309,10 @@ struct xcr0_t {
|
||||
IMPLEMENT_CRREG_ACCESSORS(HI_ZMM, BX_XCR0_HI_ZMM_BIT);
|
||||
IMPLEMENT_CRREG_ACCESSORS(PT, BX_XCR0_PT_BIT);
|
||||
IMPLEMENT_CRREG_ACCESSORS(PKRU, BX_XCR0_PKRU_BIT);
|
||||
IMPLEMENT_CRREG_ACCESSORS(CET_U, BX_XCR0_CET_U_BIT);
|
||||
IMPLEMENT_CRREG_ACCESSORS(CET_S, BX_XCR0_CET_S_BIT);
|
||||
IMPLEMENT_CRREG_ACCESSORS(XTILECFG, BX_XCR0_XTILECFG_BIT);
|
||||
IMPLEMENT_CRREG_ACCESSORS(XTILEDATA, BX_XCR0_XTILEDATA_BIT);
|
||||
|
||||
BX_CPP_INLINE Bit32u get32() const { return val32; }
|
||||
BX_CPP_INLINE void set32(Bit32u val) { val32 = val; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user