diff options
Diffstat (limited to 'src/devices/cpu/adsp2100/adsp2100.h')
-rw-r--r-- | src/devices/cpu/adsp2100/adsp2100.h | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/src/devices/cpu/adsp2100/adsp2100.h b/src/devices/cpu/adsp2100/adsp2100.h index 9910a7ac2b3..ca45c8756c8 100644 --- a/src/devices/cpu/adsp2100/adsp2100.h +++ b/src/devices/cpu/adsp2100/adsp2100.h @@ -153,6 +153,8 @@ enum ADSP2100_FL0, ADSP2100_FL1, ADSP2100_FL2, + ADSP2100_PMOVLAY, + ADSP2100_DMOVLAY, ADSP2100_AX0_SEC, ADSP2100_AX1_SEC, ADSP2100_AY0_SEC, @@ -194,7 +196,7 @@ public: // public interfaces void load_boot_data(uint8_t *srcdata, uint32_t *dstdata); // Returns base address for circular dag - uint32_t get_ibase(int index) { return m_base[index]; }; + uint32_t get_ibase(int index) { return m_base[index]; } protected: enum @@ -213,6 +215,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; + virtual void device_post_load() override; // device_execute_interface overrides virtual uint32_t execute_min_cycles() const noexcept override; @@ -253,17 +256,17 @@ protected: inline uint32_t data_read_dag2(uint32_t op); inline void pgm_write_dag2(uint32_t op, int32_t val); inline uint32_t pgm_read_dag2(uint32_t op); - void alu_op_ar(int op); - void alu_op_ar_const(int op); - void alu_op_af(int op); - void alu_op_af_const(int op); - void alu_op_none(int op); - void mac_op_mr(int op); - void mac_op_mr_xop(int op); - void mac_op_mf(int op); - void mac_op_mf_xop(int op); - void shift_op(int op); - void shift_op_imm(int op); + void alu_op_ar(uint32_t op); + void alu_op_ar_const(uint32_t op); + void alu_op_af(uint32_t op); + void alu_op_af_const(uint32_t op); + void alu_op_none(uint32_t op); + void mac_op_mr(uint32_t op); + void mac_op_mr_xop(uint32_t op); + void mac_op_mf(uint32_t op); + void mac_op_mf_xop(uint32_t op); + void shift_op(uint32_t op); + void shift_op_imm(uint32_t op); // memory access inline uint16_t data_read(uint32_t addr); @@ -277,6 +280,7 @@ protected: // register read/write inline void update_i(int which); inline void update_l(int which); + inline void update_dmovlay(); inline void write_reg0(int regnum, int32_t val); inline void write_reg1(int regnum, int32_t val); inline void write_reg2(int regnum, int32_t val); @@ -382,6 +386,8 @@ protected: uint32_t m_lmask[8]; uint32_t m_base[8]; uint8_t m_px; + uint32_t m_pmovlay; // External Program Space overlay + uint32_t m_dmovlay; // External Data Space overlay // stacks uint32_t m_loop_stack[LOOP_STACK_DEPTH]; @@ -441,8 +447,8 @@ protected: devcb_read32 m_sport_rx_cb; // callback for serial receive devcb_write32 m_sport_tx_cb; // callback for serial transmit - devcb_write_line m_timer_fired_cb; // callback for timer fired - devcb_write_line m_dmovlay_cb; // callback for DMOVLAY instruction + devcb_write_line m_timer_fired_cb; // callback for timer fired + devcb_write32 m_dmovlay_cb; // callback for DMOVLAY instruction // debugging #if ADSP_TRACK_HOTSPOTS |