summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/ns32382.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/ns32382.h')
-rw-r--r--src/devices/machine/ns32382.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/devices/machine/ns32382.h b/src/devices/machine/ns32382.h
new file mode 100644
index 00000000000..a60c6d27f5f
--- /dev/null
+++ b/src/devices/machine/ns32382.h
@@ -0,0 +1,66 @@
+// license:BSD-3-Clause
+// copyright-holders:Patrick Mackinlay
+
+#ifndef MAME_MACHINE_NS32382_H
+#define MAME_MACHINE_NS32382_H
+
+#pragma once
+
+#include "cpu/ns32000/common.h"
+
+class ns32382_device
+ : public device_t
+ , public ns32000_mmu_interface
+ , public ns32000_fast_slave_interface
+{
+public:
+ ns32382_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
+
+ // ns32000_slave_interface implementation
+ virtual void state_add(device_state_interface &parent, int &index) override;
+
+ // ns32000_fast_slave_interface implementation
+ virtual u32 fast_status(int *icount = nullptr) override;
+ virtual u32 fast_read() override;
+ virtual void fast_write(u32 data) override;
+
+ // ns32000_mmu_interface implementation
+ virtual translate_result translate(address_space &space, unsigned st, u32 &address, bool user, bool write, bool pfs = false, bool debug = false) override;
+
+protected:
+ // device_t implementation
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ void execute();
+
+private:
+ // registers
+ u32 m_bar; // breakpoint address register
+ u32 m_bdr; // breakpoint data register
+ u32 m_bear; // bus error address register
+ u32 m_bmr; // breakpoint mask register
+ u32 m_mcr; // memory management control register
+ u32 m_msr; // memory management status register
+ u32 m_ptb[2]; // page table base registers
+ u32 m_tear; // translation exception address register
+
+ // operating state
+ u16 m_opword;
+ struct operand
+ {
+ u32 expected;
+ u32 issued;
+ u64 value;
+ }
+ m_op[3];
+ u16 m_status;
+
+ // implementation state
+ u32 m_state;
+ u32 m_tcy;
+};
+
+DECLARE_DEVICE_TYPE(NS32382, ns32382_device)
+
+#endif // MAME_MACHINE_NS32382_H