diff options
-rw-r--r-- | src/mame/video/sgi_ge5.cpp | 13 | ||||
-rw-r--r-- | src/mame/video/sgi_ge5.h | 1 | ||||
-rw-r--r-- | src/mame/video/sgi_gr1.cpp | 3 |
3 files changed, 9 insertions, 8 deletions
diff --git a/src/mame/video/sgi_ge5.cpp b/src/mame/video/sgi_ge5.cpp index 370913560bf..21c2dbac2e6 100644 --- a/src/mame/video/sgi_ge5.cpp +++ b/src/mame/video/sgi_ge5.cpp @@ -194,8 +194,7 @@ void sgi_ge5_device::device_reset() set_int(false); - m_state = DECODE; - suspend(SUSPEND_REASON_HALT, false); + m_state = STALL; } device_memory_interface::space_config_vector sgi_ge5_device::memory_space_config() const @@ -218,6 +217,10 @@ void sgi_ge5_device::execute_run() { switch (m_state) { + case STALL: + m_icount = 0; + break; + case DECODE: debugger_instruction_hook(m_pc); @@ -263,7 +266,6 @@ void sgi_ge5_device::execute_run() // fifo read stall m_state = READ; m_icount = 0; - suspend(SUSPEND_REASON_TRIGGER, false); } else m_bus = m_fifo_read(); @@ -378,7 +380,7 @@ void sgi_ge5_device::execute_run() break; case 0xc: // stall LOG("stall\n"); - suspend(SUSPEND_REASON_HALT, false); + m_state = STALL; m_icount = 0; break; case 0xd: // call less than @@ -586,7 +588,7 @@ void sgi_ge5_device::command_w(offs_t offset, u16 data, u16 mem_mask) { case 0x00: // clear stall LOG("clear stall\n"); - resume(SUSPEND_REASON_HALT); + m_state = DECODE; debugger_exception_hook(0); break; @@ -601,6 +603,7 @@ void sgi_ge5_device::command_w(offs_t offset, u16 data, u16 mem_mask) break; } } + template u32 sgi_ge5_device::code_r<false>(offs_t offset); template u32 sgi_ge5_device::code_r<true>(offs_t offset); template void sgi_ge5_device::code_w<false>(offs_t offset, u32 data, u32 mem_mask); diff --git a/src/mame/video/sgi_ge5.h b/src/mame/video/sgi_ge5.h index b44a78ca00c..c1c8f75b93c 100644 --- a/src/mame/video/sgi_ge5.h +++ b/src/mame/video/sgi_ge5.h @@ -90,6 +90,7 @@ private: int m_icount; enum ge5_state : unsigned { + STALL, DECODE, // fetch and decode instruction, update pointers READ, // read source CONTROL, // flow control diff --git a/src/mame/video/sgi_gr1.cpp b/src/mame/video/sgi_gr1.cpp index a17b8239c91..b0f421a95f6 100644 --- a/src/mame/video/sgi_gr1.cpp +++ b/src/mame/video/sgi_gr1.cpp @@ -324,9 +324,6 @@ void sgi_gr1_device::fifo_w(offs_t offset, u32 data, u32 mem_mask) m_dr3 &= ~DR3_FIFOFULL; m_int_fifo_cb(ASSERT_LINE); } - - if (m_ge->suspended()) - m_ge->resume(SUSPEND_REASON_TRIGGER); } void sgi_gr1_device::reset_w(int state) |