--- np2/i386c/ia32/interface.c 2003/12/25 19:21:17 1.3 +++ np2/i386c/ia32/interface.c 2004/01/13 16:34:19 1.6 @@ -1,4 +1,4 @@ -/* $Id: interface.c,v 1.3 2003/12/25 19:21:17 yui Exp $ */ +/* $Id: interface.c,v 1.6 2004/01/13 16:34:19 monaka Exp $ */ /* * Copyright (c) 2002-2003 NONAKA Kimihiro @@ -55,9 +55,12 @@ ia32reset(void) CPU_LDTR_LIMIT = 0xffff; CPU_TR_LIMIT = 0xffff; - CPU_SET_SEGREG(CPU_CS_INDEX, 0xffff); +// CPU_SET_SEGREG(CPU_ES_INDEX, 0x0000); + CPU_SET_SEGREG(CPU_CS_INDEX, 0xf000); +// CPU_SET_SEGREG(CPU_SS_INDEX, 0x0000); +// CPU_SET_SEGREG(CPU_DS_INDEX, 0x0000); + CPU_EIP = 0xfff0; CPU_ADRSMASK = 0xfffff; -// CPU_EIP = 0; } void @@ -198,14 +201,21 @@ ia32_interrupt(BYTE vect) void ia32_panic(const char *str, ...) { + extern char *cpu_reg2str(void); char buf[1024]; va_list ap; + va_start(ap, str); vsnprintf(buf, sizeof(buf), str, ap); va_end(ap); strcat(buf, "\n"); +#if defined(_WIN32) + MessageBox(NULL, buf, "ia32_panic", MB_OK); +#endif + fprintf(stderr, buf); + fprintf(stderr, cpu_reg2str()); __ASSERT(0); exit(1); }