Go to the documentation of this file.
22 #pragma clang optimize off
23 #pragma GCC push_options
24 #pragma GCC optimize ("O0")
33 ERROR(
"Divide Error Exception");
37 ERROR(
"Debug Exception");
41 ERROR(
"Non-Maskable Interrupt Exception");
45 ERROR(
"Breakpoint Exception");
49 ERROR(
"Overflow Exception");
53 ERROR(
"BOUND Range Exceeded Exception");
57 ERROR(
"Invalid Opcode Exception");
61 ERROR(
"Device Not Available Exception");
65 ERROR(
"Double Fault Exception");
69 ERROR(
"Coprocessor Segment Overrun Exception");
73 ERROR(
"Invalid Task State Segment Exception");
77 ERROR(
"Segment Not Present Exception");
81 ERROR(
"Stack Fault Exception");
85 ERROR(
"General Protection Fault Exception");
89 ERROR(
"Page Fault Exception");
95 ERROR(
"Floating Point Error Exception");
99 ERROR(
"Alignment Check Exception");
103 ERROR(
"Machine Check Exception");
107 ERROR(
"SIMD Floating Point Exception");
111 ERROR(
"Virtualization Exception");
145 asm volatile(
"mov %%cr2, %%eax\n"
146 "mov %%eax, %0\n" :
"=r" (cr2));
153 asm volatile(
"mov %%cr3, %%eax\n"
154 "mov %%eax, %0\n" :
"=r" (cr3));
160 asm volatile(
"mov %0, %%eax\n"
161 "mov %%eax, %%cr3" ::
"r" (cr3));
void writeCR3(u32 cr3) const
Write the CR3 register.
void logState(CPUState *state) const
Log the CPU state.
void logRegister(const char *name, u32 reg) const
Log a register.
volatile u32 readCR3() const
Read the CR3 register.
unsigned int u32
Unsigned 32-bit number.
void logException(CPUState *state) const
Log a CPU exception.
Contains all the CPU registers.
#define ERROR(msg)
Output an error message.
volatile u32 readCR2() const
Read the CR2 register.