#ifndef _CPU_SPECIALREG_H_
#define _CPU_SPECIALREG_H_
#define CR0_PE 0x00000001
#define CR0_MP 0x00000002
#define CR0_EM 0x00000004
#define CR0_TS 0x00000008
#define CR0_ET 0x00000010
#define CR0_NE 0x00000020
#define CR0_WP 0x00010000
#define CR0_AM 0x00040000
#define CR0_NW 0x20000000
#define CR0_CD 0x40000000
#define CR0_PG 0x80000000
#define CR4_VME 0x00000001
#define CR4_PVI 0x00000002
#define CR4_TSD 0x00000004
#define CR4_DE 0x00000008
#define CR4_PSE 0x00000010
#define CR4_PAE 0x00000020
#define CR4_MCE 0x00000040
#define CR4_PGE 0x00000080
#define CR4_PCE 0x00000100
#define CR4_OSFXSR 0x00000200
#define CR4_OSXMMEXCPT 0x00000400
#define CR4_UMIP 0x00000800
#define CR4_LA57 0x00001000
#define CR4_VMXE 0x00002000
#define CR4_SMXE 0x00004000
#define CR4_FSGSBASE 0x00010000
#define CR4_PCIDE 0x00020000
#define CR4_OSXSAVE 0x00040000
#define CR4_SMEP 0x00100000
#define CR4_SMAP 0x00200000
#define CR4_PKE 0x00400000
#define CR4_CET 0x00800000
#define CR4_PKS 0x01000000
#define CPU_XFEATURE_X87 0x00000001
#define CPU_XFEATURE_SSE 0x00000002
#define CPU_XFEATURE_YMM 0x00000004
#define CPU_XFEATURE_AVX CPU_XFEATURE_YMM
#define CPUID_FPU 0x00000001
#define CPUID_VME 0x00000002
#define CPUID_DE 0x00000004
#define CPUID_PSE 0x00000008
#define CPUID_TSC 0x00000010
#define CPUID_MSR 0x00000020
#define CPUID_PAE 0x00000040
#define CPUID_MCE 0x00000080
#define CPUID_CX8 0x00000100
#define CPUID_APIC 0x00000200
#define CPUID_SEP 0x00000800
#define CPUID_MTRR 0x00001000
#define CPUID_PGE 0x00002000
#define CPUID_MCA 0x00004000
#define CPUID_CMOV 0x00008000
#define CPUID_PAT 0x00010000
#define CPUID_PSE36 0x00020000
#define CPUID_PSN 0x00040000
#define CPUID_CLFSH 0x00080000
#define CPUID_DS 0x00200000
#define CPUID_ACPI 0x00400000
#define CPUID_MMX 0x00800000
#define CPUID_FXSR 0x01000000
#define CPUID_SSE 0x02000000
#define CPUID_SSE2 0x04000000
#define CPUID_SS 0x08000000
#define CPUID_HTT 0x10000000
#define CPUID_TM 0x20000000
#define CPUID_IA64 0x40000000
#define CPUID_PBE 0x80000000
#define CPUID2_SSE3 0x00000001
#define CPUID2_PCLMULQDQ 0x00000002
#define CPUID2_DTES64 0x00000004
#define CPUID2_MON 0x00000008
#define CPUID2_DS_CPL 0x00000010
#define CPUID2_VMX 0x00000020
#define CPUID2_SMX 0x00000040
#define CPUID2_EST 0x00000080
#define CPUID2_TM2 0x00000100
#define CPUID2_SSSE3 0x00000200
#define CPUID2_CNXTID 0x00000400
#define CPUID2_SDBG 0x00000800
#define CPUID2_FMA 0x00001000
#define CPUID2_CX16 0x00002000
#define CPUID2_XTPR 0x00004000
#define CPUID2_PDCM 0x00008000
#define CPUID2_PCID 0x00020000
#define CPUID2_DCA 0x00040000
#define CPUID2_SSE41 0x00080000
#define CPUID2_SSE42 0x00100000
#define CPUID2_X2APIC 0x00200000
#define CPUID2_MOVBE 0x00400000
#define CPUID2_POPCNT 0x00800000
#define CPUID2_TSCDLT 0x01000000
#define CPUID2_AESNI 0x02000000
#define CPUID2_XSAVE 0x04000000
#define CPUID2_OSXSAVE 0x08000000
#define CPUID2_AVX 0x10000000
#define CPUID2_F16C 0x20000000
#define CPUID2_RDRAND 0x40000000
#define CPUID2_VMM 0x80000000
#define CPUID_STEPPING 0x0000000f
#define CPUID_MODEL 0x000000f0
#define CPUID_FAMILY 0x00000f00
#define CPUID_EXT_MODEL 0x000f0000
#define CPUID_EXT_FAMILY 0x0ff00000
#define CPUID_TO_MODEL(id) \
((((id) & CPUID_MODEL) >> 4) | (((id) & CPUID_EXT_MODEL) >> 12))
#define CPUID_TO_FAMILY(id) \
((((id) & CPUID_FAMILY) >> 8) + (((id) & CPUID_EXT_FAMILY) >> 20))
#define CPUID_BRAND_INDEX 0x000000ff
#define CPUID_CLFUSH_SIZE 0x0000ff00
#define CPUID_HTT_CORES 0x00ff0000
#define CPUID_HTT_CORE_SHIFT 16
#define CPUID_LOCAL_APIC_ID 0xff000000
#define FUNC_4_MAX_CORE_NO(eax) ((((eax) >> 26) & 0x3f))
#define CPUID_MWAIT_EXT 0x00000001
#define CPUID_MWAIT_INTBRK 0x00000002
#define CPUID_MWAIT_CX_SUBCNT(edx, cstate) \
(((edx) >> ((cstate) * 4)) & 0xf)
#define MWAIT_EAX_TO_CX(x) ((((x) >> 4) + 1) & 0xf)
#define MWAIT_EAX_TO_CX_SUB(x) ((x) & 0xf)
#define MWAIT_EAX_HINT(cx, sub) \
(((((uint32_t)(cx) - 1) & 0xf) << 4) | ((sub) & 0xf))
#define MWAIT_ECX_INTBRK 0x1
#define CPUID_THERMAL_SENSOR 0x00000001
#define CPUID_THERMAL_TURBO 0x00000002
#define CPUID_THERMAL_ARAT 0x00000004
#define CPUID_THERMAL_PLN 0x00000010
#define CPUID_THERMAL_ECMD 0x00000020
#define CPUID_THERMAL_PTM 0x00000040
#define CPUID_THERMAL_HWP 0x00000080
#define CPUID_THERMAL2_SETBH 0x00000008
#define CPUID_STDEXT_FSGSBASE 0x00000001
#define CPUID_STDEXT_TSC_ADJUST 0x00000002
#define CPUID_STDEXT_SGX 0x00000004
#define CPUID_STDEXT_BMI1 0x00000008
#define CPUID_STDEXT_HLE 0x00000010
#define CPUID_STDEXT_AVX2 0x00000020
#define CPUID_STDEXT_FDP_EXC 0x00000040
#define CPUID_STDEXT_SMEP 0x00000080
#define CPUID_STDEXT_BMI2 0x00000100
#define CPUID_STDEXT_ERMS 0x00000200
#define CPUID_STDEXT_INVPCID 0x00000400
#define CPUID_STDEXT_RTM 0x00000800
#define CPUID_STDEXT_PQM 0x00001000
#define CPUID_STDEXT_NFPUSG 0x00002000
#define CPUID_STDEXT_MPX 0x00004000
#define CPUID_STDEXT_PQE 0x00008000
#define CPUID_STDEXT_AVX512F 0x00010000
#define CPUID_STDEXT_AVX512DQ 0x00020000
#define CPUID_STDEXT_RDSEED 0x00040000
#define CPUID_STDEXT_ADX 0x00080000
#define CPUID_STDEXT_SMAP 0x00100000
#define CPUID_STDEXT_AVX512IFMA 0x00200000
#define CPUID_STDEXT_CLFLUSHOPT 0x00800000
#define CPUID_STDEXT_CLWB 0x01000000
#define CPUID_STDEXT_PROCTRACE 0x02000000
#define CPUID_STDEXT_AVX512PF 0x04000000
#define CPUID_STDEXT_AVX512ER 0x08000000
#define CPUID_STDEXT_AVX512CD 0x10000000
#define CPUID_STDEXT_SHA 0x20000000
#define CPUID_STDEXT_AVX512BW 0x40000000
#define CPUID_STDEXT_AVX512VL 0x80000000
#define CPUID_STDEXT2_PREFETCHWT1 0x00000001
#define CPUID_STDEXT2_AVX512VBMI 0x00000002
#define CPUID_STDEXT2_UMIP 0x00000004
#define CPUID_STDEXT2_PKU 0x00000008
#define CPUID_STDEXT2_OSPKE 0x00000010
#define CPUID_STDEXT2_WAITPKG 0x00000020
#define CPUID_STDEXT2_AVX512VBMI2 0x00000040
#define CPUID_STDEXT2_CET_SS 0x00000080
#define CPUID_STDEXT2_GFNI 0x00000100
#define CPUID_STDEXT2_VAES 0x00000200
#define CPUID_STDEXT2_VPCLMULQDQ 0x00000400
#define CPUID_STDEXT2_AVX512VNNI 0x00000800
#define CPUID_STDEXT2_AVX512BITALG 0x00001000
#define CPUID_STDEXT2_TME 0x00002000
#define CPUID_STDEXT2_AVX512VPOPCNTDQ 0x00004000
#define CPUID_STDEXT2_LA57 0x00010000
#define CPUID_STDEXT2_RDPID 0x00400000
#define CPUID_STDEXT2_KL 0x00800000
#define CPUID_STDEXT2_BUS_LOCK_DETECT 0x01000000
#define CPUID_STDEXT2_CLDEMOTE 0x02000000
#define CPUID_STDEXT2_MOVDIRI 0x08000000
#define CPUID_STDEXT2_MOVDIR64B 0x10000000
#define CPUID_STDEXT2_ENQCMD 0x20000000
#define CPUID_STDEXT2_SGXLC 0x40000000
#define CPUID_STDEXT2_PKS 0x80000000
#define CPUID_STDEXT3_AVX5124VNNIW 0x00000004
#define CPUID_STDEXT3_AVX5124FMAPS 0x00000008
#define CPUID_STDEXT3_FSRM 0x00000010
#define CPUID_STDEXT3_UINTR 0x00000020
#define CPUID_STDEXT3_AVX512VP2INTERSECT 0x00000100
#define CPUID_STDEXT3_MCUOPT 0x00000200
#define CPUID_STDEXT3_MD_CLEAR 0x00000400
#define CPUID_STDEXT3_TSXFA 0x00002000
#define CPUID_STDEXT3_SERIALIZE 0x00004000
#define CPUID_STDEXT3_HYBRID 0x00008000
#define CPUID_STDEXT3_TSXLDTRK 0x00010000
#define CPUID_STDEXT3_PCONFIG 0x00040000
#define CPUID_STDEXT3_CET_IBT 0x00100000
#define CPUID_STDEXT3_IBPB 0x04000000
#define CPUID_STDEXT3_STIBP 0x08000000
#define CPUID_STDEXT3_L1D_FLUSH 0x10000000
#define CPUID_STDEXT3_ARCH_CAP 0x20000000
#define CPUID_STDEXT3_CORE_CAP 0x40000000
#define CPUID_STDEXT3_SSBD 0x80000000
#define FUNC_B_THREAD_LEVEL 0
#define FUNC_B_INVALID_TYPE 0
#define FUNC_B_THREAD_TYPE 1
#define FUNC_B_CORE_TYPE 2
#define FUNC_B_TYPE(ecx) (((ecx) >> 8) & 0xff)
#define FUNC_B_BITS_SHIFT_NEXT_LEVEL(eax) ((eax) & 0x1f)
#define FUNC_B_LEVEL_MAX_SIBLINGS(ebx) ((ebx) & 0xffff)
#define CPUID_PES1_XSAVEOPT 0x00000001
#define CPUID_PES1_XSAVEC 0x00000002
#define CPUID_PES1_XGETBV 0x00000004
#define CPUID_PES1_XSAVES 0x00000008
#define CPUID_SYSCALL 0x00000800
#define CPUID_MPC 0x00080000
#define CPUID_XD 0x00100000
#define CPUID_NOX CPUID_XD
#define CPUID_MMXX 0x00400000
#define CPUID_FFXSR 0x02000000
#define CPUID_PAGE1GB 0x04000000
#define CPUID_RDTSCP 0x08000000
#define CPUID_EM64T 0x20000000
#define CPUID_3DNOW2 0x40000000
#define CPUID_3DNOW 0x80000000
#define AMDID_SYSCALL CPUID_SYSCALL
#define AMDID_MP CPUID_MPC
#define AMDID_NX CPUID_NOX
#define AMDID_EXT_MMX CPUID_MMXX
#define AMDID_FFXSR CPUID_FFXSR
#define AMDID_PAGE1GB CPUID_PAGE1GB
#define AMDID_RDTSCP CPUID_RDTSCP
#define AMDID_LM CPUID_EM64T
#define AMDID_EXT_3DNOW CPUID_3DNOW2
#define AMDID_3DNOW CPUID_3DNOW
#define CPUID_LAHF 0x00000001
#define CPUID_CMPLEGACY 0x00000002
#define CPUID_SVM 0x00000004
#define CPUID_EAPIC 0x00000008
#define CPUID_ALTMOVCR0 0x00000010
#define CPUID_ABM 0x00000020
#define CPUID_SSE4A 0x00000040
#define CPUID_MISALIGNSSE 0x00000080
#define CPUID_PREFETCHW 0x00000100
#define CPUID_3DNOWPF CPUID_PREFETCHW
#define CPUID_OSVW 0x00000200
#define CPUID_IBS 0x00000400
#define CPUID_XOP 0x00000800
#define CPUID_SKINIT 0x00001000
#define CPUID_WDT 0x00002000
#define CPUID_LWP 0x00008000
#define CPUID_FMA4 0x00010000
#define CPUID_TCE 0x00020000
#define CPUID_NODEID 0x00080000
#define CPUID_TBM 0x00200000
#define CPUID_TOPOEXT 0x00400000
#define CPUID_PCEC 0x00800000
#define CPUID_PCENB 0x01000000
#define CPUID_SPM 0x02000000
#define CPUID_DBE 0x04000000
#define CPUID_PTSC 0x08000000
#define CPUID_L2IPERFC 0x10000000
#define CPUID_MWAITX 0x20000000
#define CPUID_ADDRMASKEXT 0x40000000
#define AMDID2_LAHF CPUID_LAHF
#define AMDID2_CMP CPUID_CMPLEGACY
#define AMDID2_SVM CPUID_SVM
#define AMDID2_EXT_APIC CPUID_EAPIC
#define AMDID2_CR8 CPUID_ALTMOVCR0
#define AMDID2_ABM CPUID_ABM
#define AMDID2_SSE4A CPUID_SSE4A
#define AMDID2_MAS CPUID_MISALIGNSSE
#define AMDID2_PREFETCH CPUID_PREFETCHW
#define AMDID2_OSVW CPUID_OSVW
#define AMDID2_IBS CPUID_IBS
#define AMDID2_SSE5 CPUID_XOP
#define AMDID2_SKINIT CPUID_SKINIT
#define AMDID2_WDT CPUID_WDT
#define AMDID2_TOPOEXT CPUID_TOPOEXT
#define CPUID_APM_TS 0x00000001
#define CPUID_APM_FID 0x00000002
#define CPUID_APM_VID 0x00000004
#define CPUID_APM_TTP 0x00000008
#define CPUID_APM_HTC 0x00000010
#define CPUID_APM_STC 0x00000020
#define CPUID_APM_100 0x00000040
#define CPUID_APM_HWP 0x00000080
#define CPUID_APM_ITSC 0x00000100
#define CPUID_APM_CPB 0x00000200
#define CPUID_APM_EFF 0x00000400
#define CPUID_APM_PROCFI 0x00000800
#define CPUID_APM_PROCPR 0x00001000
#define CPUID_APM_CONNSTBY 0x00002000
#define CPUID_APM_RAPL 0x00004000
#define AMDPM_TS CPUID_APM_TS
#define AMDPM_FID CPUID_APM_FID
#define AMDPM_VID CPUID_APM_VID
#define AMDPM_TTP CPUID_APM_TTP
#define AMDPM_TM CPUID_APM_HTC
#define AMDPM_STC CPUID_APM_STC
#define AMDPM_100MHZ_STEPS CPUID_APM_100
#define AMDPM_HW_PSTATE CPUID_APM_HWP
#define AMDPM_TSC_INVARIANT CPUID_APM_ITSC
#define AMDPM_CPB CPUID_APM_CPB
#define CPUID_CAPEX_CLZERO 0x00000001
#define CPUID_CAPEX_IRPERF 0x00000002
#define CPUID_CAPEX_XSAVEERPTR 0x00000004
#define CPUID_CAPEX_INVLPGB 0x00000008
#define CPUID_CAPEX_RDPRU 0x00000010
#define CPUID_CAPEX_MCOMMIT 0x00000100
#define CPUID_CAPEX_WBNOINVD 0x00000200
#define CPUID_CAPEX_IBPB 0x00001000
#define CPUID_CAPEX_INT_WBINVD 0x00002000
#define CPUID_CAPEX_IBRS 0x00004000
#define CPUID_CAPEX_STIBP 0x00008000
#define CPUID_CAPEX_IBRS_ALWAYSON 0x00010000
#define CPUID_CAPEX_STIBP_ALWAYSON 0x00020000
#define CPUID_CAPEX_PREFER_IBRS 0x00040000
#define CPUID_CAPEX_SSBD 0x01000000
#define CPUID_CAPEX_VIRT_SSBD 0x02000000
#define CPUID_CAPEX_SSB_NO 0x04000000
#define AMDID_CMP_CORES 0x000000ff
#define AMDID_COREID_SIZE 0x0000f000
#define AMDID_COREID_SIZE_SHIFT 12
#define CPUID_AMD_SVM_REV 0x000000ff
#define CPUID_AMD_SVM_NP 0x00000001
#define CPUID_AMD_SVM_LbrVirt 0x00000002
#define CPUID_AMD_SVM_SVML 0x00000004
#define CPUID_AMD_SVM_NRIPS 0x00000008
#define CPUID_AMD_SVM_TSCRateCtrl 0x00000010
#define CPUID_AMD_SVM_VMCBCleanBits 0x00000020
#define CPUID_AMD_SVM_FlushByASID 0x00000040
#define CPUID_AMD_SVM_DecodeAssist 0x00000080
#define CPUID_AMD_SVM_PauseFilter 0x00000400
#define CPUID_AMD_SVM_PFThreshold 0x00001000
#define CPUID_AMD_SVM_AVIC 0x00002000
#define CPUID_AMD_SVM_V_VMSAVE_VMLOAD 0x00008000
#define CPUID_AMD_SVM_vGIF 0x00010000
#define CPUID_AMD_SVM_GMET 0x00020000
#define CPUID_AMD_SVM_SPEC_CTRL 0x00100000
#define CPUID_AMD_SVM_TLBICTL 0x01000000
#define AMD_VENDOR_ID "AuthenticAMD"
#define CENTAUR_VENDOR_ID "CentaurHauls"
#define INTEL_VENDOR_ID "GenuineIntel"
#define MSR_P5_MC_ADDR 0x000
#define MSR_P5_MC_TYPE 0x001
#define MSR_TSC 0x010
#define MSR_P5_CESR 0x011
#define MSR_P5_CTR0 0x012
#define MSR_P5_CTR1 0x013
#define MSR_IA32_PLATFORM_ID 0x017
#define MSR_APICBASE 0x01b
#define APICBASE_RESERVED 0x000006ff
#define APICBASE_BSP 0x00000100
#define APICBASE_X2APIC 0x00000400
#define APICBASE_ENABLED 0x00000800
#define APICBASE_ADDRESS 0xfffff000
#define MSR_EBL_CR_POWERON 0x02a
#define MSR_TEST_CTL 0x033
#define MSR_IA32_FEATURE_CONTROL 0x03a
#define IA32_FEATURE_CONTROL_LOCK 0x01
#define IA32_FEATURE_CONTROL_IN_SMX 0x02
#define IA32_FEATURE_CONTROL_OUT_SMX 0x04
#define MSR_SPEC_CTRL 0x048
#define SPEC_CTRL_IBRS 0x00000001
#define SPEC_CTRL_STIBP 0x00000002
#define SPEC_CTRL_SSBD 0x00000004
#define SPEC_CTRL_DUMMY1 0x00010000
#define SPEC_CTRL_DUMMY2 0x00020000
#define SPEC_CTRL_DUMMY3 0x00040000
#define SPEC_CTRL_DUMMY4 0x00080000
#define SPEC_CTRL_DUMMY5 0x00100000
#define SPEC_CTRL_DUMMY6 0x00200000
#define MSR_PRED_CMD 0x049
#define MSR_BIOS_UPDT_TRIG 0x079
#define MSR_BBL_CR_D0 0x088
#define MSR_BBL_CR_D1 0x089
#define MSR_BBL_CR_D2 0x08a
#define MSR_BIOS_SIGN 0x08b
#define MSR_PERFCTR0 0x0c1
#define MSR_PERFCTR1 0x0c2
#define MSR_IA32_EXT_CONFIG 0x0ee
#define MSR_MTRRcap 0x0fe
#define MSR_IA32_ARCH_CAPABILITIES 0x10a
#define IA32_ARCH_CAP_RDCL_NO 0x00000001
#define IA32_ARCH_CAP_IBRS_ALL 0x00000002
#define IA32_ARCH_CAP_RSBA 0x00000004
#define IA32_ARCH_CAP_SKIP_L1DFL_VMENTRY 0x00000008
#define IA32_ARCH_CAP_SSB_NO 0x00000010
#define IA32_ARCH_CAP_MDS_NO 0x00000020
#define IA32_ARCH_CAP_IF_PSCHANGE_MC_NO 0x00000040
#define IA32_ARCH_CAP_TSX_CTRL 0x00000080
#define IA32_ARCH_CAP_TAA_NO 0x00000100
#define MSR_IA32_FLUSH_CMD 0x10b
#define IA32_FLUSH_CMD_L1D 0x01
#define MSR_BBL_CR_ADDR 0x116
#define MSR_BBL_CR_DECC 0x118
#define MSR_BBL_CR_CTL 0x119
#define MSR_BBL_CR_TRIG 0x11a
#define MSR_BBL_CR_BUSY 0x11b
#define MSR_BBL_CR_CTL3 0x11e
#define MSR_SYSENTER_CS 0x174
#define MSR_SYSENTER_ESP 0x175
#define MSR_SYSENTER_EIP 0x176
#define MSR_MCG_CAP 0x179
#define MSR_MCG_STATUS 0x17a
#define MSR_MCG_CTL 0x17b
#define MSR_EVNTSEL0 0x186
#define MSR_EVNTSEL1 0x187
#define MSR_THERM_CONTROL 0x19a
#define MSR_THERM_INTERRUPT 0x19b
#define MSR_THERM_STATUS 0x19c
#define MSR_IA32_MISC_ENABLE 0x1a0
#define IA32_MISC_FAST_STR_EN (1ULL << 0)
#define IA32_MISC_ATCC_EN (1ULL << 3)
#define IA32_MISC_PERFMON_EN (1ULL << 7)
#define IA32_MISC_BTS_UNAVAIL (1ULL << 11)
#define IA32_MISC_PEBS_UNAVAIL (1ULL << 12)
#define IA32_MISC_EISST_EN (1ULL << 16)
#define IA32_MISC_MWAIT_EN (1ULL << 18)
#define IA32_MISC_LIMIT_CPUID (1ULL << 22)
#define IA32_MISC_XTPR_DIS (1ULL << 23)
#define IA32_MISC_XD_DIS (1ULL << 34)
#define MSR_IA32_TEMPERATURE_TARGET 0x1a2
#define MSR_PKG_THERM_STATUS 0x1b1
#define MSR_PKG_THERM_INTR 0x1b2
#define MSR_DEBUGCTLMSR 0x1d9
#define MSR_LASTBRANCHFROMIP 0x1db
#define MSR_LASTBRANCHTOIP 0x1dc
#define MSR_LASTINTFROMIP 0x1dd
#define MSR_LASTINTTOIP 0x1de
#define MSR_ROB_CR_BKUPTMPDR6 0x1e0
#define MSR_MTRRVarBase 0x200
#define MSR_MTRR64kBase 0x250
#define MSR_MTRR16kBase 0x258
#define MSR_MTRR4kBase 0x268
#define MSR_PAT 0x277
#define MSR_MTRRdefType 0x2ff
#define MSR_PKG_C3_RESIDENCY 0x3f8
#define MSR_PKG_C6_RESIDENCY 0x3f9
#define MSR_PKG_C7_RESIDENCY 0x3fa
#define MSR_CORE_C3_RESIDENCY 0x3fc
#define MSR_CORE_C6_RESIDENCY 0x3fd
#define MSR_CORE_C7_RESIDENCY 0x3fe
#define MSR_MC0_CTL 0x400
#define MSR_MC0_STATUS 0x401
#define MSR_MC0_ADDR 0x402
#define MSR_MC0_MISC 0x403
#define MSR_MC1_CTL 0x404
#define MSR_MC1_STATUS 0x405
#define MSR_MC1_ADDR 0x406
#define MSR_MC1_MISC 0x407
#define MSR_MC2_CTL 0x408
#define MSR_MC2_STATUS 0x409
#define MSR_MC2_ADDR 0x40a
#define MSR_MC2_MISC 0x40b
#define MSR_MC3_CTL 0x40c
#define MSR_MC3_STATUS 0x40d
#define MSR_MC3_ADDR 0x40e
#define MSR_MC3_MISC 0x40f
#define MSR_MC4_CTL 0x410
#define MSR_MC4_STATUS 0x411
#define MSR_MC4_ADDR 0x412
#define MSR_MC4_MISC 0x413
#define MSR_VMX_BASIC 0x480
#define MSR_VMX_PINBASED_CTLS 0x481
#define MSR_VMX_PROCBASED_CTLS 0x482
#define MSR_VMX_EXIT_CTLS 0x483
#define MSR_VMX_ENTRY_CTLS 0x484
#define MSR_VMX_CR0_FIXED0 0x486
#define MSR_VMX_CR0_FIXED1 0x487
#define MSR_VMX_CR4_FIXED0 0x488
#define MSR_VMX_CR4_FIXED1 0x489
#define MSR_VMX_PROCBASED_CTLS2 0x48b
#define MSR_VMX_EPT_VPID_CAP 0x48c
#define MSR_VMX_TRUE_PINBASED_CTLS 0x48d
#define MSR_VMX_TRUE_PROCBASED_CTLS 0x48e
#define MSR_VMX_TRUE_EXIT_CTLS 0x48f
#define MSR_VMX_TRUE_ENTRY_CTLS 0x490
#define MSR_RAPL_POWER_UNIT 0x606
#define MSR_PKG_ENERGY_STATUS 0x611
#define MSR_DRAM_ENERGY_STATUS 0x619
#define MSR_PP0_ENERGY_STATUS 0x639
#define MSR_PP1_ENERGY_STATUS 0x641
#define MSR_PLATFORM_ENERGY_COUNTER 0x64d
#define MSR_PPERF 0x64e
#define MSR_PERF_LIMIT_REASONS 0x64f
#define MSR_TSC_DEADLINE 0x6e0
#define MSR_PKG_C2_RESIDENCY 0x60d
#define MSR_PKG_C8_RESIDENCY 0x630
#define MSR_PKG_C9_RESIDENCY 0x631
#define MSR_PKG_C10_RESIDENCY 0x632
#define MSR_PM_ENABLE 0x770
#define MSR_HWP_CAPABILITIES 0x771
#define MSR_HWP_REQUEST_PKG 0x772
#define MSR_HWP_INTERRUPT 0x773
#define MSR_HWP_REQUEST 0x774
#define MSR_HWP_STATUS 0x777
#define MTRR_UNCACHEABLE 0x00
#define MTRR_WRITE_COMBINING 0x01
#define MTRR_WRITE_THROUGH 0x04
#define MTRR_WRITE_PROTECTED 0x05
#define MTRR_WRITE_BACK 0x06
#define MTRR_N64K 8
#define MTRR_N16K 16
#define MTRR_N4K 64
#define MTRR_CAP_WC 0x0000000000000400UL
#define MTRR_CAP_FIXED 0x0000000000000100UL
#define MTRR_CAP_VCNT 0x00000000000000ffUL
#define MTRR_DEF_ENABLE 0x0000000000000800UL
#define MTRR_DEF_FIXED_ENABLE 0x0000000000000400UL
#define MTRR_DEF_TYPE 0x00000000000000ffUL
#define MTRR_PHYSBASE_PHYSBASE 0x000ffffffffff000UL
#define MTRR_PHYSBASE_TYPE 0x00000000000000ffUL
#define MTRR_PHYSMASK_PHYSMASK 0x000ffffffffff000UL
#define MTRR_PHYSMASK_VALID 0x0000000000000800UL
#define PCR0 0x20
#define PCR0_RSTK 0x01
#define PCR0_BTB 0x02
#define PCR0_LOOP 0x04
#define PCR0_AIS 0x08
#define PCR0_MLR 0x10
#define PCR0_BTBRT 0x40
#define PCR0_LSSER 0x80
#define DIR0 0xfe
#define DIR1 0xff
#define MCG_CAP_COUNT 0x000000ff
#define MCG_CAP_CTL_P 0x00000100
#define MCG_CAP_EXT_P 0x00000200
#define MCG_CAP_TES_P 0x00000800
#define MCG_CAP_EXT_CNT 0x00ff0000
#define MCG_STATUS_RIPV 0x00000001
#define MCG_STATUS_EIPV 0x00000002
#define MCG_STATUS_MCIP 0x00000004
#define MCG_CTL_ENABLE 0xffffffffffffffffUL
#define MCG_CTL_DISABLE 0x0000000000000000UL
#define MSR_MC_CTL(x) (MSR_MC0_CTL + (x) * 4)
#define MSR_MC_STATUS(x) (MSR_MC0_STATUS + (x) * 4)
#define MSR_MC_ADDR(x) (MSR_MC0_ADDR + (x) * 4)
#define MSR_MC_MISC(x) (MSR_MC0_MISC + (x) * 4)
#define MC_STATUS_MCA_ERROR 0x000000000000ffffUL
#define MC_STATUS_MODEL_ERROR 0x00000000ffff0000UL
#define MC_STATUS_OTHER_INFO 0x01ffffff00000000UL
#define MC_STATUS_PCC 0x0200000000000000UL
#define MC_STATUS_ADDRV 0x0400000000000000UL
#define MC_STATUS_MISCV 0x0800000000000000UL
#define MC_STATUS_EN 0x1000000000000000UL
#define MC_STATUS_UC 0x2000000000000000UL
#define MC_STATUS_OVER 0x4000000000000000UL
#define MC_STATUS_VAL 0x8000000000000000UL
#define NCR1 0xc4
#define NCR2 0xc7
#define NCR3 0xca
#define NCR4 0xcd
#define NCR_SIZE_0K 0
#define NCR_SIZE_4K 1
#define NCR_SIZE_8K 2
#define NCR_SIZE_16K 3
#define NCR_SIZE_32K 4
#define NCR_SIZE_64K 5
#define NCR_SIZE_128K 6
#define NCR_SIZE_256K 7
#define NCR_SIZE_512K 8
#define NCR_SIZE_1M 9
#define NCR_SIZE_2M 10
#define NCR_SIZE_4M 11
#define NCR_SIZE_8M 12
#define NCR_SIZE_16M 13
#define NCR_SIZE_32M 14
#define NCR_SIZE_4G 15
#define ARR0 0xc4
#define ARR1 0xc7
#define ARR2 0xca
#define ARR3 0xcd
#define ARR4 0xd0
#define ARR5 0xd3
#define ARR6 0xd6
#define ARR7 0xd9
#define ARR_SIZE_0K 0
#define ARR_SIZE_4K 1
#define ARR_SIZE_8K 2
#define ARR_SIZE_16K 3
#define ARR_SIZE_32K 4
#define ARR_SIZE_64K 5
#define ARR_SIZE_128K 6
#define ARR_SIZE_256K 7
#define ARR_SIZE_512K 8
#define ARR_SIZE_1M 9
#define ARR_SIZE_2M 10
#define ARR_SIZE_4M 11
#define ARR_SIZE_8M 12
#define ARR_SIZE_16M 13
#define ARR_SIZE_32M 14
#define ARR_SIZE_4G 15
#define RCR0 0xdc
#define RCR1 0xdd
#define RCR2 0xde
#define RCR3 0xdf
#define RCR4 0xe0
#define RCR5 0xe1
#define RCR6 0xe2
#define RCR7 0xe3
#define RCR_RCD 0x01
#define RCR_RCE 0x01
#define RCR_WWO 0x02
#define RCR_WL 0x04
#define RCR_WG 0x08
#define RCR_WT 0x10
#define RCR_NLB 0x20
#define AMD_WT_ALLOC_TME 0x40000
#define AMD_WT_ALLOC_PRE 0x20000
#define AMD_WT_ALLOC_FRE 0x10000
#define MSR_EFER 0xc0000080
#define EFER_SCE 0x00000001
#define EFER_LME 0x00000100
#define EFER_LMA 0x00000400
#define EFER_NXE 0x00000800
#define EFER_SVME 0x00001000
#define EFER_LMSLE 0x00002000
#define EFER_FFXSR 0x00004000
#define EFER_TCE 0x00008000
#define EFER_MCOMMIT 0x00020000
#define EFER_INTWB 0x00040000
#define MSR_STAR 0xc0000081
#define MSR_LSTAR 0xc0000082
#define MSR_CSTAR 0xc0000083
#define MSR_SF_MASK 0xc0000084
#define MSR_FSBASE 0xc0000100
#define MSR_GSBASE 0xc0000101
#define MSR_KGSBASE 0xc0000102
#define MSR_TSC_AUX 0xc0000103
#define MSR_PERFEVSEL0 0xc0010000
#define MSR_PERFEVSEL1 0xc0010001
#define MSR_PERFEVSEL2 0xc0010002
#define MSR_PERFEVSEL3 0xc0010003
#define MSR_K7_PERFCTR0 0xc0010004
#define MSR_K7_PERFCTR1 0xc0010005
#define MSR_K7_PERFCTR2 0xc0010006
#define MSR_K7_PERFCTR3 0xc0010007
#define MSR_SYSCFG 0xc0010010
#define MSR_IORRBASE0 0xc0010016
#define MSR_IORRMASK0 0xc0010017
#define MSR_IORRBASE1 0xc0010018
#define MSR_IORRMASK1 0xc0010019
#define MSR_TOP_MEM 0xc001001a
#define MSR_TOP_MEM2 0xc001001d
#define MSR_AMD_NB_CFG 0xc001001f
#define NB_CFG_INITAPICCPUIDLO (1ULL << 54)
#define MSR_AMD_PATCH_LEVEL 0x0000008b
#define MSR_AMD_PATCH_LOADER 0xc0010020
#define MSR_AMD_VM_CR 0xc0010114
#define VM_CR_DPD 0x00000001
#define VM_CR_R_INIT 0x00000002
#define VM_CR_DIS_A20M 0x00000004
#define VM_CR_LOCK 0x00000008
#define VM_CR_SVMDIS 0x00000010
#define MSR_AMD_VM_HSAVE_PA 0xc0010117
#define MSR_AMD_LS_CFG 0xc0011020
#define MSR_AMD_IC_CFG 0xc0011021
#define MSR_AMD_DE_CFG 0xc0011029
#define VIA_HAS_RNG 1
#define VIA_HAS_AES 1
#define VIA_HAS_SHA 2
#define VIA_HAS_MM 4
#define VIA_HAS_AESCTR 8
#define VIA_CPUID_HAS_RNG 0x000004
#define VIA_CPUID_DO_RNG 0x000008
#define VIA_CPUID_HAS_ACE 0x000040
#define VIA_CPUID_DO_ACE 0x000080
#define VIA_CPUID_HAS_ACE2 0x000100
#define VIA_CPUID_DO_ACE2 0x000200
#define VIA_CPUID_HAS_PHE 0x000400
#define VIA_CPUID_DO_PHE 0x000800
#define VIA_CPUID_HAS_PMM 0x001000
#define VIA_CPUID_DO_PMM 0x002000
#endif