--- np2/i386c/ia32/ia32.c 2003/12/08 00:55:31 1.1 +++ np2/i386c/ia32/ia32.c 2004/01/23 14:33:26 1.6 @@ -1,4 +1,4 @@ -/* $Id: ia32.c,v 1.1 2003/12/08 00:55:31 yui Exp $ */ +/* $Id: ia32.c,v 1.6 2004/01/23 14:33:26 monaka Exp $ */ /* * Copyright (c) 2002-2003 NONAKA Kimihiro @@ -32,14 +32,8 @@ #include "ia32.mcr" -CPU_REGS cpu_regs; -CPU_SYSREGS cpu_sysregs; -CPU_STAT cpu_stat; -CPU_INST cpu_inst; -CPU_INST cpu_inst_default; I386CORE i386core; -// #if defined(USE_ASM) BYTE iflags[] = { 0x44, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, @@ -74,7 +68,6 @@ BYTE iflags[] = { 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, }; -// #endif /* USE_ASM */ BYTE *reg8_b20[0x100]; BYTE *reg8_b53[0x100]; @@ -89,10 +82,8 @@ ia32_init(void) { int i; - memset(&cpu_regs, 0, sizeof(cpu_regs)); - memset(&cpu_sysregs, 0, sizeof(cpu_sysregs)); - memset(&cpu_stat, 0, sizeof(cpu_stat)); - memset(&cpu_inst_default, 0, sizeof(cpu_inst_default)); + memset(&i386core.s, 0, sizeof(i386core.s)); + CPU_STATSAVE.cpu_inst_default.seg_base = (DWORD)-1; CPU_EDX = (CPU_FAMILY << 8) | (CPU_MODEL << 4) | CPU_STEPPING; CPU_EFLAG = 2; @@ -135,7 +126,7 @@ ia32_init(void) } resolve_init(); -#if defined(SUPPORT_TLB) +#if defined(IA32_SUPPORT_TLB) tlb_init(); #endif #ifdef USE_FPU @@ -153,13 +144,18 @@ change_pm(BOOL onoff) if (onoff) { for (i = 0; i < CPU_SEGREG_NUM; i++) { - CPU_STAT_SREG(i).valid = TRUE; + CPU_STAT_SREG(i).valid = 1; CPU_STAT_SREG(i).dpl = 0; } VERBOSE(("Entering to Protected-Mode...")); } else { VERBOSE(("Leaveing from Protected-Mode...")); } + + CPU_INST_OP32 = CPU_INST_AS32 = + CPU_STATSAVE.cpu_inst_default.op_32 = + CPU_STATSAVE.cpu_inst_default.as_32 = 0; + CPU_STAT_SS32 = 0; CPU_STAT_CPL = 0; CPU_STAT_PM = onoff; } @@ -171,7 +167,7 @@ change_pg(BOOL onoff) if (onoff) { VERBOSE(("Entering to Paging-Mode...")); } else { - VERBOSE(("Leaveing from Pagin-Mode...")); + VERBOSE(("Leaveing from Paging-Mode...")); } CPU_STAT_PAGING = onoff; } @@ -179,21 +175,22 @@ change_pg(BOOL onoff) void FASTCALL change_vm(BOOL onoff) { - descriptor_t sd; int i; + CPU_STAT_VM86 = onoff; if (onoff) { for (i = 0; i < CPU_SEGREG_NUM; i++) { - sd.u.seg.limit = 0xffff; - CPU_SET_SEGDESC_DEFAULT(&sd, i, CPU_REGS_SREG(i)); - sd.dpl = 3; - CPU_STAT_SREG(i) = sd; + CPU_SET_SEGREG(i, CPU_REGS_SREG(i)); } + CPU_INST_OP32 = CPU_INST_AS32 = + CPU_STATSAVE.cpu_inst_default.op_32 = + CPU_STATSAVE.cpu_inst_default.as_32 = 0; + CPU_STAT_SS32 = 0; + CPU_STAT_CPL = 3; VERBOSE(("Entering to Virtual-8086-Mode...")); } else { VERBOSE(("Leaveing from Virtual-8086-Mode...")); } - CPU_STAT_VM86 = onoff; } /*