i86, i286: Update m_prev_ip (and therefore CURPC) after taking interrupt (nw)

This commit is contained in:
AJR 2020-05-03 23:13:09 -04:00
parent 16550d533f
commit e59af6d5e8
2 changed files with 4 additions and 4 deletions

View File

@ -769,7 +769,7 @@ void i80286_cpu_device::code_descriptor(uint16_t selector, uint16_t offset, int
m_limit[CS] = LIMIT(desc); m_limit[CS] = LIMIT(desc);
m_base[CS] = BASE(desc); m_base[CS] = BASE(desc);
m_rights[CS] = RIGHTS(desc); m_rights[CS] = RIGHTS(desc);
m_ip = offset; m_prev_ip = m_ip = offset;
} }
else else
{ // systemdescriptor { // systemdescriptor
@ -862,7 +862,7 @@ void i80286_cpu_device::code_descriptor(uint16_t selector, uint16_t offset, int
} }
else else
{ {
m_ip = offset; m_prev_ip = m_ip = offset;
m_sregs[CS]=selector; m_sregs[CS]=selector;
m_base[CS]=selector<<4; m_base[CS]=selector<<4;
m_rights[CS]=0x93; 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_limit[CS] = LIMIT(gatedesc);
m_base[CS] = BASE(gatedesc); m_base[CS] = BASE(gatedesc);
m_rights[CS] = RIGHTS(gatedesc); m_rights[CS] = RIGHTS(gatedesc);
m_ip = GATEOFF(desc); m_prev_ip = m_ip = GATEOFF(desc);
m_TF = 0; m_TF = 0;
m_NT = 0; m_NT = 0;
if(GATE(RIGHTS(desc)) == INTGATE) if(GATE(RIGHTS(desc)) == INTGATE)

View File

@ -595,7 +595,7 @@ void i8086_common_cpu_device::interrupt(int int_num, int trap)
PUSH(m_sregs[CS]); PUSH(m_sregs[CS]);
PUSH(m_ip); PUSH(m_ip);
m_ip = dest_off; m_prev_ip = m_ip = dest_off;
m_sregs[CS] = dest_seg; m_sregs[CS] = dest_seg;
} }