#define CR0_PE 0x00000001
#define CR0_MP 0x00000002
#define CR0_EM 0x00000004
#define CR0_TS 0x00000008
#define CR0_ET 0x00000010
#define CR0_PG 0x80000000
#define CR0_NE 0x00000020
#define CR0_WP 0x00010000
#define CR0_AM 0x00040000
#define CR0_NW 0x20000000
#define CR0_CD 0x40000000
#define CR3_PWT (1ULL << 3)
#define CR3_PCD (1ULL << 4)
#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_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 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_SYS1 0x00000400
#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_CFLUSH 0x00080000
#define CPUID_B20 0x00100000
#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_B30 0x40000000
#define CPUID_PBE 0x80000000
#define CPUIDECX_SSE3 0x00000001
#define CPUIDECX_PCLMUL 0x00000002
#define CPUIDECX_DTES64 0x00000004
#define CPUIDECX_MWAIT 0x00000008
#define CPUIDECX_DSCPL 0x00000010
#define CPUIDECX_VMX 0x00000020
#define CPUIDECX_SMX 0x00000040
#define CPUIDECX_EST 0x00000080
#define CPUIDECX_TM2 0x00000100
#define CPUIDECX_SSSE3 0x00000200
#define CPUIDECX_CNXTID 0x00000400
#define CPUIDECX_SDBG 0x00000800
#define CPUIDECX_FMA3 0x00001000
#define CPUIDECX_CX16 0x00002000
#define CPUIDECX_XTPR 0x00004000
#define CPUIDECX_PDCM 0x00008000
#define CPUIDECX_PCID 0x00020000
#define CPUIDECX_DCA 0x00040000
#define CPUIDECX_SSE41 0x00080000
#define CPUIDECX_SSE42 0x00100000
#define CPUIDECX_X2APIC 0x00200000
#define CPUIDECX_MOVBE 0x00400000
#define CPUIDECX_POPCNT 0x00800000
#define CPUIDECX_DEADLINE 0x01000000
#define CPUIDECX_AES 0x02000000
#define CPUIDECX_XSAVE 0x04000000
#define CPUIDECX_OSXSAVE 0x08000000
#define CPUIDECX_AVX 0x10000000
#define CPUIDECX_F16C 0x20000000
#define CPUIDECX_RDRAND 0x40000000
#define CPUIDECX_HV 0x80000000
#define SEFF0EBX_FSGSBASE 0x00000001
#define SEFF0EBX_TSC_ADJUST 0x00000002
#define SEFF0EBX_SGX 0x00000004
#define SEFF0EBX_BMI1 0x00000008
#define SEFF0EBX_HLE 0x00000010
#define SEFF0EBX_AVX2 0x00000020
#define SEFF0EBX_SMEP 0x00000080
#define SEFF0EBX_BMI2 0x00000100
#define SEFF0EBX_ERMS 0x00000200
#define SEFF0EBX_INVPCID 0x00000400
#define SEFF0EBX_RTM 0x00000800
#define SEFF0EBX_PQM 0x00001000
#define SEFF0EBX_MPX 0x00004000
#define SEFF0EBX_AVX512F 0x00010000
#define SEFF0EBX_AVX512DQ 0x00020000
#define SEFF0EBX_RDSEED 0x00040000
#define SEFF0EBX_ADX 0x00080000
#define SEFF0EBX_SMAP 0x00100000
#define SEFF0EBX_AVX512IFMA 0x00200000
#define SEFF0EBX_PCOMMIT 0x00400000
#define SEFF0EBX_CLFLUSHOPT 0x00800000
#define SEFF0EBX_CLWB 0x01000000
#define SEFF0EBX_PT 0x02000000
#define SEFF0EBX_AVX512PF 0x04000000
#define SEFF0EBX_AVX512ER 0x08000000
#define SEFF0EBX_AVX512CD 0x10000000
#define SEFF0EBX_SHA 0x20000000
#define SEFF0EBX_AVX512BW 0x40000000
#define SEFF0EBX_AVX512VL 0x80000000
#define SEFF0ECX_PREFETCHWT1 0x00000001
#define SEFF0ECX_AVX512VBMI 0x00000002
#define SEFF0ECX_UMIP 0x00000004
#define SEFF0ECX_PKU 0x00000008
#define SEFF0ECX_WAITPKG 0x00000020
#define SEFF0EDX_AVX512_4FNNIW 0x00000004
#define SEFF0EDX_AVX512_4FMAPS 0x00000008
#define SEFF0EDX_SRBDS_CTRL 0x00000200
#define SEFF0EDX_MD_CLEAR 0x00000400
#define SEFF0EDX_TSXFA 0x00002000
#define SEFF0EDX_IBRS 0x04000000
#define SEFF0EDX_STIBP 0x08000000
#define SEFF0EDX_L1DF 0x10000000
#define SEFF0EDX_ARCH_CAP 0x20000000
#define SEFF0EDX_SSBD 0x80000000
#define TPM_SENSOR 0x00000001
#define TPM_ARAT 0x00000004
#define CPUIDEAX_VERID 0x000000ff
#define CPUIDEAX_NUM_GC(cpuid) (((cpuid) >> 8) & 0x000000ff)
#define CPUIDEAX_BIT_GC(cpuid) (((cpuid) >> 16) & 0x000000ff)
#define CPUIDEAX_LEN_EBX(cpuid) (((cpuid) >> 24) & 0x000000ff)
#define CPUIDEBX_EVT_CORE (1 << 0)
#define CPUIDEBX_EVT_INST (1 << 1)
#define CPUIDEBX_EVT_REFR (1 << 2)
#define CPUIDEBX_EVT_CACHE_REF (1 << 3)
#define CPUIDEBX_EVT_CACHE_MIS (1 << 4)
#define CPUIDEBX_EVT_BRANCH_INST (1 << 5)
#define CPUIDEBX_EVT_BRANCH_MISP (1 << 6)
#define CPUIDEDX_NUM_FC(cpuid) (((cpuid) >> 0) & 0x0000001f)
#define CPUIDEDX_BIT_FC(cpuid) (((cpuid) >> 5) & 0x000000ff)
#define CPUID_MPC 0x00080000
#define CPUID_NXE 0x00100000
#define CPUID_MMXX 0x00400000
#define CPUID_FFXSR 0x02000000
#define CPUID_PAGE1GB 0x04000000
#define CPUID_RDTSCP 0x08000000
#define CPUID_LONG 0x20000000
#define CPUID_3DNOW2 0x40000000
#define CPUID_3DNOW 0x80000000
#define CPUIDECX_LAHF 0x00000001
#define CPUIDECX_CMPLEG 0x00000002
#define CPUIDECX_SVM 0x00000004
#define CPUIDECX_EAPICSP 0x00000008
#define CPUIDECX_AMCR8 0x00000010
#define CPUIDECX_ABM 0x00000020
#define CPUIDECX_SSE4A 0x00000040
#define CPUIDECX_MASSE 0x00000080
#define CPUIDECX_3DNOWP 0x00000100
#define CPUIDECX_OSVW 0x00000200
#define CPUIDECX_IBS 0x00000400
#define CPUIDECX_XOP 0x00000800
#define CPUIDECX_SKINIT 0x00001000
#define CPUIDECX_WDT 0x00002000
#define CPUIDECX_LWP 0x00008000
#define CPUIDECX_FMA4 0x00010000
#define CPUIDECX_TCE 0x00020000
#define CPUIDECX_NODEID 0x00080000
#define CPUIDECX_TBM 0x00200000
#define CPUIDECX_TOPEXT 0x00400000
#define CPUIDECX_CPCTR 0x00800000
#define CPUIDECX_DBKP 0x04000000
#define CPUIDECX_PERFTSC 0x08000000
#define CPUIDECX_PCTRL3 0x10000000
#define CPUIDECX_MWAITX 0x20000000
#define CPUIDEDX_ITSC (1 << 8)
#define CPUIDEBX_IBPB (1ULL << 12)
#define CPUIDEBX_IBRS (1ULL << 14)
#define CPUIDEBX_STIBP (1ULL << 15)
#define CPUIDEBX_IBRS_ALWAYSON (1ULL << 16)
#define CPUIDEBX_STIBP_ALWAYSON (1ULL << 17)
#define CPUIDEBX_IBRS_PREF (1ULL << 18)
#define CPUIDEBX_SSBD (1ULL << 24)
#define CPUIDEBX_VIRT_SSBD (1ULL << 25)
#define CPUIDEBX_SSBD_NOTREQ (1ULL << 26)
#define CPUID2FAMILY(cpuid) (((cpuid) >> 8) & 15)
#define CPUID2MODEL(cpuid) (((cpuid) >> 4) & 15)
#define CPUID2STEPPING(cpuid) ((cpuid) & 15)
#define CPUID(code, eax, ebx, ecx, edx) \
__asm volatile("cpuid" \
: "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) \
: "a" (code))
#define CPUID_LEAF(code, leaf, eax, ebx, ecx, edx) \
__asm volatile("cpuid" \
: "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) \
: "a" (code), "c" (leaf))
#define MSR_P5_MC_ADDR 0x000
#define MSR_P5_MC_TYPE 0x001
#define MSR_TSC 0x010
#define P5MSR_CTRSEL 0x011
#define P5MSR_CTR0 0x012
#define P5MSR_CTR1 0x013
#define MSR_PLATFORM_ID 0x017
#define MSR_APICBASE 0x01b
#define APICBASE_BSP 0x100
#define APICBASE_ENABLE_X2APIC 0x400
#define APICBASE_GLOBAL_ENABLE 0x800
#define MSR_EBL_CR_POWERON 0x02a
#define MSR_EBC_FREQUENCY_ID 0x02c
#define MSR_TEST_CTL 0x033
#define MSR_IA32_FEATURE_CONTROL 0x03a
#define MSR_SPEC_CTRL 0x048
#define SPEC_CTRL_IBRS (1ULL << 0)
#define SPEC_CTRL_STIBP (1ULL << 1)
#define SPEC_CTRL_SSBD (1ULL << 2)
#define MSR_PRED_CMD 0x049
#define PRED_CMD_IBPB (1ULL << 0)
#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 P6MSR_CTR0 0x0c1
#define P6MSR_CTR1 0x0c2
#define MSR_FSB_FREQ 0x0cd
#define MSR_MTRRcap 0x0fe
#define MTRRcap_FIXED 0x100
#define MTRRcap_WC 0x400
#define MTRRcap_SMRR 0x800
#define MSR_ARCH_CAPABILITIES 0x10a
#define ARCH_CAP_RDCL_NO (1 << 0)
#define ARCH_CAP_IBRS_ALL (1 << 1)
#define ARCH_CAP_RSBA (1 << 2)
#define ARCH_CAP_SKIP_L1DFL_VMENTRY (1 << 3)
#define ARCH_CAP_SSB_NO (1 << 4)
#define ARCH_CAP_MDS_NO (1 << 5)
#define ARCH_CAP_IF_PSCHANGE_MC_NO (1 << 6)
#define ARCH_CAP_TSX_CTRL (1 << 7)
#define ARCH_CAP_TAA_NO (1 << 8)
#define ARCH_CAP_MCU_CONTROL (1 << 9)
#define ARCH_CAP_MISC_PACKAGE_CTLS (1 << 10)
#define ARCH_CAP_ENERGY_FILTERING_CTL (1 << 11)
#define ARCH_CAP_DOITM (1 << 12)
#define ARCH_CAP_SBDR_SSDP_NO (1 << 13)
#define ARCH_CAP_FBSDP_NO (1 << 14)
#define ARCH_CAP_PSDP_NO (1 << 15)
#define ARCH_CAP_FB_CLEAR (1 << 17)
#define ARCH_CAP_FB_CLEAR_CTRL (1 << 18)
#define ARCH_CAP_RRSBA (1 << 19)
#define ARCH_CAP_BHI_NO (1 << 20)
#define ARCH_CAP_XAPIC_DISABLE_STATUS (1 << 21)
#define ARCH_CAP_OVERCLOCKING_STATUS (1 << 23)
#define ARCH_CAP_PBRSB_NO (1 << 24)
#define ARCH_CAP_GDS_CTRL (1 << 25)
#define ARCH_CAP_GDS_NO (1 << 26)
#define MSR_FLUSH_CMD 0x10b
#define FLUSH_CMD_L1D_FLUSH (1ULL << 0)
#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_CTR3 0x11e
#define MSR_TSX_CTRL 0x122
#define TSX_CTRL_RTM_DISABLE (1ULL << 0)
#define TSX_CTRL_TSX_CPUID_CLEAR (1ULL << 1)
#define MSR_MCU_OPT_CTRL 0x123
#define RNGDS_MITG_DIS (1ULL << 0)
#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 P6MSR_CTRSEL0 0x186
#define P6MSR_CTRSEL1 0x187
#define MSR_PERF_STATUS 0x198
#define MSR_PERF_CTL 0x199
#define PERF_CTL_TURBO 0x100000000ULL
#define MSR_THERM_CONTROL 0x19a
#define MSR_THERM_INTERRUPT 0x19b
#define MSR_THERM_STATUS 0x19c
#define MSR_THERM_STATUS_VALID_BIT 0x80000000
#define MSR_THERM_STATUS_TEMP(msr) ((msr >> 16) & 0x7f)
#define MSR_THERM2_CTL 0x19d
#define MSR_MISC_ENABLE 0x1a0
#define MISC_ENABLE_FAST_STRINGS (1 << 0)
#define MISC_ENABLE_TCC (1 << 3)
#define MISC_ENABLE_PERF_MON_AVAILABLE (1 << 7)
#define MISC_ENABLE_BTS_UNAVAILABLE (1 << 11)
#define MISC_ENABLE_PEBS_UNAVAILABLE (1 << 12)
#define MISC_ENABLE_EIST_ENABLED (1 << 16)
#define MISC_ENABLE_ENABLE_MONITOR_FSM (1 << 18)
#define MISC_ENABLE_LIMIT_CPUID_MAXVAL (1 << 22)
#define MISC_ENABLE_xTPR_MESSAGE_DISABLE (1 << 23)
#define MISC_ENABLE_XD_BIT_DISABLE (1 << 2)
#define MSR_TEMPERATURE_TARGET 0x1a2
#define MSR_TEMPERATURE_TARGET_TJMAX(r) (((r) >> 16) & 0xff)
#define MSR_TEMPERATURE_TARGET_UNDOCUMENTED 0x0ee
#define MSR_TEMPERATURE_TARGET_LOW_BIT_UNDOCUMENTED 0x40000000
#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_MTRRfix64K_00000 0x250
#define MSR_MTRRfix16K_80000 0x258
#define MSR_MTRRfix4K_C0000 0x268
#define MSR_CR_PAT 0x277
#define MSR_MTRRdefType 0x2ff
#define MTRRdefType_FIXED_ENABLE 0x400
#define MTRRdefType_ENABLE 0x800
#define MSR_PERF_FIXED_CTR1 0x30a
#define MSR_PERF_FIXED_CTR2 0x30b
#define MSR_PERF_FIXED_CTR_CTRL 0x38d
#define MSR_PERF_FIXED_CTR_FC_DIS 0x0
#define MSR_PERF_FIXED_CTR_FC_1 0x1
#define MSR_PERF_FIXED_CTR_FC_123 0x2
#define MSR_PERF_FIXED_CTR_FC_ANY 0x3
#define MSR_PERF_FIXED_CTR_FC_MASK 0x3
#define MSR_PERF_FIXED_CTR_FC(_i, _v) ((_v) << (4 * (_i)))
#define MSR_PERF_FIXED_CTR_ANYTHR(_i) (0x4 << (4 * (_i)))
#define MSR_PERF_FIXED_CTR_INT(_i) (0x8 << (4 * (_i)))
#define MSR_PERF_GLOBAL_CTRL 0x38f
#define MSR_PERF_GLOBAL_CTR1_EN (1ULL << 33)
#define MSR_PERF_GLOBAL_CTR2_EN (1ULL << 34)
#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_MC4_CTL 0x40c
#define MSR_MC4_STATUS 0x40d
#define MSR_MC4_ADDR 0x40e
#define MSR_MC4_MISC 0x40f
#define MSR_MC3_CTL 0x410
#define MSR_MC3_STATUS 0x411
#define MSR_MC3_ADDR 0x412
#define MSR_MC3_MISC 0x413
#define MSR_CENT_TMTEMPERATURE 0x1423
#define MSR_C7M_TMTEMPERATURE 0x1169
#define MSR_K6_EPMR 0xc0000086
#define MSR_K7_EVNTSEL0 0xc0010000
#define MSR_K7_EVNTSEL1 0xc0010001
#define MSR_K7_EVNTSEL2 0xc0010002
#define MSR_K7_EVNTSEL3 0xc0010003
#define MSR_K7_PERFCTR0 0xc0010004
#define MSR_K7_PERFCTR1 0xc0010005
#define MSR_K7_PERFCTR2 0xc0010006
#define MSR_K7_PERFCTR3 0xc0010007
#define MSR_PATCH_LEVEL 0x0000008b
#define MSR_SYSCFG 0xc0000010
#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 MSR_STAR 0xc0000081
#define MSR_LSTAR 0xc0000082
#define MSR_CSTAR 0xc0000083
#define MSR_SFMASK 0xc0000084
#define MSR_FSBASE 0xc0000100
#define MSR_GSBASE 0xc0000101
#define MSR_KERNELGSBASE 0xc0000102
#define MSR_PATCH_LOADER 0xc0010020
#define MSR_INT_PEN_MSG 0xc0010055
#define MSR_DE_CFG 0xc0011029
#define DE_CFG_721 0x00000001
#define DE_CFG_SERIALIZE_LFENCE (1 << 1)
#define DE_CFG_SERIALIZE_9 (1 << 9)
#define IPM_C1E_CMP_HLT 0x10000000
#define IPM_SMI_CMP_HLT 0x08000000
#define MSR_HWCR 0xc0010015
#define HWCR_FFDIS 0x00000040
#define MSR_NB_CFG 0xc001001f
#define NB_CFG_DISIOREQLOCK 0x0000000000000004ULL
#define NB_CFG_DISDATMSK 0x0000001000000000ULL
#define MSR_LS_CFG 0xc0011020
#define LS_CFG_DIS_LS2_SQUISH 0x02000000
#define MSR_IC_CFG 0xc0011021
#define IC_CFG_DIS_SEQ_PREFETCH 0x00000800
#define MSR_DC_CFG 0xc0011022
#define DC_CFG_DIS_CNV_WC_SSO 0x00000004
#define DC_CFG_DIS_SMC_CHK_BUF 0x00000400
#define MSR_BU_CFG 0xc0011023
#define BU_CFG_THRL2IDXCMPDIS 0x0000080000000000ULL
#define BU_CFG_WBPFSMCCHKDIS 0x0000200000000000ULL
#define BU_CFG_WBENHWSBDIS 0x0001000000000000ULL
#define MTRR_N64K 8
#define MTRR_N16K 16
#define MTRR_N4K 64
#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 PMC5_CESR_EVENT 0x003f
#define PMC5_CESR_OS 0x0040
#define PMC5_CESR_USR 0x0080
#define PMC5_CESR_E 0x0100
#define PMC5_CESR_P 0x0200
#define PMC6_EVTSEL_EVENT 0x000000ff
#define PMC6_EVTSEL_UNIT 0x0000ff00
#define PMC6_EVTSEL_UNIT_SHIFT 8
#define PMC6_EVTSEL_USR (1 << 16)
#define PMC6_EVTSEL_OS (1 << 17)
#define PMC6_EVTSEL_E (1 << 18)
#define PMC6_EVTSEL_PC (1 << 19)
#define PMC6_EVTSEL_INT (1 << 20)
#define PMC6_EVTSEL_EN (1 << 22)
#define PMC6_EVTSEL_INV (1 << 23)
#define PMC6_EVTSEL_COUNTER_MASK 0xff000000
#define PMC6_EVTSEL_COUNTER_MASK_SHIFT 24
#define PMC6_DATA_MEM_REFS 0x43
#define PMC6_DCU_LINES_IN 0x45
#define PMC6_DCU_M_LINES_IN 0x46
#define PMC6_DCU_M_LINES_OUT 0x47
#define PMC6_DCU_MISS_OUTSTANDING 0x48
#define PMC6_IFU_IFETCH 0x80
#define PMC6_IFU_IFETCH_MISS 0x81
#define PMC6_ITLB_MISS 0x85
#define PMC6_IFU_MEM_STALL 0x86
#define PMC6_ILD_STALL 0x87
#define PMC6_L2_IFETCH 0x28
#define PMC6_L2_LD 0x29
#define PMC6_L2_ST 0x2a
#define PMC6_L2_LINES_IN 0x24
#define PMC6_L2_LINES_OUT 0x26
#define PMC6_L2_M_LINES_INM 0x25
#define PMC6_L2_M_LINES_OUTM 0x27
#define PMC6_L2_RQSTS 0x2e
#define PMC6_L2_ADS 0x21
#define PMC6_L2_DBUS_BUSY 0x22
#define PMC6_L2_DBUS_BUSY_RD 0x23
#define PMC6_BUS_DRDY_CLOCKS 0x62
#define PMC6_BUS_LOCK_CLOCKS 0x63
#define PMC6_BUS_REQ_OUTSTANDING 0x60
#define PMC6_BUS_TRAN_BRD 0x65
#define PMC6_BUS_TRAN_RFO 0x66
#define PMC6_BUS_TRANS_WB 0x67
#define PMC6_BUS_TRAN_IFETCH 0x68
#define PMC6_BUS_TRAN_INVAL 0x69
#define PMC6_BUS_TRAN_PWR 0x6a
#define PMC6_BUS_TRANS_P 0x6b
#define PMC6_BUS_TRANS_IO 0x6c
#define PMC6_BUS_TRAN_DEF 0x6d
#define PMC6_BUS_TRAN_BURST 0x6e
#define PMC6_BUS_TRAN_ANY 0x70
#define PMC6_BUS_TRAN_MEM 0x6f
#define PMC6_BUS_DATA_RCV 0x64
#define PMC6_BUS_BNR_DRV 0x61
#define PMC6_BUS_HIT_DRV 0x7a
#define PMC6_BUS_HITM_DRDV 0x7b
#define PMC6_BUS_SNOOP_STALL 0x7e
#define PMC6_FLOPS 0xc1
#define PMC6_FP_COMP_OPS_EXE 0x10
#define PMC6_FP_ASSIST 0x11
#define PMC6_MUL 0x12
#define PMC6_DIV 0x12
#define PMC6_CYCLES_DIV_BUSY 0x14
#define PMC6_LD_BLOCKS 0x03
#define PMC6_SB_DRAINS 0x04
#define PMC6_MISALIGN_MEM_REF 0x05
#define PMC6_EMON_KNI_PREF_DISPATCHED 0x07
#define PMC6_EMON_KNI_PREF_MISS 0x4b
#define PMC6_INST_RETIRED 0xc0
#define PMC6_UOPS_RETIRED 0xc2
#define PMC6_INST_DECODED 0xd0
#define PMC6_EMON_KNI_INST_RETIRED 0xd8
#define PMC6_EMON_KNI_COMP_INST_RET 0xd9
#define PMC6_HW_INT_RX 0xc8
#define PMC6_CYCLES_INT_MASKED 0xc6
#define PMC6_CYCLES_INT_PENDING_AND_MASKED 0xc7
#define PMC6_BR_INST_RETIRED 0xc4
#define PMC6_BR_MISS_PRED_RETIRED 0xc5
#define PMC6_BR_TAKEN_RETIRED 0xc9
#define PMC6_BR_MISS_PRED_TAKEN_RET 0xca
#define PMC6_BR_INST_DECODED 0xe0
#define PMC6_BTB_MISSES 0xe2
#define PMC6_BR_BOGUS 0xe4
#define PMC6_BACLEARS 0xe6
#define PMC6_RESOURCE_STALLS 0xa2
#define PMC6_PARTIAL_RAT_STALLS 0xd2
#define PMC6_SEGMENT_REG_LOADS 0x06
#define PMC6_CPU_CLK_UNHALTED 0x79
#define PMC6_MMX_INSTR_EXEC 0xb0
#define PMC6_MMX_SAT_INSTR_EXEC 0xb1
#define PMC6_MMX_UOPS_EXEC 0xb2
#define PMC6_MMX_INSTR_TYPE_EXEC 0xb3
#define PMC6_FP_MMX_TRANS 0xcc
#define PMC6_MMX_ASSIST 0xcd
#define PMC6_MMX_INSTR_RET 0xc3
#define PMC6_SEG_RENAME_STALLS 0xd4
#define PMC6_SEG_REG_RENAMES 0xd5
#define PMC6_RET_SEG_RENAMES 0xd6
#define C3_HAS_AES 1
#define C3_HAS_SHA 2
#define C3_HAS_MM 4
#define C3_HAS_AESCTR 8
#define C3_CPUID_HAS_RNG 0x000004
#define C3_CPUID_DO_RNG 0x000008
#define C3_CPUID_HAS_ACE 0x000040
#define C3_CPUID_DO_ACE 0x000080
#define C3_CPUID_HAS_ACE2 0x000100
#define C3_CPUID_DO_ACE2 0x000200
#define C3_CPUID_HAS_PHE 0x000400
#define C3_CPUID_DO_PHE 0x000800
#define C3_CPUID_HAS_PMM 0x001000
#define C3_CPUID_DO_PMM 0x002000
#define C3_CRYPT_CWLO_ROUND_M 0x0000000f
#define C3_CRYPT_CWLO_ALG_M 0x00000070
#define C3_CRYPT_CWLO_ALG_AES 0x00000000
#define C3_CRYPT_CWLO_KEYGEN_M 0x00000080
#define C3_CRYPT_CWLO_KEYGEN_HW 0x00000000
#define C3_CRYPT_CWLO_KEYGEN_SW 0x00000080
#define C3_CRYPT_CWLO_NORMAL 0x00000000
#define C3_CRYPT_CWLO_INTERMEDIATE 0x00000100
#define C3_CRYPT_CWLO_ENCRYPT 0x00000000
#define C3_CRYPT_CWLO_DECRYPT 0x00000200
#define C3_CRYPT_CWLO_KEY128 0x0000000a
#define C3_CRYPT_CWLO_KEY192 0x0000040c
#define C3_CRYPT_CWLO_KEY256 0x0000080e
#define IA32_DEBUG_INTERFACE 0xc80
#define IA32_DEBUG_INTERFACE_ENABLE 0x00000001
#define IA32_DEBUG_INTERFACE_LOCK 0x40000000
#define IA32_DEBUG_INTERFACE_MASK 0x80000000
#define PATENTRY(n, type) ((uint64_t)type << ((n) * 8))
#define PAT_UC 0x0UL
#define PAT_WC 0x1UL
#define PAT_WT 0x4UL
#define PAT_WP 0x5UL
#define PAT_WB 0x6UL
#define PAT_UCMINUS 0x7UL
#define XSAVE_XSAVEOPT 0x1UL
#define XSAVE_XSAVEC 0x2UL
#define XSAVE_XGETBV1 0x4UL
#define XSAVE_XSAVES 0x8UL