diff options
Diffstat (limited to 'src/devices/machine/ns32382.h')
-rw-r--r-- | src/devices/machine/ns32382.h | 66 |
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 |