diff options
Diffstat (limited to 'src/devices/cpu/i386/i386.cpp')
-rw-r--r-- | src/devices/cpu/i386/i386.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp index 62d3e17dabb..bd99c7f456b 100644 --- a/src/devices/cpu/i386/i386.cpp +++ b/src/devices/cpu/i386/i386.cpp @@ -165,14 +165,14 @@ MODRM_TABLE i386_MODRM_table[256]; /*************************************************************************/ -uint32_t i386_device::i386_translate(int segment, uint32_t ip, int rwn) +uint32_t i386_device::i386_translate(int segment, uint32_t ip, int rwn, int size) { // TODO: segment limit access size, execution permission, handle exception thrown from exception handler if (PROTECTED_MODE && !V8086_MODE && (rwn != -1)) { if (!(m_sreg[segment].valid)) FAULT_THROW((segment == SS) ? FAULT_SS : FAULT_GP, 0); - if (i386_limit_check(segment, ip)) + if (i386_limit_check(segment, ip, size)) FAULT_THROW((segment == SS) ? FAULT_SS : FAULT_GP, 0); if ((rwn == 0) && ((m_sreg[segment].flags & 8) && !(m_sreg[segment].flags & 2))) FAULT_THROW(FAULT_GP, 0); @@ -2778,6 +2778,7 @@ void i386_device::execute_run() if (m_halted) { + debugger_wait_hook(); m_tsc += cycles; m_cycles = 0; return; |