summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/i86/i286.cpp
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2024-12-21 19:45:20 +0100
committer hap <happppp@users.noreply.github.com>2024-12-21 19:45:32 +0100
commit27fa7dec6ec35b470500d2eee4e83e1a88d03878 (patch)
treef9f9a69f1038e5b002c30eeb3ed1cefa0d70fb0a /src/devices/cpu/i86/i286.cpp
parent780490d9ac651f0aafe6fe3e6c2ece9b7e800fbe (diff)
i86: don't clear physical irq pins state at reset
Diffstat (limited to 'src/devices/cpu/i86/i286.cpp')
-rw-r--r--src/devices/cpu/i86/i286.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/devices/cpu/i86/i286.cpp b/src/devices/cpu/i86/i286.cpp
index b18abd01f89..bfe4dc7c728 100644
--- a/src/devices/cpu/i86/i286.cpp
+++ b/src/devices/cpu/i86/i286.cpp
@@ -384,21 +384,16 @@ void i80286_cpu_device::execute_set_input(int inptnum, int state)
{
if(inptnum == INPUT_LINE_NMI)
{
- if(m_nmi_state == state)
- {
- return;
- }
- m_nmi_state = state;
- if(state != CLEAR_LINE)
+ if(!m_nmi_state && state)
{
m_pending_irq |= NMI_IRQ;
}
+ m_nmi_state = state;
}
else if(inptnum == INPUT_LINE_A20)
m_amask = m_a20_callback(state);
else
{
- m_irq_state = state;
if(state == CLEAR_LINE)
{
m_pending_irq &= ~INT_IRQ;
@@ -760,7 +755,7 @@ void i80286_cpu_device::code_descriptor(uint16_t selector, uint16_t offset, int
throw TRAP(FAULT_GP, IDXTBL(selector));
if(!PRES(r))
- throw TRAP(FAULT_NP, IDXTBL(selector)); // this order is important
+ throw TRAP(FAULT_NP, IDXTBL(selector)); // this order is important
if(offset > LIMIT(desc))
throw TRAP(FAULT_GP, 0);
@@ -774,7 +769,8 @@ void i80286_cpu_device::code_descriptor(uint16_t selector, uint16_t offset, int
m_prev_ip = m_ip = offset;
}
else
- { // systemdescriptor
+ {
+ // systemdescriptor
uint16_t gatesel = GATESEL(desc);
if(!gate)