summaryrefslogtreecommitdiff
path: root/api/bits
diff options
context:
space:
mode:
authorAda Christine <adachristine18@gmail.com>2025-01-31 00:48:54 +0000
committerAda Christine <adachristine18@gmail.com>2025-01-31 00:48:54 +0000
commit2fb3f208bd2e739a8968afb23d22e13b6660ca22 (patch)
tree4bf02b06ed27c2726f675f752e064211df934323 /api/bits
parent0d2ddecc9aeb232746b76b4eebdb1381053a8951 (diff)
spread around defs, x86 asm and bits libs
Diffstat (limited to 'api/bits')
-rw-r--r--api/bits/x86_64/descriptor.h18
-rw-r--r--api/bits/x86_64/msr.h29
2 files changed, 47 insertions, 0 deletions
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 <stdint.h>
+
+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 <stdint.h>
+
+#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;
+};
+