diff options
author | 2020-05-03 23:13:09 -0400 | |
---|---|---|
committer | 2020-05-03 23:13:47 -0400 | |
commit | e59af6d5e89f02a2a626adc95b244924403b98f9 (patch) | |
tree | 07e47529777bfdfd41b02ccdff0b62a20fa22638 /src/devices/cpu/i86/i286.cpp | |
parent | 16550d533fdcc4d563e5ba06cb146436a1af7b58 (diff) |
i86, i286: Update m_prev_ip (and therefore CURPC) after taking interrupt (nw)
Diffstat (limited to 'src/devices/cpu/i86/i286.cpp')
-rw-r--r-- | src/devices/cpu/i86/i286.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/devices/cpu/i86/i286.cpp b/src/devices/cpu/i86/i286.cpp index 76e142a7645..c307e23901b 100644 --- a/src/devices/cpu/i86/i286.cpp +++ b/src/devices/cpu/i86/i286.cpp @@ -769,7 +769,7 @@ void i80286_cpu_device::code_descriptor(uint16_t selector, uint16_t offset, int m_limit[CS] = LIMIT(desc); m_base[CS] = BASE(desc); m_rights[CS] = RIGHTS(desc); - m_ip = offset; + m_prev_ip = m_ip = offset; } else { // systemdescriptor @@ -862,7 +862,7 @@ void i80286_cpu_device::code_descriptor(uint16_t selector, uint16_t offset, int } else { - m_ip = offset; + m_prev_ip = m_ip = offset; m_sregs[CS]=selector; m_base[CS]=selector<<4; m_rights[CS]=0x93; @@ -979,7 +979,7 @@ void i80286_cpu_device::interrupt_descriptor(int number, int hwint, int error) m_limit[CS] = LIMIT(gatedesc); m_base[CS] = BASE(gatedesc); m_rights[CS] = RIGHTS(gatedesc); - m_ip = GATEOFF(desc); + m_prev_ip = m_ip = GATEOFF(desc); m_TF = 0; m_NT = 0; if(GATE(RIGHTS(desc)) == INTGATE) |