h8: RTE does not block interrupts

This commit is contained in:
hap 2024-02-14 02:16:02 +01:00
parent f8345b810d
commit df28e783e1
3 changed files with 12 additions and 4 deletions

View File

@ -536,6 +536,13 @@ void h8_device::prefetch_done_noirq()
m_inst_state = m_IR[0] = m_PIR;
}
void h8_device::prefetch_done_notrace()
{
prefetch_done();
if (m_inst_state == STATE_TRACE)
m_inst_state = m_IR[0] = m_PIR;
}
void h8_device::prefetch_done_noirq_notrace()
{
m_inst_state = m_IR[0] = m_PIR;

View File

@ -200,6 +200,7 @@ protected:
void prefetch_switch(uint32_t pc, uint16_t ir) { m_NPC = pc & 0xffffff; m_PC = pc+2; m_PIR = ir; }
void prefetch_done();
void prefetch_done_noirq();
void prefetch_done_notrace();
void prefetch_done_noirq_notrace();
void illegal();
u16 adc_default(int adc);

View File

@ -20,9 +20,9 @@ macro prefetch_noirq
prefetch_start
prefetch_done_noirq();
macro prefetch_noirq_notrace
macro prefetch_notrace
prefetch_start
prefetch_done_noirq_notrace();
prefetch_done_notrace();
macro bxx_any %cond
prefetch_start
@ -1576,7 +1576,7 @@ macro jsr32 %opc %spreg
internal(1);
m_PC = m_TMP2;
update_irq_filter();
prefetch_noirq_notrace
prefetch_notrace
5670 ffff 0 rte - - h
fetch
@ -1598,7 +1598,7 @@ macro jsr32 %opc %spreg
internal(1);
m_PC = m_TMP2;
update_irq_filter();
prefetch_noirq_notrace
prefetch_notrace
5700 ffcf 0 trapa imm2 - h
internal(1);