Move flags and eflags variables into cpu_struct.
This commit is contained in:
parent
c1565eb42f
commit
a4d3aa1912
25 changed files with 1013 additions and 958 deletions
|
|
@ -86,8 +86,8 @@ static int opF6_a16(uint32_t fetchdat)
|
|||
case 0x20: /*MUL AL,b*/
|
||||
AX = AL * dst;
|
||||
flags_rebuild();
|
||||
if (AH) flags |= (C_FLAG | V_FLAG);
|
||||
else flags &= ~(C_FLAG | V_FLAG);
|
||||
if (AH) cpu_state.flags |= (C_FLAG | V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG | V_FLAG);
|
||||
CLOCK_CYCLES(13);
|
||||
PREFETCH_RUN(13, 2, rmdat, (cpu_mod == 3) ? 0:1,0,0,0, 0);
|
||||
break;
|
||||
|
|
@ -95,8 +95,8 @@ static int opF6_a16(uint32_t fetchdat)
|
|||
tempws = (int)((int8_t)AL) * (int)((int8_t)dst);
|
||||
AX = tempws & 0xffff;
|
||||
flags_rebuild();
|
||||
if (((int16_t)AX >> 7) != 0 && ((int16_t)AX >> 7) != -1) flags |= (C_FLAG | V_FLAG);
|
||||
else flags &= ~(C_FLAG | V_FLAG);
|
||||
if (((int16_t)AX >> 7) != 0 && ((int16_t)AX >> 7) != -1) cpu_state.flags |= (C_FLAG | V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG | V_FLAG);
|
||||
CLOCK_CYCLES(14);
|
||||
PREFETCH_RUN(14, 2, rmdat, (cpu_mod == 3) ? 0:1,0,0,0, 0);
|
||||
break;
|
||||
|
|
@ -110,8 +110,8 @@ static int opF6_a16(uint32_t fetchdat)
|
|||
if (!cpu_iscyrix)
|
||||
{
|
||||
flags_rebuild();
|
||||
flags |= 0x8D5; /*Not a Cyrix*/
|
||||
flags &= ~1;
|
||||
cpu_state.flags |= 0x8D5; /*Not a Cyrix*/
|
||||
cpu_state.flags &= ~1;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -133,8 +133,8 @@ static int opF6_a16(uint32_t fetchdat)
|
|||
if (!cpu_iscyrix)
|
||||
{
|
||||
flags_rebuild();
|
||||
flags|=0x8D5; /*Not a Cyrix*/
|
||||
flags &= ~1;
|
||||
cpu_state.flags|=0x8D5; /*Not a Cyrix*/
|
||||
cpu_state.flags &= ~1;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -192,8 +192,8 @@ static int opF6_a32(uint32_t fetchdat)
|
|||
case 0x20: /*MUL AL,b*/
|
||||
AX = AL * dst;
|
||||
flags_rebuild();
|
||||
if (AH) flags |= (C_FLAG | V_FLAG);
|
||||
else flags &= ~(C_FLAG | V_FLAG);
|
||||
if (AH) cpu_state.flags |= (C_FLAG | V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG | V_FLAG);
|
||||
CLOCK_CYCLES(13);
|
||||
PREFETCH_RUN(13, 2, rmdat, (cpu_mod == 3) ? 0:1,0,0,0, 1);
|
||||
break;
|
||||
|
|
@ -201,8 +201,8 @@ static int opF6_a32(uint32_t fetchdat)
|
|||
tempws = (int)((int8_t)AL) * (int)((int8_t)dst);
|
||||
AX = tempws & 0xffff;
|
||||
flags_rebuild();
|
||||
if (((int16_t)AX >> 7) != 0 && ((int16_t)AX >> 7) != -1) flags |= (C_FLAG | V_FLAG);
|
||||
else flags &= ~(C_FLAG | V_FLAG);
|
||||
if (((int16_t)AX >> 7) != 0 && ((int16_t)AX >> 7) != -1) cpu_state.flags |= (C_FLAG | V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG | V_FLAG);
|
||||
CLOCK_CYCLES(14);
|
||||
PREFETCH_RUN(14, 2, rmdat, (cpu_mod == 3) ? 0:1,0,0,0, 1);
|
||||
break;
|
||||
|
|
@ -216,8 +216,8 @@ static int opF6_a32(uint32_t fetchdat)
|
|||
if (!cpu_iscyrix)
|
||||
{
|
||||
flags_rebuild();
|
||||
flags |= 0x8D5; /*Not a Cyrix*/
|
||||
flags &= ~1;
|
||||
cpu_state.flags |= 0x8D5; /*Not a Cyrix*/
|
||||
cpu_state.flags &= ~1;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -239,8 +239,8 @@ static int opF6_a32(uint32_t fetchdat)
|
|||
if (!cpu_iscyrix)
|
||||
{
|
||||
flags_rebuild();
|
||||
flags|=0x8D5; /*Not a Cyrix*/
|
||||
flags &= ~1;
|
||||
cpu_state.flags |= 0x8D5; /*Not a Cyrix*/
|
||||
cpu_state.flags &= ~1;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -303,8 +303,8 @@ static int opF7_w_a16(uint32_t fetchdat)
|
|||
AX = templ & 0xFFFF;
|
||||
DX = templ >> 16;
|
||||
flags_rebuild();
|
||||
if (DX) flags |= (C_FLAG | V_FLAG);
|
||||
else flags &= ~(C_FLAG | V_FLAG);
|
||||
if (DX) cpu_state.flags |= (C_FLAG | V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG | V_FLAG);
|
||||
CLOCK_CYCLES(21);
|
||||
PREFETCH_RUN(21, 2, rmdat, (cpu_mod == 3) ? 0:1,0,0,0, 0);
|
||||
break;
|
||||
|
|
@ -313,8 +313,8 @@ static int opF7_w_a16(uint32_t fetchdat)
|
|||
AX = templ & 0xFFFF;
|
||||
DX = templ >> 16;
|
||||
flags_rebuild();
|
||||
if (((int32_t)templ >> 15) != 0 && ((int32_t)templ >> 15) != -1) flags |= (C_FLAG | V_FLAG);
|
||||
else flags &= ~(C_FLAG | V_FLAG);
|
||||
if (((int32_t)templ >> 15) != 0 && ((int32_t)templ >> 15) != -1) cpu_state.flags |= (C_FLAG | V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG | V_FLAG);
|
||||
CLOCK_CYCLES(22);
|
||||
PREFETCH_RUN(22, 2, rmdat, (cpu_mod == 3) ? 0:1,0,0,0, 0);
|
||||
break;
|
||||
|
|
@ -403,8 +403,8 @@ static int opF7_w_a32(uint32_t fetchdat)
|
|||
AX = templ & 0xFFFF;
|
||||
DX = templ >> 16;
|
||||
flags_rebuild();
|
||||
if (DX) flags |= (C_FLAG | V_FLAG);
|
||||
else flags &= ~(C_FLAG | V_FLAG);
|
||||
if (DX) cpu_state.flags |= (C_FLAG | V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG | V_FLAG);
|
||||
CLOCK_CYCLES(21);
|
||||
PREFETCH_RUN(21, 2, rmdat, (cpu_mod == 3) ? 0:1,0,0,0, 1);
|
||||
break;
|
||||
|
|
@ -413,8 +413,8 @@ static int opF7_w_a32(uint32_t fetchdat)
|
|||
AX = templ & 0xFFFF;
|
||||
DX = templ >> 16;
|
||||
flags_rebuild();
|
||||
if (((int32_t)templ >> 15) != 0 && ((int32_t)templ >> 15) != -1) flags |= (C_FLAG | V_FLAG);
|
||||
else flags &= ~(C_FLAG | V_FLAG);
|
||||
if (((int32_t)templ >> 15) != 0 && ((int32_t)templ >> 15) != -1) cpu_state.flags |= (C_FLAG | V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG | V_FLAG);
|
||||
CLOCK_CYCLES(22);
|
||||
PREFETCH_RUN(22, 2, rmdat, (cpu_mod == 3) ? 0:1,0,0,0, 1);
|
||||
break;
|
||||
|
|
@ -503,8 +503,8 @@ static int opF7_l_a16(uint32_t fetchdat)
|
|||
EAX = temp64 & 0xffffffff;
|
||||
EDX = temp64 >> 32;
|
||||
flags_rebuild();
|
||||
if (EDX) flags |= (C_FLAG|V_FLAG);
|
||||
else flags &= ~(C_FLAG|V_FLAG);
|
||||
if (EDX) cpu_state.flags |= (C_FLAG|V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG|V_FLAG);
|
||||
CLOCK_CYCLES(21);
|
||||
PREFETCH_RUN(21, 2, rmdat, 0,(cpu_mod == 3) ? 0:1,0,0, 0);
|
||||
break;
|
||||
|
|
@ -513,8 +513,8 @@ static int opF7_l_a16(uint32_t fetchdat)
|
|||
EAX = temp64 & 0xffffffff;
|
||||
EDX = temp64 >> 32;
|
||||
flags_rebuild();
|
||||
if (((int64_t)temp64 >> 31) != 0 && ((int64_t)temp64 >> 31) != -1) flags |= (C_FLAG | V_FLAG);
|
||||
else flags &= ~(C_FLAG | V_FLAG);
|
||||
if (((int64_t)temp64 >> 31) != 0 && ((int64_t)temp64 >> 31) != -1) cpu_state.flags |= (C_FLAG | V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG | V_FLAG);
|
||||
CLOCK_CYCLES(38);
|
||||
PREFETCH_RUN(38, 2, rmdat, 0,(cpu_mod == 3) ? 0:1,0,0, 0);
|
||||
break;
|
||||
|
|
@ -579,8 +579,8 @@ static int opF7_l_a32(uint32_t fetchdat)
|
|||
EAX = temp64 & 0xffffffff;
|
||||
EDX = temp64 >> 32;
|
||||
flags_rebuild();
|
||||
if (EDX) flags |= (C_FLAG|V_FLAG);
|
||||
else flags &= ~(C_FLAG|V_FLAG);
|
||||
if (EDX) cpu_state.flags |= (C_FLAG|V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG|V_FLAG);
|
||||
CLOCK_CYCLES(21);
|
||||
PREFETCH_RUN(21, 2, rmdat, 0,(cpu_mod == 3) ? 0:1,0,0, 1);
|
||||
break;
|
||||
|
|
@ -589,8 +589,8 @@ static int opF7_l_a32(uint32_t fetchdat)
|
|||
EAX = temp64 & 0xffffffff;
|
||||
EDX = temp64 >> 32;
|
||||
flags_rebuild();
|
||||
if (((int64_t)temp64 >> 31) != 0 && ((int64_t)temp64 >> 31) != -1) flags |= (C_FLAG | V_FLAG);
|
||||
else flags &= ~(C_FLAG | V_FLAG);
|
||||
if (((int64_t)temp64 >> 31) != 0 && ((int64_t)temp64 >> 31) != -1) cpu_state.flags |= (C_FLAG | V_FLAG);
|
||||
else cpu_state.flags &= ~(C_FLAG | V_FLAG);
|
||||
CLOCK_CYCLES(38);
|
||||
PREFETCH_RUN(38, 2, rmdat, 0,(cpu_mod == 3) ? 0:1,0,0, 1);
|
||||
break;
|
||||
|
|
@ -619,12 +619,12 @@ static int opF7_l_a32(uint32_t fetchdat)
|
|||
|
||||
static int opHLT(uint32_t fetchdat)
|
||||
{
|
||||
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
|
||||
if ((CPL || (cpu_state.eflags&VM_FLAG)) && (cr0&1))
|
||||
{
|
||||
x86gpf(NULL,0);
|
||||
return 1;
|
||||
}
|
||||
if (!((flags&I_FLAG) && pic_intpending))
|
||||
if (!((cpu_state.flags & I_FLAG) && pic_intpending))
|
||||
{
|
||||
CLOCK_CYCLES_ALWAYS(100);
|
||||
cpu_state.pc--;
|
||||
|
|
@ -739,7 +739,7 @@ static int opBOUND_l_a32(uint32_t fetchdat)
|
|||
|
||||
static int opCLTS(uint32_t fetchdat)
|
||||
{
|
||||
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
|
||||
if ((CPL || (cpu_state.eflags&VM_FLAG)) && (cr0&1))
|
||||
{
|
||||
pclog("Can't CLTS\n");
|
||||
x86gpf(NULL,0);
|
||||
|
|
@ -782,7 +782,7 @@ static int opLOADALL(uint32_t fetchdat)
|
|||
return 1;
|
||||
}
|
||||
msw = (msw & 1) | readmemw(0, 0x806);
|
||||
flags = (readmemw(0, 0x818) & 0xffd5) | 2;
|
||||
cpu_state.flags = (readmemw(0, 0x818) & 0xffd5) | 2;
|
||||
flags_extract();
|
||||
tr.seg = readmemw(0, 0x816);
|
||||
cpu_state.pc = readmemw(0, 0x81A);
|
||||
|
|
@ -890,8 +890,8 @@ static int opLOADALL386(uint32_t fetchdat)
|
|||
uint32_t la_addr = es + EDI;
|
||||
|
||||
cr0 = readmeml(0, la_addr);
|
||||
flags = readmemw(0, la_addr + 4);
|
||||
eflags = readmemw(0, la_addr + 6);
|
||||
cpu_state.flags = readmemw(0, la_addr + 4);
|
||||
cpu_state.eflags = readmemw(0, la_addr + 6);
|
||||
flags_extract();
|
||||
cpu_state.pc = readmeml(0, la_addr + 8);
|
||||
EDI = readmeml(0, la_addr + 0xC);
|
||||
|
|
|
|||
Loading…
Reference in a new issue