6 typedef unsigned int reg32;
7 typedef unsigned short reg16;
20 } __attribute__((packed)) registers;
22 #pragma GCC diagnostic push
23 #pragma GCC diagnostic ignored "-Wreturn-type"
24 static inline reg32 cpu_rcr0() {
25 asm volatile ("mov %cr0, %eax");
28 static inline reg32 cpu_rcr2() {
29 asm volatile ("mov %cr2, %eax");
32 static inline reg32 cpu_rcr3() {
33 asm volatile ("mov %cr3, %eax");
35 #pragma GCC diagnostic pop
37 static inline void cpu_lcr0(reg32 v) {
44 static inline void cpu_lcr2(reg32 v) {
51 static inline void cpu_lcr3(reg32 v) {
58 static inline void cpu_invplg(void* va) {
59 __asm__("invlpg (%0)" ::"r"((uintptr_t)va) : "memory");
62 static inline void cpu_invtlb() {