summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/z8/z8.h
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2020-05-25 16:42:42 +0200
committer Olivier Galibert <galibert@pobox.com>2020-05-25 16:42:57 +0200
commit22513fb6fe281f5ccb75aaddb6417a12a66c313d (patch)
tree3cf84032cc6482d685a8dbb57e015bd17c7f7fdc /src/devices/cpu/z8/z8.h
parente42c2d2874cf9c1092c01ab5ce9ef997d465ce25 (diff)
emumem: A little more speedup. cache and specific change syntax, and are not pointers anymore [O. Galibert]
The last(?) two changes are: - Add a template parameter to everything (theoretically the address space width, in practice a level derived from it to keep as much compatibility between widths as possible) so that the shift size becomes a constant. - Change the syntax of declaring and initializing the caches and specifics so that they're embedded in the owner device. Solves lifetime issues and also removes one indirection (looking up the base dispatch pointer through the cache/specific pointer).
Diffstat (limited to 'src/devices/cpu/z8/z8.h')
-rw-r--r--src/devices/cpu/z8/z8.h20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h
index c21c9189359..22ad98513b5 100644
--- a/src/devices/cpu/z8/z8.h
+++ b/src/devices/cpu/z8/z8.h
@@ -74,10 +74,10 @@ private:
address_space_config m_data_config;
address_space_config m_register_config;
- address_space *m_program;
- memory_access_cache<0, 0, ENDIANNESS_BIG> *m_cache;
- address_space *m_data;
- address_space *m_regs;
+ memory_access<16, 0, 0, ENDIANNESS_BIG>::cache m_cache;
+ memory_access<16, 0, 0, ENDIANNESS_BIG>::specific m_program;
+ memory_access<16, 0, 0, ENDIANNESS_BIG>::specific m_data;
+ memory_access< 8, 0, 0, ENDIANNESS_BIG>::specific m_regs;
// callbacks
devcb_read8::array<4> m_input_cb;
@@ -191,9 +191,9 @@ private:
inline uint8_t fetch();
inline uint8_t fetch_opcode();
inline uint16_t fetch_word();
- inline uint8_t register_read(uint8_t offset) { return m_regs->read_byte(offset); }
+ inline uint8_t register_read(uint8_t offset) { return m_regs.read_byte(offset); }
inline uint16_t register_pair_read(uint8_t offset);
- inline void register_write(uint8_t offset, uint8_t data) { m_regs->write_byte(offset, data); }
+ inline void register_write(uint8_t offset, uint8_t data) { m_regs.write_byte(offset, data); }
inline void register_pair_write(uint8_t offset, uint16_t data);
inline uint8_t get_working_register(int offset) const;
inline uint8_t get_register(uint8_t offset) const;
@@ -205,10 +205,10 @@ private:
inline void set_flag(uint8_t flag, int state);
inline void clear(uint8_t dst);
inline void load(uint8_t dst, uint8_t src);
- inline void load_from_memory(address_space &space);
- inline void load_to_memory(address_space &space);
- inline void load_from_memory_autoinc(address_space &space);
- inline void load_to_memory_autoinc(address_space &space);
+ inline void load_from_memory(memory_access<16, 0, 0, ENDIANNESS_BIG>::specific &space);
+ inline void load_to_memory(memory_access<16, 0, 0, ENDIANNESS_BIG>::specific &space);
+ inline void load_from_memory_autoinc(memory_access<16, 0, 0, ENDIANNESS_BIG>::specific &space);
+ inline void load_to_memory_autoinc(memory_access<16, 0, 0, ENDIANNESS_BIG>::specific &space);
inline void pop(uint8_t dst);
inline void push(uint8_t src);
inline void add_carry(uint8_t dst, uint8_t src);