2 * Acess2 - x86 Architecture
9 extern void MM_PageFault(Uint Addr, Uint ErrorCode, tRegs *Regs);
10 extern void Threads_Dump();
14 * \fn void ErrorHandler(tRegs *Regs)
15 * \brief General Error Handler
17 void ErrorHandler(tRegs *Regs)
20 __asm__ __volatile__ ("cli");
22 if(Regs->int_num == 14)
24 __asm__ __volatile__ ("mov %%cr2, %0":"=r"(cr));
25 MM_PageFault( cr, Regs->err_code, Regs );
29 Warning("CPU Error %i, Code: 0x%x", Regs->int_num, Regs->err_code);
30 Warning(" CS:EIP = 0x%04x:%08x", Regs->cs, Regs->eip);
31 Warning(" SS:ESP = 0x%04x:%08x", Regs->ss, Regs->esp);
32 Warning(" EFLAGS = 0x%08x", Regs->eflags);
33 Warning(" EAX %08x EBX %08x", Regs->eax, Regs->ebx);
34 Warning(" ECX %08x EDX %08x", Regs->ecx, Regs->edx);
35 Warning(" ESP %08x EBP %08x", Regs->esp, Regs->ebp);
36 Warning(" ESI %08x EDI %08x", Regs->esi, Regs->edi);
37 Warning(" DS %04x ES %04x", Regs->ds, Regs->es);
38 Warning(" FS %04x GS %04x", Regs->fs, Regs->gs);
41 __asm__ __volatile__ ("mov %%cr0, %0":"=r"(cr));
42 Warning(" CR0: 0x%08x", cr);
43 __asm__ __volatile__ ("mov %%cr2, %0":"=r"(cr));
44 Warning(" CR2: 0x%08x", cr);
45 __asm__ __volatile__ ("mov %%cr3, %0":"=r"(cr));
46 Warning(" CR3: 0x%08x", cr);
48 // Dump running threads
51 for(;;) __asm__ __volatile__ ("hlt");