Files
YukiOS/arch/x86_64/processor.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,
};