diff options
Diffstat (limited to 'src/devices/cpu/dspp/dspp.cpp')
-rw-r--r-- | src/devices/cpu/dspp/dspp.cpp | 89 |
1 files changed, 41 insertions, 48 deletions
diff --git a/src/devices/cpu/dspp/dspp.cpp b/src/devices/cpu/dspp/dspp.cpp index dded3f028f9..9679de25b96 100644 --- a/src/devices/cpu/dspp/dspp.cpp +++ b/src/devices/cpu/dspp/dspp.cpp @@ -14,8 +14,6 @@ #include "dsppfe.h" #include "dsppdasm.h" -#include "debugger.h" - //************************************************************************** // CONSTANTS @@ -87,44 +85,44 @@ DEFINE_DEVICE_TYPE(DSPP, dspp_device, "dspp", "3DO DSPP") // dspp_device - constructor //------------------------------------------------- -dspp_device::dspp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : dspp_device(mconfig, DSPP, tag, owner, clock, address_map_constructor(FUNC(dspp_device::code_map), this), - address_map_constructor(FUNC(dspp_device::data_map), this)) -{ -} - -dspp_device::dspp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor code_map_ctor, address_map_constructor data_map_ctor) - : cpu_device(mconfig, type, tag, owner, clock), - m_int_handler(*this), - m_dma_read_handler(*this), - m_dma_write_handler(*this), - m_code_config("code", ENDIANNESS_BIG, 16, 10, -1, code_map_ctor), - m_data_config("data", ENDIANNESS_BIG, 16, 10, -1, data_map_ctor), - m_output_fifo_start(0), - m_output_fifo_count(0), - m_dspx_reset(0), - m_dspx_int_enable(0), - m_dspx_channel_enable(0), - m_dspx_channel_complete(0), - m_dspx_channel_direction(0), - m_dspx_channel_8bit(0), - m_dspx_channel_sqxd(0), - m_dspx_shadow_current_addr(0), - m_dspx_shadow_current_count(0), - m_dspx_shadow_next_addr(0), - m_dspx_shadow_next_count(0), - m_dspx_dmanext_int(0), - m_dspx_dmanext_enable(0), - m_dspx_consumed_int(0), - m_dspx_consumed_enable(0), - m_dspx_underover_int(0), - m_dspx_underover_enable(0), - m_dspx_audio_time(0), - m_dspx_audio_duration(0), - m_cache(CACHE_SIZE), - m_drcuml(nullptr), - m_drcfe(nullptr), - m_drcoptions(0) +dspp_device::dspp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + dspp_device(mconfig, DSPP, tag, owner, clock, address_map_constructor(FUNC(dspp_device::code_map), this), + address_map_constructor(FUNC(dspp_device::data_map), this)) +{ +} + +dspp_device::dspp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor code_map_ctor, address_map_constructor data_map_ctor) : + cpu_device(mconfig, type, tag, owner, clock), + m_int_handler(*this), + m_dma_read_handler(*this, 0), + m_dma_write_handler(*this), + m_code_config("code", ENDIANNESS_BIG, 16, 10, -1, code_map_ctor), + m_data_config("data", ENDIANNESS_BIG, 16, 10, -1, data_map_ctor), + m_output_fifo_start(0), + m_output_fifo_count(0), + m_dspx_reset(0), + m_dspx_int_enable(0), + m_dspx_channel_enable(0), + m_dspx_channel_complete(0), + m_dspx_channel_direction(0), + m_dspx_channel_8bit(0), + m_dspx_channel_sqxd(0), + m_dspx_shadow_current_addr(0), + m_dspx_shadow_current_count(0), + m_dspx_shadow_next_addr(0), + m_dspx_shadow_next_count(0), + m_dspx_dmanext_int(0), + m_dspx_dmanext_enable(0), + m_dspx_consumed_int(0), + m_dspx_consumed_enable(0), + m_dspx_underover_int(0), + m_dspx_underover_enable(0), + m_dspx_audio_time(0), + m_dspx_audio_duration(0), + m_cache(CACHE_SIZE), + m_drcuml(nullptr), + m_drcfe(nullptr), + m_drcoptions(0) { #if 0 memset(m_core->m_stack, 0, sizeof(m_core->m_stack)); @@ -152,11 +150,6 @@ void dspp_device::device_start() m_drcfe = std::make_unique<dspp_frontend>(this, COMPILE_BACKWARDS_BYTES, COMPILE_FORWARDS_BYTES, SINGLE_INSTRUCTION_MODE ? 1 : COMPILE_MAX_SEQUENCE); - // Resolve our callbacks - m_int_handler.resolve_safe(); - m_dma_read_handler.resolve_safe(0); - m_dma_write_handler.resolve_safe(); - // Get our address spaces space(AS_PROGRAM).cache(m_code_cache); space(AS_PROGRAM).specific(m_code); @@ -169,7 +162,6 @@ void dspp_device::device_start() #if 0 state_add(STATE_GENFLAGS, "GENFLAGS", m_core->m_flags).callimport().callexport().formatstr("%6s").noshow(); state_add(STATE_GENPCBASE, "GENPCBASE", m_ppc).noshow(); - state_add(STATE_GENSP, "GENSP", m_src2val[REGBASE + 31]).noshow(); state_add(DSPP_PS, "PS", m_core->m_flagsio).callimport().callexport(); for (int regnum = 0; regnum < 32; regnum++) @@ -613,10 +605,11 @@ inline void dspp_device::set_rbase(uint32_t base, uint32_t addr) case 0: m_core->m_rbase[0] = addr; m_core->m_rbase[1] = addr + 4 - base; + [[fallthrough]]; // Intentional fall-through case 8: m_core->m_rbase[2] = addr + 8 - base; - + [[fallthrough]]; case 12: m_core->m_rbase[3] = addr + 12 - base; break; @@ -1587,7 +1580,7 @@ void dspp_device::update_fifo_dma() while (mask != 0) { - uint32_t channel = 31 - count_leading_zeros(mask); + uint32_t channel = 31 - count_leading_zeros_32(mask); const fifo_dma & dma = m_fifo_dma[channel]; |