mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
i86, i286: Update m_prev_ip (and therefore CURPC) after taking interrupt (nw)
This commit is contained in:
parent
16550d533f
commit
e59af6d5e8
@ -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)
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user