summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m88000/m88000.h
diff options
context:
space:
mode:
author Patrick Mackinlay <pmackinlay@hotmail.com>2023-04-21 15:05:14 +0700
committer Patrick Mackinlay <pmackinlay@hotmail.com>2023-04-21 15:05:14 +0700
commit73ff969a730be77fbfc0b9bcd2fcbfd78418274b (patch)
tree33bc50a77a2949e548b990e8cee1c67ead3effa5 /src/devices/cpu/m88000/m88000.h
parenta2a46381cbdd4f55635b49631ef95c4bd2f7caec (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.h17
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);