diff --git a/kernel/registers.h b/kernel/registers.h index a72b73c..082dde6 100644 --- a/kernel/registers.h +++ b/kernel/registers.h @@ -10,6 +10,12 @@ u16 _es(void); u16 _fs(void); u16 _gs(void); +uint64_t get_rflags(void); +uint64_t get_cr0(void); +uint64_t _cr2(void); +uint64_t _cr3(void); +uint64_t get_cr4(void); + u16 set_cs(void); u16 set_ds(void); @@ -18,4 +24,13 @@ u16 set_es(void); u16 set_fs(void); u16 set_gs(void); +void set_rflags(void); +void set_cr0(void); +void set_cr4(void); + + +uint64_t read_msr(uint32_t addr); +uint64_t write_msr(uint32_t addr, uint64_t value); + + #endif// REGISTERS_H \ No newline at end of file diff --git a/kernel/regs.h b/kernel/regs.h deleted file mode 100644 index 9848ae3..0000000 --- a/kernel/regs.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once -#include - -uint64_t _ds(void); -uint64_t _ss(void); -uint64_t _cs(void); -uint64_t _es(void); -uint64_t _fs(void); -uint64_t _gs(void); diff --git a/kernel/regs.s b/kernel/regs.s index 4b33f90..efef2c2 100644 --- a/kernel/regs.s +++ b/kernel/regs.s @@ -136,7 +136,7 @@ read_msr: ret -; read_msr(uint32_t addr, uint64_t value) +; write_msr(uint32_t addr, uint64_t value) write_msr: push rbp mov rbp, rsp