summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/interpro_arbga.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/interpro_arbga.h')
-rw-r--r--src/mame/machine/interpro_arbga.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/mame/machine/interpro_arbga.h b/src/mame/machine/interpro_arbga.h
new file mode 100644
index 00000000000..749601c83fc
--- /dev/null
+++ b/src/mame/machine/interpro_arbga.h
@@ -0,0 +1,90 @@
+// license:BSD-3-Clause
+// copyright-holders:Patrick Mackinlay
+
+#ifndef MAME_MACHINE_INTERPRO_ARBGA_H
+#define MAME_MACHINE_INTERPRO_ARBGA_H
+
+#pragma once
+
+class interpro_arbga_device : public device_t
+{
+public:
+ interpro_arbga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual DECLARE_ADDRESS_MAP(map, 32);
+
+ DECLARE_READ32_MEMBER(sdepid_r) const { return m_sdepid; }
+ DECLARE_WRITE32_MEMBER(sdepid_w) { m_sdepid = data; }
+
+ enum arbsnap_mask
+ {
+ ARBSNAP_GRANT = 0x0000000f,
+ ARBSNAP_HOGLOCK = 0x000000f0
+ };
+ DECLARE_READ32_MEMBER(arbsnap_r) const { return m_arbsnap; }
+ DECLARE_WRITE32_MEMBER(arbsnap_w) { m_arbsnap = data; }
+ DECLARE_READ32_MEMBER(fixprils_r) const { return m_fixprils; }
+ DECLARE_WRITE32_MEMBER(fixprils_w) { m_fixprils = data; }
+ DECLARE_READ32_MEMBER(fixprims_r) const { return m_fixprims; }
+ DECLARE_WRITE32_MEMBER(fixprims_w) { m_fixprims = data; }
+
+ DECLARE_READ32_MEMBER(sysdomls_r) const { return m_sysdomls; }
+ DECLARE_WRITE32_MEMBER(sysdomls_w) { m_sysdomls = data; }
+ DECLARE_READ32_MEMBER(sysdomms_r) const { return m_sysdomms; }
+ DECLARE_WRITE32_MEMBER(sysdomms_w) { m_sysdomms = data; }
+
+ enum tctrl_mask
+ {
+ TCTRL_UNUSED = 0x00000007,
+ TCTRL_ENNEM = 0x00000008,
+ TCTRL_ENHOG = 0x00000010
+ };
+ DECLARE_READ32_MEMBER(tctrl_r) const { return m_tctrl; }
+ DECLARE_WRITE32_MEMBER(tctrl_w) { m_tctrl = data; }
+
+ DECLARE_READ8_MEMBER(inem_r) const { return m_inem; }
+ DECLARE_WRITE8_MEMBER(inem_w) { m_inem = data; }
+ DECLARE_READ8_MEMBER(enem_r) const { return m_enem; }
+ DECLARE_WRITE8_MEMBER(enem_w) { m_enem = data; }
+
+ DECLARE_READ32_MEMBER(hog_r) const { return m_hog; }
+ DECLARE_WRITE32_MEMBER(hog_w) { m_hog = data; }
+ DECLARE_READ32_MEMBER(lock_r) const { return m_lock; }
+ DECLARE_WRITE32_MEMBER(lock_w) { m_lock = data; }
+ DECLARE_READ32_MEMBER(lockprs_r) const { return m_lockprs; }
+ DECLARE_WRITE32_MEMBER(lockprs_w) { m_lockprs = data; }
+
+ DECLARE_READ32_MEMBER(hiblockls_r) const { return m_hiblockls; }
+ DECLARE_WRITE32_MEMBER(hiblockls_w) { m_hiblockls = data; }
+ DECLARE_READ32_MEMBER(hiblockms_r) const { return m_hiblockms; }
+ DECLARE_WRITE32_MEMBER(hiblockms_w) { m_hiblockms = data; }
+
+ DECLARE_READ32_MEMBER(arbrev_r) const { return m_arbrev; }
+ DECLARE_WRITE32_MEMBER(arbrev_w) { m_arbrev = data; }
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+private:
+ u32 m_sdepid;
+ u32 m_arbsnap;
+ u32 m_fixprils;
+ u32 m_fixprims;
+ u32 m_sysdomls;
+ u32 m_sysdomms;
+ u32 m_tctrl;
+ u8 m_inem;
+ u8 m_enem;
+ u32 m_hog;
+ u32 m_lock;
+ u32 m_lockprs;
+ u32 m_hiblockls;
+ u32 m_hiblockms;
+ u32 m_arbrev;
+};
+
+// device type definition
+extern const device_type INTERPRO_ARBGA;
+
+#endif // MAME_MACHINE_INTERPRO_ARBGA_H