#ifndef _JOVE_x86_64_MSR_H #define _JOVE_x86_64_MSR_H 1 #include #include #define MSR_EFER 0xC0000080 #define MSR_STAR 0xC0000081 #define MSR_LSTAR 0xC0000082 #define MSR_SFMASK 0xC0000084 #define MSR_FSBASE 0xC0000100 #define MSR_GSBASE 0xC0000101 #define MSR_KERNELGSBASE 0xC0000102 typedef union msr_efer { struct { uint8_t sce : 1; uint8_t resv : 7; uint8_t lme : 1; uint8_t unk0 : 1; uint8_t lma : 1; uint8_t nxe : 1; uint8_t svme : 1; uint8_t lmsle : 1; uint8_t ffxsr : 1; uint8_t tce : 1; }; uint32_t v[2]; } msr_efer_t; typedef union msr_star { struct { uint32_t eip; uint16_t kcs; uint16_t ucs; }; uint32_t v[2]; } msr_star_t; typedef uintptr_t msr_lstar_t; void msr_efer_write(msr_efer_t v); msr_efer_t msr_efer_read(void); void msr_star_write(msr_star_t v); msr_star_t msr_star_read(void); void msr_lstar_write(msr_lstar_t v); msr_lstar_t msr_lstar_read(void); void msr_gsbase_write(uintptr_t gsbase); uintptr_t msr_gsbase_read(void); #endif