4 #include <lunaix/types.h>
6 #define SEL_RPL(selector) ((selector)&0x3)
8 typedef unsigned int reg32;
9 typedef unsigned short reg16;
21 } __attribute__((packed)) gp_regs;
29 } __attribute__((packed)) sg_reg;
32 cpu_get_brand(char* brand_out);
37 #pragma GCC diagnostic push
38 #pragma GCC diagnostic ignored "-Wreturn-type"
43 asm volatile("movl %%cr0,%0" : "=r"(val));
51 asm volatile("movl %%cr2,%0" : "=r"(val));
59 asm volatile("movl %%cr3,%0" : "=r"(val));
67 asm volatile("movl %%cr4,%0" : "=r"(val));
75 asm volatile("pushf\n"
80 #pragma GCC diagnostic pop
85 asm("mov %0, %%cr0" ::"r"(v));
91 asm("mov %0, %%cr2" ::"r"(v));
97 asm("mov %0, %%cr3" ::"r"(v));
103 asm volatile("invlpg (%0)" ::"r"(va) : "memory");
107 cpu_enable_interrupt()
113 cpu_disable_interrupt()
122 asm("movl %%cr3, %0\n"
131 asm("int %0" ::"i"(vect));
135 cpu_rdmsr(u32_t msr_idx, u32_t* reg_high, u32_t* reg_low);
138 cpu_wrmsr(u32_t msr_idx, u32_t reg_high, u32_t reg_low);
141 cpu_ldvmspace(ptr_t vms)