|
|
| version 1.1, 2003/12/08 00:55:31 | version 1.6, 2004/01/23 14:33:26 |
|---|---|
| Line 32 | Line 32 |
| #include "ia32.mcr" | #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; | I386CORE i386core; |
| // #if defined(USE_ASM) | |
| BYTE iflags[] = { | BYTE iflags[] = { |
| 0x44, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, | 0x44, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, |
| 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, | 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, |
| Line 74 BYTE iflags[] = { | Line 68 BYTE iflags[] = { |
| 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, | 0x84, 0x80, 0x80, 0x84, 0x80, 0x84, 0x84, 0x80, |
| 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, | 0x80, 0x84, 0x84, 0x80, 0x84, 0x80, 0x80, 0x84, |
| }; | }; |
| // #endif /* USE_ASM */ | |
| BYTE *reg8_b20[0x100]; | BYTE *reg8_b20[0x100]; |
| BYTE *reg8_b53[0x100]; | BYTE *reg8_b53[0x100]; |
| Line 89 ia32_init(void) | Line 82 ia32_init(void) |
| { | { |
| int i; | int i; |
| memset(&cpu_regs, 0, sizeof(cpu_regs)); | memset(&i386core.s, 0, sizeof(i386core.s)); |
| memset(&cpu_sysregs, 0, sizeof(cpu_sysregs)); | CPU_STATSAVE.cpu_inst_default.seg_base = (DWORD)-1; |
| memset(&cpu_stat, 0, sizeof(cpu_stat)); | |
| memset(&cpu_inst_default, 0, sizeof(cpu_inst_default)); | |
| CPU_EDX = (CPU_FAMILY << 8) | (CPU_MODEL << 4) | CPU_STEPPING; | CPU_EDX = (CPU_FAMILY << 8) | (CPU_MODEL << 4) | CPU_STEPPING; |
| CPU_EFLAG = 2; | CPU_EFLAG = 2; |
| Line 135 ia32_init(void) | Line 126 ia32_init(void) |
| } | } |
| resolve_init(); | resolve_init(); |
| #if defined(SUPPORT_TLB) | #if defined(IA32_SUPPORT_TLB) |
| tlb_init(); | tlb_init(); |
| #endif | #endif |
| #ifdef USE_FPU | #ifdef USE_FPU |
| Line 153 change_pm(BOOL onoff) | Line 144 change_pm(BOOL onoff) |
| if (onoff) { | if (onoff) { |
| for (i = 0; i < CPU_SEGREG_NUM; i++) { | 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; | CPU_STAT_SREG(i).dpl = 0; |
| } | } |
| VERBOSE(("Entering to Protected-Mode...")); | VERBOSE(("Entering to Protected-Mode...")); |
| } else { | } else { |
| VERBOSE(("Leaveing from Protected-Mode...")); | 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_CPL = 0; |
| CPU_STAT_PM = onoff; | CPU_STAT_PM = onoff; |
| } | } |
| Line 171 change_pg(BOOL onoff) | Line 167 change_pg(BOOL onoff) |
| if (onoff) { | if (onoff) { |
| VERBOSE(("Entering to Paging-Mode...")); | VERBOSE(("Entering to Paging-Mode...")); |
| } else { | } else { |
| VERBOSE(("Leaveing from Pagin-Mode...")); | VERBOSE(("Leaveing from Paging-Mode...")); |
| } | } |
| CPU_STAT_PAGING = onoff; | CPU_STAT_PAGING = onoff; |
| } | } |
| Line 179 change_pg(BOOL onoff) | Line 175 change_pg(BOOL onoff) |
| void FASTCALL | void FASTCALL |
| change_vm(BOOL onoff) | change_vm(BOOL onoff) |
| { | { |
| descriptor_t sd; | |
| int i; | int i; |
| CPU_STAT_VM86 = onoff; | |
| if (onoff) { | if (onoff) { |
| for (i = 0; i < CPU_SEGREG_NUM; i++) { | for (i = 0; i < CPU_SEGREG_NUM; i++) { |
| sd.u.seg.limit = 0xffff; | CPU_SET_SEGREG(i, CPU_REGS_SREG(i)); |
| CPU_SET_SEGDESC_DEFAULT(&sd, i, CPU_REGS_SREG(i)); | |
| sd.dpl = 3; | |
| CPU_STAT_SREG(i) = sd; | |
| } | } |
| 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...")); | VERBOSE(("Entering to Virtual-8086-Mode...")); |
| } else { | } else { |
| VERBOSE(("Leaveing from Virtual-8086-Mode...")); | VERBOSE(("Leaveing from Virtual-8086-Mode...")); |
| } | } |
| CPU_STAT_VM86 = onoff; | |
| } | } |
| /* | /* |