diff options
author | 2023-04-21 15:05:14 +0700 | |
---|---|---|
committer | 2023-04-21 15:05:14 +0700 | |
commit | 73ff969a730be77fbfc0b9bcd2fcbfd78418274b (patch) | |
tree | 33bc50a77a2949e548b990e8cee1c67ead3effa5 /src/devices/cpu/m88000/m88000.h | |
parent | a2a46381cbdd4f55635b49631ef95c4bd2f7caec (diff) |
m88000: improve exception handling
* fix instruction access exception logic
* update data unit control registers on data access exceptions
* implement user-space memory instruction logic
* add support for debugger address translation
* add support for debugger privilege hook
Diffstat (limited to 'src/devices/cpu/m88000/m88000.h')
-rw-r--r-- | src/devices/cpu/m88000/m88000.h | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/devices/cpu/m88000/m88000.h b/src/devices/cpu/m88000/m88000.h index 668d3fe5c62..2588f821885 100644 --- a/src/devices/cpu/m88000/m88000.h +++ b/src/devices/cpu/m88000/m88000.h @@ -24,28 +24,29 @@ public: template <typename T> void set_cmmu_i(T &&tag) { m_cmmu_i.set_tag(std::forward<T>(tag)); } protected: - // device-level overrides + // device_t implementation virtual void device_start() override; virtual void device_reset() override; - // device_execute_interface overrides + // device_execute_interface implementation virtual void execute_run() override; virtual void execute_set_input(int inputnum, int state) override; - // device_disasm_interface overrides + // device_disasm_interface implementation virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; - // device_memory_interface overrides + // device_memory_interface implementation virtual space_config_vector memory_space_config() const override; + virtual bool memory_translate(int spacenum, int intention, offs_t &address, address_space *&target_space) override; void execute(u32 const inst); void exception(unsigned vector, bool const trap = false); // memory helpers - bool fetch(u32 address, u32 &inst); - template <typename T> void ld(u32 address, unsigned const reg); - template <typename T> bool st(u32 address, unsigned const reg); - template <typename T> void xmem(u32 address, unsigned const reg); + void fetch(u32 &address, u32 &inst); + template <typename T, bool Usr = false> void ld(u32 address, unsigned const reg); + template <typename T, bool Usr = false> void st(u32 address, unsigned const reg); + template <typename T, bool Usr = false> void xmem(u32 address, unsigned const reg); // integer helpers void set_cr(unsigned const cr, u32 const data); |