summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/dspp/dspp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/dspp/dspp.cpp')
-rw-r--r--src/devices/cpu/dspp/dspp.cpp89
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];