From 2fb3f208bd2e739a8968afb23d22e13b6660ca22 Mon Sep 17 00:00:00 2001 From: Ada Christine Date: Fri, 31 Jan 2025 00:48:54 +0000 Subject: spread around defs, x86 asm and bits libs --- api/bits/x86_64/descriptor.h | 18 ++++++++++++++++++ api/bits/x86_64/msr.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 api/bits/x86_64/descriptor.h create mode 100644 api/bits/x86_64/msr.h (limited to 'api/bits/x86_64') diff --git a/api/bits/x86_64/descriptor.h b/api/bits/x86_64/descriptor.h new file mode 100644 index 0000000..649ac74 --- /dev/null +++ b/api/bits/x86_64/descriptor.h @@ -0,0 +1,18 @@ +#include + +struct descriptor_table_register_long +{ + uint16_t limit; + uint64_t base; +} __attribute__((packed, aligned(16))); + +struct segment_descriptor +{ + uint16_t limit0; + uint16_t base0; + uint8_t base16; + uint8_t access; + uint8_t flags_limit16; + uint8_t base24; +} __attribute__((packed, aligned(8))); + diff --git a/api/bits/x86_64/msr.h b/api/bits/x86_64/msr.h new file mode 100644 index 0000000..a25af7d --- /dev/null +++ b/api/bits/x86_64/msr.h @@ -0,0 +1,29 @@ +#include + +#define MSR_INDEX_EFER 0xc0000080 +#define MSR_INDEX_STAR 0xc0000081 +#define MSR_INDEX_LSTAR 0xc0000082 + +union msr_efer +{ + uint64_t value; +}; + +union msr_star +{ + struct + { + uint32_t target_eip; + uint16_t syscall_segment_base; + uint16_t sysret_segment_base; + } + fields; + uint64_t value; +}; + +union msr_lstar +{ + uint64_t target_rip; + uint64_t value; +}; + -- cgit v1.3.1-1-g115d