From ace65b453151845bc361f21f3e5b651c35f9f126 Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Wed, 22 May 2024 13:00:41 -0400 Subject: massive refactor for mp and organization --- include/arch/x86_64/msr.h | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 include/arch/x86_64/msr.h (limited to 'include/arch/x86_64/msr.h') diff --git a/include/arch/x86_64/msr.h b/include/arch/x86_64/msr.h new file mode 100644 index 0000000..c20f8fc --- /dev/null +++ b/include/arch/x86_64/msr.h @@ -0,0 +1,56 @@ +#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 -- cgit v1.2.1