aboutsummaryrefslogtreecommitdiff
path: root/mirai/crimson/types/context.zig
diff options
context:
space:
mode:
Diffstat (limited to 'mirai/crimson/types/context.zig')
-rw-r--r--mirai/crimson/types/context.zig47
1 files changed, 37 insertions, 10 deletions
diff --git a/mirai/crimson/types/context.zig b/mirai/crimson/types/context.zig
index 710e25f..8df912e 100644
--- a/mirai/crimson/types/context.zig
+++ b/mirai/crimson/types/context.zig
@@ -1,20 +1,47 @@
//! CPU Context
pub const Context = extern struct {
- rax: u64 = 0, rbx: u64 = 0, rcx: u64 = 0, rdx: u64 = 0,
- rsi: u64 = 0, rdi: u64 = 0, rbp: u64 = 0, rsp: u64 = 0,
- r8: u64 = 0, r9: u64 = 0, r10: u64 = 0, r11: u64 = 0,
- r12: u64 = 0, r13: u64 = 0, r14: u64 = 0, r15: u64 = 0,
- rip: u64 = 0, rflags: u64 = 0,
- cs: u16 = 0, ds: u16 = 0, es: u16 = 0, fs: u16 = 0, gs: u16 = 0, ss: u16 = 0,
+ rax: u64 = 0,
+ rbx: u64 = 0,
+ rcx: u64 = 0,
+ rdx: u64 = 0,
+ rsi: u64 = 0,
+ rdi: u64 = 0,
+ rbp: u64 = 0,
+ rsp: u64 = 0,
+ r8: u64 = 0,
+ r9: u64 = 0,
+ r10: u64 = 0,
+ r11: u64 = 0,
+ r12: u64 = 0,
+ r13: u64 = 0,
+ r14: u64 = 0,
+ r15: u64 = 0,
+ rip: u64 = 0,
+ rflags: u64 = 0,
+ cs: u16 = 0,
+ ds: u16 = 0,
+ es: u16 = 0,
+ fs: u16 = 0,
+ gs: u16 = 0,
+ ss: u16 = 0,
padding: u32 = 0,
- cr0: u64 = 0, cr2: u64 = 0, cr3: u64 = 0, cr4: u64 = 0,
+ cr0: u64 = 0,
+ cr2: u64 = 0,
+ cr3: u64 = 0,
+ cr4: u64 = 0,
pub fn clear(self: *Context) void {
self.* = Context{};
}
- pub fn is_user_mode(self: *const Context) bool { return (self.cs & 0x3) == 3; }
- pub fn is_kernel_mode(self: *const Context) bool { return (self.cs & 0x3) == 0; }
- pub fn get_fault_address(self: *const Context) u64 { return self.cr2; }
+ pub fn is_user_mode(self: *const Context) bool {
+ return (self.cs & 0x3) == 3;
+ }
+ pub fn is_kernel_mode(self: *const Context) bool {
+ return (self.cs & 0x3) == 0;
+ }
+ pub fn get_fault_address(self: *const Context) u64 {
+ return self.cr2;
+ }
};