Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1000 → Rev 1001

/shark/trunk/oslib/kl/init.c
46,9 → 46,46
WORD TSS_control[TSSMax];
BYTE ll_FPU_stdctx[FPU_CONTEXT_SIZE];
 
void debug_info(void) {
static DWORD fault_ip;
static DWORD fault_cs;
static DWORD error_code;
static DWORD fault_eflag;
static DWORD sp;
static DWORD fault_sp;
static DWORD data0;
static DWORD data1;
static DWORD data2;
static DWORD sdata4;
static DWORD sdata8;
 
asm (" movl %%esp,%0\n\t":"=r"(sp));
asm (" movl -8(%%ebp),%0\n\t":"=r"(sdata8));
asm (" movl -4(%%ebp),%0\n\t":"=r"(sdata4));
asm (" movl 0(%%ebp),%0\n\t":"=r"(data0));
asm (" movl 4(%%ebp),%0\n\t":"=r"(error_code));
asm (" movl 8(%%ebp),%0\n\t":"=r"(fault_ip));
asm (" movl 12(%%ebp),%0\n\t":"=r"(fault_cs));
asm (" movl 16(%%ebp),%0\n\t":"=r"(fault_eflag));
asm (" movl 20(%%ebp),%0\n\t":"=r"(fault_sp));
asm (" movl 24(%%ebp),%0\n\t":"=r"(data1));
message(":F -8: %lx:", sdata8);
message(":F -4: %lx:", sdata4);
message(":F 0: %lx:", data0);
message(":F ec/4: %lx:", error_code);
message(":F ip/8: %lx:", fault_ip);
message(":F cs/12 : %lx:", fault_cs);
message(":F eflag/16 : %lx:", fault_eflag);
message(":F sp/20 : %lx:", fault_sp);
message(":F 24 : %lx:", data1);
 
}
 
 
void ll_exc_hook(int i)
{
static char *exc_mess[] = {
 
static char *exc_mess[] = {
"#Division by 0",
"#Debug fault",
"#NMI detected",
85,7 → 122,9
extern DWORD *smain;
#endif
 
/* Math error! FPU has to be acknowledgded */
 
/* Math error! FPU has to be acknowledgded */
if (code == '2') ll_out(0x0F0,0);
message("Exception %d occurred\n", i);
103,6 → 142,11
}
#endif
/* halt(); */
 
message("Actual stack : %x\n",get_SP());
 
dump_TSS(get_TR());
 
ll_abort(exc_code[i]);
}