diff options
Diffstat (limited to 'src/mame/machine/sgi.h')
-rw-r--r-- | src/mame/machine/sgi.h | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/mame/machine/sgi.h b/src/mame/machine/sgi.h index c66c81f5c32..634c286ba2d 100644 --- a/src/mame/machine/sgi.h +++ b/src/mame/machine/sgi.h @@ -13,12 +13,17 @@ #pragma once +#include "machine/eepromser.h" + class sgi_mc_device : public device_t { public: - sgi_mc_device(const machine_config &mconfig, const char *tag, device_t *owner) + template <typename T, typename U> + sgi_mc_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag, U &&eeprom_tag) : sgi_mc_device(mconfig, tag, owner, (uint32_t)0) { + m_maincpu.set_tag(std::forward<T>(cpu_tag)); + m_eeprom.set_tag(std::forward<U>(eeprom_tag)); } sgi_mc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -26,6 +31,8 @@ public: DECLARE_READ32_MEMBER(read); DECLARE_WRITE32_MEMBER(write); + void set_cpu_buserr(uint32_t address); + protected: // device-level overrides virtual void device_start() override; @@ -35,10 +42,12 @@ protected: static const device_timer_id TIMER_RPSS = 0; private: - // internal state + required_device<cpu_device> m_maincpu; + required_device<eeprom_serial_93cxx_device> m_eeprom; + emu_timer *m_rpss_timer; - uint32_t m_cpu_control0; - uint32_t m_cpu_control1; + + uint32_t m_cpu_control[2]; uint32_t m_watchdog; uint32_t m_sys_id; uint32_t m_rpss_divider; @@ -47,8 +56,7 @@ private: uint32_t m_gio64_arb_param; uint32_t m_arb_cpu_time; uint32_t m_arb_burst_time; - uint32_t m_mem_config0; - uint32_t m_mem_config1; + uint32_t m_mem_config[2]; uint32_t m_cpu_mem_access_config; uint32_t m_gio_mem_access_config; uint32_t m_cpu_error_addr; @@ -78,14 +86,11 @@ private: uint32_t m_dma_mode; uint32_t m_dma_count; uint32_t m_dma_running; + uint32_t m_eeprom_ctrl; uint32_t m_semaphore[16]; int m_rpss_divide_counter; int m_rpss_divide_count; uint8_t m_rpss_increment; - - void update(); - TIMER_CALLBACK_MEMBER(update_callback); - void timer_init(); }; DECLARE_DEVICE_TYPE(SGI_MC, sgi_mc_device) |