--- np2/i386c/ia32/exception.c 2004/02/19 03:04:01 1.11 +++ np2/i386c/ia32/exception.c 2004/02/20 16:09:04 1.12 @@ -1,4 +1,4 @@ -/* $Id: exception.c,v 1.11 2004/02/19 03:04:01 yui Exp $ */ +/* $Id: exception.c,v 1.12 2004/02/20 16:09:04 monaka Exp $ */ /* * Copyright (c) 2003 NONAKA Kimihiro @@ -210,16 +210,16 @@ exception(int num, int error_code) * D : ゲートのサイズ.0 = 16 bit, 1 = 32 bit */ -static void interrupt_task_gate(descriptor_t *gdp, int softintp, int errorp, int error_code); -static void interrupt_intr_or_trap(descriptor_t *gdp, int softintp, int errorp, int error_code); +static void interrupt_task_gate(descriptor_t *gd, int softintp, int errorp, int error_code); +static void interrupt_intr_or_trap(descriptor_t *gd, int softintp, int errorp, int error_code); void interrupt(int num, int softintp, int errorp, int error_code) { descriptor_t gd; - DWORD idt_idx; - DWORD new_ip; - WORD new_cs; + UINT idt_idx; + UINT32 new_ip; + UINT16 new_cs; VERBOSE(("interrupt: num = 0x%02x, softintp = %s, errorp = %s, error_code = %08x", num, softintp ? "on" : "off", errorp ? "on" : "off", error_code)); @@ -327,7 +327,7 @@ interrupt(int num, int softintp, int err } static void -interrupt_task_gate(descriptor_t *gdp, int softintp, int errorp, int error_code) +interrupt_task_gate(descriptor_t *gd, int softintp, int errorp, int error_code) { selector_t task_sel; int rv; @@ -336,9 +336,9 @@ interrupt_task_gate(descriptor_t *gdp, i (void)softintp; - rv = parse_selector(&task_sel, gdp->u.gate.selector); + rv = parse_selector(&task_sel, gd->u.gate.selector); if (rv < 0 || task_sel.ldt) { - VERBOSE(("interrupt: parse_selector (selector = %04x, rv = %d, %cDT)", gdp->u.gate.selector, rv, task_sel.ldt ? 'L' : 'G')); + VERBOSE(("interrupt: parse_selector (selector = %04x, rv = %d, %cDT)", gd->u.gate.selector, rv, task_sel.ldt ? 'L' : 'G')); EXCEPTION(TS_EXCEPTION, task_sel.idx); } @@ -372,27 +372,27 @@ interrupt_task_gate(descriptor_t *gdp, i } static void -interrupt_intr_or_trap(descriptor_t *gdp, int softintp, int errorp, int error_code) +interrupt_intr_or_trap(descriptor_t *gd, int softintp, int errorp, int error_code) { selector_t cs_sel, ss_sel; - DWORD old_flags; - DWORD new_flags; - DWORD mask; - DWORD stacksize; - DWORD sp; - DWORD new_ip, new_sp; - DWORD old_ip, old_sp; - WORD old_cs, old_ss, new_ss; + UINT stacksize; + UINT32 old_flags; + UINT32 new_flags; + UINT32 mask; + UINT32 sp; + UINT32 new_ip, new_sp; + UINT32 old_ip, old_sp; + UINT16 old_cs, old_ss, new_ss; int rv; - new_ip = gdp->u.gate.offset; + new_ip = gd->u.gate.offset; old_ss = CPU_SS; old_cs = CPU_CS; old_ip = CPU_EIP; old_sp = CPU_ESP; new_flags = old_flags = REAL_EFLAGREG; - switch (gdp->type) { + switch (gd->type) { case CPU_SYSDESC_TYPE_INTR_16: case CPU_SYSDESC_TYPE_INTR_32: VERBOSE(("interrupt: INTERRUPT-GATE")); @@ -411,9 +411,9 @@ interrupt_intr_or_trap(descriptor_t *gdp new_flags &= ~(T_FLAG|RF_FLAG|NT_FLAG|VM_FLAG); mask |= T_FLAG|RF_FLAG|NT_FLAG|VM_FLAG; - rv = parse_selector(&cs_sel, gdp->u.gate.selector); + rv = parse_selector(&cs_sel, gd->u.gate.selector); if (rv < 0) { - VERBOSE(("interrupt: parse_selector (selector = %04x, rv = %d)", gdp->u.gate.selector, rv)); + VERBOSE(("interrupt: parse_selector (selector = %04x, rv = %d)", gd->u.gate.selector, rv)); EXCEPTION(GP_EXCEPTION, cs_sel.idx + !softintp); } @@ -454,7 +454,7 @@ interrupt_intr_or_trap(descriptor_t *gdp VERBOSE(("interrupt: INTERRUPT-FROM-VIRTUAL-8086-MODE")); stacksize = errorp ? 20 : 18; } - switch (gdp->type) { + switch (gd->type) { case CPU_SYSDESC_TYPE_INTR_32: case CPU_SYSDESC_TYPE_TRAP_32: stacksize *= 2; @@ -514,7 +514,7 @@ interrupt_intr_or_trap(descriptor_t *gdp load_cs(cs_sel.selector, &cs_sel.desc, cs_sel.desc.dpl); SET_EIP(new_ip); - switch (gdp->type) { + switch (gd->type) { case CPU_SYSDESC_TYPE_INTR_32: case CPU_SYSDESC_TYPE_TRAP_32: if (CPU_STAT_VM86) { @@ -571,7 +571,7 @@ interrupt_intr_or_trap(descriptor_t *gdp VERBOSE(("interrupt: INTRA-PRIVILEGE-LEVEL-INTERRUPT")); stacksize = errorp ? 8 : 6; - switch (gdp->type) { + switch (gd->type) { case CPU_SYSDESC_TYPE_INTR_32: case CPU_SYSDESC_TYPE_TRAP_32: stacksize *= 2; @@ -594,7 +594,7 @@ interrupt_intr_or_trap(descriptor_t *gdp load_cs(cs_sel.selector, &cs_sel.desc, CPU_STAT_CPL); SET_EIP(new_ip); - switch (gdp->type) { + switch (gd->type) { case CPU_SYSDESC_TYPE_INTR_32: case CPU_SYSDESC_TYPE_TRAP_32: PUSH0_32(old_flags);