Merge pull request #2573 from Cacodemon345/x86-drfix
x86: mov r, DR6 now always writes bits 4-11 and bits 16-31 as 1
This commit is contained in:
@@ -196,6 +196,7 @@ exec386(int cycs)
|
|||||||
enter_smm_check(0);
|
enter_smm_check(0);
|
||||||
else if (trap) {
|
else if (trap) {
|
||||||
flags_rebuild();
|
flags_rebuild();
|
||||||
|
dr[6] |= 0x4000;
|
||||||
if (msw&1)
|
if (msw&1)
|
||||||
pmodeint(1,0);
|
pmodeint(1,0);
|
||||||
else {
|
else {
|
||||||
|
@@ -404,6 +404,7 @@ exec386_dynarec_int(void)
|
|||||||
oldcs = CS;
|
oldcs = CS;
|
||||||
#endif
|
#endif
|
||||||
cpu_state.oldpc = cpu_state.pc;
|
cpu_state.oldpc = cpu_state.pc;
|
||||||
|
dr[6] |= 0x4000;
|
||||||
x86_int(1);
|
x86_int(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -91,7 +91,7 @@ static int opMOV_r_DRx_a16(uint32_t fetchdat)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
fetch_ea_16(fetchdat);
|
fetch_ea_16(fetchdat);
|
||||||
cpu_state.regs[cpu_rm].l = dr[cpu_reg];
|
cpu_state.regs[cpu_rm].l = dr[cpu_reg] | (cpu_reg == 6 ? 0xffff0ff0u : 0);
|
||||||
CLOCK_CYCLES(6);
|
CLOCK_CYCLES(6);
|
||||||
PREFETCH_RUN(6, 2, rmdat, 0,0,0,0, 0);
|
PREFETCH_RUN(6, 2, rmdat, 0,0,0,0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -104,7 +104,7 @@ static int opMOV_r_DRx_a32(uint32_t fetchdat)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
fetch_ea_32(fetchdat);
|
fetch_ea_32(fetchdat);
|
||||||
cpu_state.regs[cpu_rm].l = dr[cpu_reg];
|
cpu_state.regs[cpu_rm].l = dr[cpu_reg] | (cpu_reg == 6 ? 0xffff0ff0u : 0);
|
||||||
CLOCK_CYCLES(6);
|
CLOCK_CYCLES(6);
|
||||||
PREFETCH_RUN(6, 2, rmdat, 0,0,0,0, 1);
|
PREFETCH_RUN(6, 2, rmdat, 0,0,0,0, 1);
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user