386 Interpreter: Check for debug breakpoint before segment limit and presence checking.
This commit is contained in:
@@ -264,11 +264,7 @@ exec386_2386(int32_t cycs)
|
|||||||
ol = opcode_length[fetchdat & 0xff];
|
ol = opcode_length[fetchdat & 0xff];
|
||||||
if ((ol == 3) && opcode_has_modrm[fetchdat & 0xff] && (((fetchdat >> 14) & 0x03) == 0x03))
|
if ((ol == 3) && opcode_has_modrm[fetchdat & 0xff] && (((fetchdat >> 14) & 0x03) == 0x03))
|
||||||
ol = 2;
|
ol = 2;
|
||||||
if (cpu_16bitbus) {
|
|
||||||
CHECK_READ_CS(MIN(ol, 2));
|
|
||||||
} else {
|
|
||||||
CHECK_READ_CS(MIN(ol, 4));
|
|
||||||
}
|
|
||||||
if (is386)
|
if (is386)
|
||||||
ins_fetch_fault = cpu_386_check_instruction_fault();
|
ins_fetch_fault = cpu_386_check_instruction_fault();
|
||||||
|
|
||||||
@@ -276,6 +272,10 @@ exec386_2386(int32_t cycs)
|
|||||||
if (ins_fetch_fault) {
|
if (ins_fetch_fault) {
|
||||||
ins_fetch_fault = 0;
|
ins_fetch_fault = 0;
|
||||||
cpu_state.abrt = 1;
|
cpu_state.abrt = 1;
|
||||||
|
} else if (cpu_16bitbus) {
|
||||||
|
CHECK_READ_CS(MIN(ol, 2));
|
||||||
|
} else {
|
||||||
|
CHECK_READ_CS(MIN(ol, 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cpu_state.abrt) {
|
if (!cpu_state.abrt) {
|
||||||
|
|||||||
Reference in New Issue
Block a user