45 lines
707 B
Zig
45 lines
707 B
Zig
pub fn readCr2() u64 {
|
|
return asm volatile (
|
|
\\ mov %cr2, %rax
|
|
: [ret] "={rax}" (-> u64),
|
|
:
|
|
: .{});
|
|
}
|
|
|
|
pub fn readCr3() u64 {
|
|
return asm volatile (
|
|
\\ mov %cr3, %rax
|
|
: [ret] "={rax}" (-> u64),
|
|
:
|
|
: .{});
|
|
}
|
|
|
|
pub const PrivilegeLevel = enum(u4) {
|
|
Kernel = 0,
|
|
User = 3,
|
|
};
|
|
|
|
pub const PtRegs = struct {
|
|
r15: usize,
|
|
r14: usize,
|
|
r13: usize,
|
|
r12: usize,
|
|
bp: usize,
|
|
bx: usize,
|
|
r11: usize,
|
|
r10: usize,
|
|
r9: usize,
|
|
r8: usize,
|
|
ax: usize,
|
|
cx: usize,
|
|
dx: usize,
|
|
si: usize,
|
|
di: usize,
|
|
code: usize,
|
|
ip: usize,
|
|
cs: usize,
|
|
flags: usize,
|
|
sp: usize,
|
|
ss: usize,
|
|
};
|