Improved STI fix.
This commit is contained in:
@@ -349,6 +349,12 @@ exec386_dynarec_int(void)
|
||||
if (((cs + cpu_state.pc) >> 12) != pccache)
|
||||
CPU_BLOCK_END();
|
||||
|
||||
if (cpu_end_block_after_ins) {
|
||||
cpu_end_block_after_ins--;
|
||||
if (!cpu_end_block_after_ins)
|
||||
CPU_BLOCK_END();
|
||||
}
|
||||
|
||||
if (cpu_state.abrt)
|
||||
CPU_BLOCK_END();
|
||||
if (smi_line)
|
||||
@@ -357,14 +363,8 @@ exec386_dynarec_int(void)
|
||||
CPU_BLOCK_END();
|
||||
else if (nmi && nmi_enable && nmi_mask)
|
||||
CPU_BLOCK_END();
|
||||
else if ((cpu_state.flags & I_FLAG) && pic.int_pending)
|
||||
else if ((cpu_state.flags & I_FLAG) && pic.int_pending && !cpu_end_block_after_ins)
|
||||
CPU_BLOCK_END();
|
||||
|
||||
if (cpu_end_block_after_ins) {
|
||||
cpu_end_block_after_ins--;
|
||||
if (!cpu_end_block_after_ins)
|
||||
CPU_BLOCK_END();
|
||||
}
|
||||
}
|
||||
|
||||
if (trap) {
|
||||
@@ -585,21 +585,21 @@ exec386_dynarec_dyn(void)
|
||||
#endif
|
||||
CPU_BLOCK_END();
|
||||
|
||||
if (cpu_end_block_after_ins) {
|
||||
cpu_end_block_after_ins--;
|
||||
if (!cpu_end_block_after_ins)
|
||||
CPU_BLOCK_END();
|
||||
}
|
||||
|
||||
if (smi_line)
|
||||
CPU_BLOCK_END();
|
||||
else if (cpu_state.flags & T_FLAG)
|
||||
CPU_BLOCK_END();
|
||||
else if (nmi && nmi_enable && nmi_mask)
|
||||
CPU_BLOCK_END();
|
||||
else if ((cpu_state.flags & I_FLAG) && pic.int_pending)
|
||||
else if ((cpu_state.flags & I_FLAG) && pic.int_pending && !cpu_end_block_after_ins)
|
||||
CPU_BLOCK_END();
|
||||
|
||||
if (cpu_end_block_after_ins) {
|
||||
cpu_end_block_after_ins--;
|
||||
if (!cpu_end_block_after_ins)
|
||||
CPU_BLOCK_END();
|
||||
}
|
||||
|
||||
if (cpu_state.abrt) {
|
||||
if (!(cpu_state.abrt & ABRT_EXPECTED))
|
||||
codegen_block_remove();
|
||||
@@ -683,7 +683,7 @@ exec386_dynarec_dyn(void)
|
||||
CPU_BLOCK_END();
|
||||
else if (nmi && nmi_enable && nmi_mask)
|
||||
CPU_BLOCK_END();
|
||||
else if ((cpu_state.flags & I_FLAG) && pic.int_pending)
|
||||
else if ((cpu_state.flags & I_FLAG) && pic.int_pending && !cpu_end_block_after_ins)
|
||||
CPU_BLOCK_END();
|
||||
|
||||
if (cpu_end_block_after_ins) {
|
||||
|
||||
Reference in New Issue
Block a user