summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/adsp2100/adsp2100.c
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2008-12-19 06:46:17 +0000
committer Aaron Giles <aaron@aarongiles.com>2008-12-19 06:46:17 +0000
commit42c9aeff3943f2e6779d3d125fc014cd96d16d71 (patch)
tree8d681b294d01bf526dd808ed95337cab1b98d101 /src/emu/cpu/adsp2100/adsp2100.c
parent3fdd1d460aa7b752956237d5e9c8a9ebecf409b9 (diff)
Cleaned up device and sound interfaces to match the CPU
interfaces when handling strings. Namely, the generic get_info functions allocate a temporary string and the device in question copies its string to the target, instead of assigning a const char *. Updated all device and sound cores to operate this way. Added the concept of a cpu_state_table, which is supplied by the CPU cores and which describes all the register state accessible to the debugger and other subsystems. The format of the table is such that most data can be simply fetched from memory without the further involvement of the CPU core, including the display of common formats. Extensibility points are available for custom display and for importing/exporting the data to intermediate variables for more complicated scenarios. Updated the ADSP21xx, TMS340x0, and i86 cores to use this. Removed the old debugger register list, which was never used. Replaced it with using ordering from the cpu_state_table. Renamed REG_PC -> REG_GENPC, REG_SP -> REG_GENSP, and REG_PREVIOUSPC -> REG_GENPCBASE. Updated a few spots that were using these directly. Moved these definitions into the end of the register area rather than leaving them outside which put them in a weird range.
Diffstat (limited to 'src/emu/cpu/adsp2100/adsp2100.c')
-rw-r--r--src/emu/cpu/adsp2100/adsp2100.c532
1 files changed, 211 insertions, 321 deletions
diff --git a/src/emu/cpu/adsp2100/adsp2100.c b/src/emu/cpu/adsp2100/adsp2100.c
index 19c55fb6af3..41a60973e8d 100644
--- a/src/emu/cpu/adsp2100/adsp2100.c
+++ b/src/emu/cpu/adsp2100/adsp2100.c
@@ -211,6 +211,7 @@ typedef struct
UINT32 astat;
UINT32 sstat;
UINT32 mstat;
+ UINT32 mstat_prev;
UINT32 astat_clear;
UINT32 idle;
@@ -261,10 +262,11 @@ typedef struct
adsp21xx_tx_func sport_tx_callback;
adsp21xx_timer_func timer_fired;
- /* Memory spaces */
+ /* memory spaces */
const address_space *program;
const address_space *data;
const address_space *io;
+ cpu_state_table state;
} adsp2100_state;
@@ -283,6 +285,133 @@ static UINT32 pcbucket[0x4000];
#endif
+
+/***************************************************************************
+ CPU STATE DESCRIPTION
+***************************************************************************/
+
+#define ADSP21XX_STATE_ENTRY(_name, _format, _member, _datamask, _flags) \
+ CPU_STATE_ENTRY(ADSP2100_##_name, #_name, _format, adsp2100_state, _member, _datamask, ~0, _flags)
+
+#define ADSP21XX_STATE_ENTRY_MASK(_name, _format, _member, _datamask, _flags, _validmask) \
+ CPU_STATE_ENTRY(ADSP2100_##_name, #_name, _format, adsp2100_state, _member, _datamask, _validmask, _flags)
+
+static const cpu_state_entry state_array[] =
+{
+ ADSP21XX_STATE_ENTRY(PC, "%04X", pc, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(GENPC, "%04X", pc, 0xffff, CPUSTATE_NOSHOW)
+ ADSP21XX_STATE_ENTRY(GENPCBASE, "%04X", ppc, 0xffff, CPUSTATE_NOSHOW)
+
+ ADSP21XX_STATE_ENTRY(AX0, "%04X", core.ax0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(AX1, "%04X", core.ax1.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(AY0, "%04X", core.ay0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(AY1, "%04X", core.ay1.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(AR, "%04X", core.ar.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(AF, "%04X", core.af.u, 0xffff, 0)
+
+ ADSP21XX_STATE_ENTRY(MX0, "%04X", core.mx0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MX1, "%04X", core.mx1.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MY0, "%04X", core.my0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MY1, "%04X", core.my1.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MR0, "%04X", core.mr.mrx.mr0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MR1, "%04X", core.mr.mrx.mr1.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MR2, "%02X", core.mr.mrx.mr2.u, 0xff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(MF, "%04X", core.mf.u, 0xffff, 0)
+
+ ADSP21XX_STATE_ENTRY(SI, "%04X", core.si.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(SE, "%02X", core.se.u, 0xff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(SB, "%02X", core.sb.u, 0x1f, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(SR0, "%04X", core.sr.srx.sr0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(SR1, "%04X", core.sr.srx.sr0.u, 0xffff, 0)
+
+ ADSP21XX_STATE_ENTRY(AX0_SEC, "%04X", alt.ax0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(AX1_SEC, "%04X", alt.ax1.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(AY0_SEC, "%04X", alt.ay0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(AY1_SEC, "%04X", alt.ay1.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(AR_SEC, "%04X", alt.ar.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(AF_SEC, "%04X", alt.af.u, 0xffff, 0)
+
+ ADSP21XX_STATE_ENTRY(MX0_SEC, "%04X", alt.mx0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MX1_SEC, "%04X", alt.mx1.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MY0_SEC, "%04X", alt.my0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MY1_SEC, "%04X", alt.my1.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MR0_SEC, "%04X", alt.mr.mrx.mr0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MR1_SEC, "%04X", alt.mr.mrx.mr1.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(MR2_SEC, "%02X", alt.mr.mrx.mr2.u, 0xff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(MF_SEC, "%04X", alt.mf.u, 0xffff, 0)
+
+ ADSP21XX_STATE_ENTRY(SI_SEC, "%04X", alt.si.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(SE_SEC, "%02X", alt.se.u, 0xff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(SB_SEC, "%02X", alt.sb.u, 0x1f, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(SR0_SEC, "%04X", alt.sr.srx.sr0.u, 0xffff, 0)
+ ADSP21XX_STATE_ENTRY(SR1_SEC, "%04X", alt.sr.srx.sr0.u, 0xffff, 0)
+
+ ADSP21XX_STATE_ENTRY(I0, "%04X", i[0], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(I1, "%04X", i[1], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(I2, "%04X", i[2], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(I3, "%04X", i[3], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(I4, "%04X", i[4], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(I5, "%04X", i[5], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(I6, "%04X", i[6], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(I7, "%04X", i[7], 0x3fff, CPUSTATE_IMPORT)
+
+ ADSP21XX_STATE_ENTRY(L0, "%04X", l[0], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(L1, "%04X", l[1], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(L2, "%04X", l[2], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(L3, "%04X", l[3], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(L4, "%04X", l[4], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(L5, "%04X", l[5], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(L6, "%04X", l[6], 0x3fff, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(L7, "%04X", l[7], 0x3fff, CPUSTATE_IMPORT)
+
+ ADSP21XX_STATE_ENTRY(M0, "%04X", m[0], 0x3fff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(M1, "%04X", m[1], 0x3fff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(M2, "%04X", m[2], 0x3fff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(M3, "%04X", m[3], 0x3fff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(M4, "%04X", m[4], 0x3fff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(M5, "%04X", m[5], 0x3fff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(M6, "%04X", m[6], 0x3fff, CPUSTATE_IMPORT_SEXT)
+ ADSP21XX_STATE_ENTRY(M7, "%04X", m[7], 0x3fff, CPUSTATE_IMPORT_SEXT)
+
+ ADSP21XX_STATE_ENTRY(PX, "%02X", px, 0xff, 0)
+ ADSP21XX_STATE_ENTRY(CNTR, "%04X", cntr, 0x3fff, 0)
+ ADSP21XX_STATE_ENTRY(ASTAT, "%02X", astat, 0xff, 0)
+ ADSP21XX_STATE_ENTRY(SSTAT, "%02X", sstat, 0xff, 0)
+ ADSP21XX_STATE_ENTRY_MASK(MSTAT, "%01X", mstat, 0x0f, CPUSTATE_IMPORT, (1 << CHIP_TYPE_ADSP2100))
+ ADSP21XX_STATE_ENTRY_MASK(MSTAT, "%02X", mstat, 0x7f, CPUSTATE_IMPORT, ~(1 << CHIP_TYPE_ADSP2100))
+
+ ADSP21XX_STATE_ENTRY(PCSP, "%02X", pc_sp, 0xff, 0)
+ ADSP21XX_STATE_ENTRY(GENSP, "%02X", pc_sp, 0xff, CPUSTATE_NOSHOW)
+ ADSP21XX_STATE_ENTRY(CNTRSP, "%01X", cntr_sp, 0xf, 0)
+ ADSP21XX_STATE_ENTRY(STATSP, "%01X", stat_sp, 0xf, 0)
+ ADSP21XX_STATE_ENTRY(LOOPSP, "%01X", loop_sp, 0xf, 0)
+
+ ADSP21XX_STATE_ENTRY_MASK(IMASK, "%01X", imask, 0x00f, CPUSTATE_IMPORT, (1 << CHIP_TYPE_ADSP2100))
+ ADSP21XX_STATE_ENTRY_MASK(IMASK, "%02X", imask, 0x03f, CPUSTATE_IMPORT, ~((1 << CHIP_TYPE_ADSP2100) | (1 << CHIP_TYPE_ADSP2181)))
+ ADSP21XX_STATE_ENTRY_MASK(IMASK, "%03X", imask, 0x3ff, CPUSTATE_IMPORT, (1 << CHIP_TYPE_ADSP2181))
+ ADSP21XX_STATE_ENTRY(ICNTL, "%02X", icntl, 0x1f, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(IRQSTATE0, "%1u", irq_state[0], 0x1, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(IRQSTATE1, "%1u", irq_state[1], 0x1, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY(IRQSTATE2, "%1u", irq_state[2], 0x1, CPUSTATE_IMPORT)
+ ADSP21XX_STATE_ENTRY_MASK(IRQSTATE3, "%1u", irq_state[3], 0x1, CPUSTATE_IMPORT, (1 << CHIP_TYPE_ADSP2100))
+
+ ADSP21XX_STATE_ENTRY(FLAGIN, "%1u", flagin, 0x1, 0)
+ ADSP21XX_STATE_ENTRY(FLAGOUT, "%1u", flagout, 0x1, 0)
+ ADSP21XX_STATE_ENTRY(FL0, "%1u", fl0, 0x1, 0)
+ ADSP21XX_STATE_ENTRY(FL1, "%1u", fl1, 0x1, 0)
+ ADSP21XX_STATE_ENTRY(FL2, "%1u", fl2, 0x1, 0)
+};
+
+static const cpu_state_table state_table_template =
+{
+ NULL, /* pointer to the base of state (offsets are relative to this) */
+ 0, /* subtype this table refers to */
+ ARRAY_LENGTH(state_array), /* number of entries */
+ state_array /* array of entries */
+};
+
+
+
/***************************************************************************
PRIVATE FUNCTION PROTOTYPES
***************************************************************************/
@@ -544,7 +673,7 @@ static void set_irq_line(adsp2100_state *adsp, int irqline, int state)
INITIALIZATION AND SHUTDOWN
***************************************************************************/
-static adsp2100_state *adsp21xx_init(const device_config *device, cpu_irq_callback irqcallback)
+static adsp2100_state *adsp21xx_init(const device_config *device, cpu_irq_callback irqcallback, int chiptype)
{
adsp2100_state *adsp = device->token;
@@ -553,14 +682,18 @@ static adsp2100_state *adsp21xx_init(const device_config *device, cpu_irq_callba
fatalerror("creating adsp2100 tables failed");
/* set the IRQ callback */
+ adsp->chip_type = chiptype;
adsp->irq_callback = irqcallback;
- adsp->device = device;
+ adsp->device = device;
adsp->program = cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM);
adsp->data = cpu_get_address_space(device, ADDRESS_SPACE_DATA);
adsp->io = cpu_get_address_space(device, ADDRESS_SPACE_IO);
-
+ /* set up the state table */
+ adsp->state = state_table_template;
+ adsp->state.baseptr = adsp;
+ adsp->state.subtypemask = 1 << chiptype;
/* set up ALU register pointers */
adsp->alu_xregs[0] = &adsp->core.ax0;
@@ -653,6 +786,7 @@ static adsp2100_state *adsp21xx_init(const device_config *device, cpu_irq_callba
state_save_register_device_item(device, 0, adsp->astat);
state_save_register_device_item(device, 0, adsp->sstat);
state_save_register_device_item(device, 0, adsp->mstat);
+ state_save_register_device_item(device, 0, adsp->mstat_prev);
state_save_register_device_item(device, 0, adsp->astat_clear);
state_save_register_device_item(device, 0, adsp->idle);
@@ -734,6 +868,7 @@ static CPU_RESET( adsp21xx )
adsp->mstat = 0;
adsp->sstat = 0x55;
adsp->idle = 0;
+ update_mstat(adsp);
/* reset stacks */
adsp->pc_sp = 0;
@@ -892,9 +1027,6 @@ static CPU_EXECUTE( adsp21xx )
check_irqs(adsp);
- /* reset the core */
- set_mstat(adsp, adsp->mstat);
-
/* count cycles and interrupt cycles */
adsp->icount = cycles;
@@ -1086,18 +1218,17 @@ static CPU_EXECUTE( adsp21xx )
break;
case 0x0c:
/* 00001100 xxxxxxxx xxxxxxxx mode control */
- temp = adsp->mstat;
if (adsp->chip_type >= CHIP_TYPE_ADSP2101)
{
- if (op & 0x000008) temp = (temp & ~MSTAT_GOMODE) | ((op << 5) & MSTAT_GOMODE);
- if (op & 0x002000) temp = (temp & ~MSTAT_INTEGER) | ((op >> 8) & MSTAT_INTEGER);
- if (op & 0x008000) temp = (temp & ~MSTAT_TIMER) | ((op >> 9) & MSTAT_TIMER);
+ if (op & 0x000008) adsp->mstat = (adsp->mstat & ~MSTAT_GOMODE) | ((op << 5) & MSTAT_GOMODE);
+ if (op & 0x002000) adsp->mstat = (adsp->mstat & ~MSTAT_INTEGER) | ((op >> 8) & MSTAT_INTEGER);
+ if (op & 0x008000) adsp->mstat = (adsp->mstat & ~MSTAT_TIMER) | ((op >> 9) & MSTAT_TIMER);
}
- if (op & 0x000020) temp = (temp & ~MSTAT_BANK) | ((op >> 4) & MSTAT_BANK);
- if (op & 0x000080) temp = (temp & ~MSTAT_REVERSE) | ((op >> 5) & MSTAT_REVERSE);
- if (op & 0x000200) temp = (temp & ~MSTAT_STICKYV) | ((op >> 6) & MSTAT_STICKYV);
- if (op & 0x000800) temp = (temp & ~MSTAT_SATURATE) | ((op >> 7) & MSTAT_SATURATE);
- set_mstat(adsp, temp);
+ if (op & 0x000020) adsp->mstat = (adsp->mstat & ~MSTAT_BANK) | ((op >> 4) & MSTAT_BANK);
+ if (op & 0x000080) adsp->mstat = (adsp->mstat & ~MSTAT_REVERSE) | ((op >> 5) & MSTAT_REVERSE);
+ if (op & 0x000200) adsp->mstat = (adsp->mstat & ~MSTAT_STICKYV) | ((op >> 6) & MSTAT_STICKYV);
+ if (op & 0x000800) adsp->mstat = (adsp->mstat & ~MSTAT_SATURATE) | ((op >> 7) & MSTAT_SATURATE);
+ update_mstat(adsp);
break;
case 0x0d:
/* 00001101 0000xxxx xxxxxxxx internal data move */
@@ -1641,6 +1772,58 @@ extern CPU_DISASSEMBLE( adsp21xx );
+/***************************************************************************
+ STATE HANDLING CALLBACKS
+***************************************************************************/
+
+static CPU_IMPORT_STATE( adsp21xx )
+{
+ adsp2100_state *adsp = device->token;
+ switch (entry->index)
+ {
+ case ADSP2100_MSTAT:
+ update_mstat(adsp);
+ break;
+
+ case ADSP2100_IMASK:
+ case ADSP2100_ICNTL:
+ case ADSP2100_IRQSTATE0:
+ case ADSP2100_IRQSTATE1:
+ case ADSP2100_IRQSTATE2:
+ case ADSP2100_IRQSTATE3:
+ check_irqs(adsp);
+ break;
+
+ case ADSP2100_I0:
+ case ADSP2100_I1:
+ case ADSP2100_I2:
+ case ADSP2100_I3:
+ case ADSP2100_I4:
+ case ADSP2100_I5:
+ case ADSP2100_I6:
+ case ADSP2100_I7:
+ update_i(adsp, entry->index - ADSP2100_I0);
+ break;
+
+ case ADSP2100_L0:
+ case ADSP2100_L1:
+ case ADSP2100_L2:
+ case ADSP2100_L3:
+ case ADSP2100_L4:
+ case ADSP2100_L5:
+ case ADSP2100_L6:
+ case ADSP2100_L7:
+ update_l(adsp, entry->index - ADSP2100_L0);
+ break;
+
+ default:
+ fatalerror("CPU_IMPORT_STATE(adsp21xx) called for unexpected value\n");
+ break;
+ }
+}
+
+
+
/**************************************************************************
* Generic set_info
**************************************************************************/
@@ -1651,104 +1834,8 @@ static CPU_SET_INFO( adsp21xx )
switch (state)
{
/* --- the following bits of info are set as 64-bit signed integers --- */
- case CPUINFO_INT_PC:
- case CPUINFO_INT_REGISTER + ADSP2100_PC: adsp->pc = info->i; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_AX0: wr_ax0(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_AX1: wr_ax1(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_AY0: wr_ay0(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_AY1: wr_ay1(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_AR: wr_ar(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_AF: adsp->core.af.u = info->i; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_MX0: wr_mx0(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_MX1: wr_mx1(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_MY0: wr_my0(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_MY1: wr_my1(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR0: wr_mr0(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR1: wr_mr1(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR2: wr_mr2(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_MF: adsp->core.mf.u = info->i; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_SI: wr_si(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_SE: wr_se(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_SB: wr_sb(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_SR0: wr_sr0(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_SR1: wr_sr1(adsp, info->i); break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_AX0_SEC: adsp->alt.ax0.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AX1_SEC: adsp->alt.ax1.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AY0_SEC: adsp->alt.ay0.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AY1_SEC: adsp->alt.ay1.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AR_SEC: adsp->alt.ar.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AF_SEC: adsp->alt.af.u = info->i; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_MX0_SEC: adsp->alt.mx0.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MX1_SEC: adsp->alt.mx1.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MY0_SEC: adsp->alt.my0.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MY1_SEC: adsp->alt.my1.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR0_SEC: adsp->alt.mr.mrx.mr0.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR1_SEC: adsp->alt.mr.mrx.mr1.s = info->i; adsp->alt.mr.mrx.mr2.s = (INT16)info->i >> 15; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR2_SEC: adsp->alt.mr.mrx.mr2.s = (INT8)info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MF_SEC: adsp->alt.mf.u = info->i; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_SI_SEC: adsp->alt.si.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SE_SEC: adsp->alt.se.s = (INT8)info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SB_SEC: adsp->alt.sb.s = (INT32)(info->i << 27) >> 27; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SR0_SEC: adsp->alt.sr.srx.sr0.s = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SR1_SEC: adsp->alt.sr.srx.sr1.s = info->i; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_I0: wr_i0(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_I1: wr_i1(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_I2: wr_i2(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_I3: wr_i3(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_I4: wr_i4(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_I5: wr_i5(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_I6: wr_i6(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_I7: wr_i7(adsp, info->i); break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_L0: wr_l0(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_L1: wr_l1(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_L2: wr_l2(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_L3: wr_l3(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_L4: wr_l4(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_L5: wr_l5(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_L6: wr_l6(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_L7: wr_l7(adsp, info->i); break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_M0: wr_m0(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_M1: wr_m1(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_M2: wr_m2(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_M3: wr_m3(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_M4: wr_m4(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_M5: wr_m5(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_M6: wr_m6(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_M7: wr_m7(adsp, info->i); break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_PX: wr_px(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_CNTR: adsp->cntr = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_ASTAT: wr_astat(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_SSTAT: wr_sstat(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_MSTAT: wr_mstat(adsp, info->i); break;
-
- case CPUINFO_INT_SP:
- case CPUINFO_INT_REGISTER + ADSP2100_PCSP: adsp->pc_sp = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_CNTRSP: adsp->cntr_sp = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_STATSP: adsp->stat_sp = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_LOOPSP: adsp->loop_sp = info->i; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_IMASK: wr_imask(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_ICNTL: wr_icntl(adsp, info->i); break;
- case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE0: adsp->irq_state[0] = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE1: adsp->irq_state[1] = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE2: adsp->irq_state[2] = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE3: adsp->irq_state[3] = info->i; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_FLAGIN: adsp->flagin = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_FLAGOUT: adsp->flagout = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_FL0: adsp->fl0 = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_FL1: adsp->fl1 = info->i; break;
- case CPUINFO_INT_REGISTER + ADSP2100_FL2: adsp->fl2 = info->i; break;
+ case CPUINFO_INT_PC: adsp->pc = info->i; break;
+ case CPUINFO_INT_SP: adsp->pc_sp = info->i; break;
}
}
@@ -1786,104 +1873,8 @@ static CPU_GET_INFO( adsp21xx )
case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break;
case CPUINFO_INT_PREVIOUSPC: info->i = adsp->ppc; break;
- case CPUINFO_INT_PC:
- case CPUINFO_INT_REGISTER + ADSP2100_PC: info->i = adsp->pc; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_AX0: info->i = adsp->core.ax0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AX1: info->i = adsp->core.ax1.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AY0: info->i = adsp->core.ay0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AY1: info->i = adsp->core.ay1.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AR: info->i = adsp->core.ar.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AF: info->i = adsp->core.af.u; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_MX0: info->i = adsp->core.mx0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MX1: info->i = adsp->core.mx1.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MY0: info->i = adsp->core.my0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MY1: info->i = adsp->core.my1.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR0: info->i = adsp->core.mr.mrx.mr0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR1: info->i = adsp->core.mr.mrx.mr1.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR2: info->i = adsp->core.mr.mrx.mr2.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MF: info->i = adsp->core.mf.u; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_SI: info->i = adsp->core.si.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SE: info->i = adsp->core.se.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SB: info->i = adsp->core.sb.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SR0: info->i = adsp->core.sr.srx.sr0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SR1: info->i = adsp->core.sr.srx.sr1.u; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_AX0_SEC: info->i = adsp->alt.ax0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AX1_SEC: info->i = adsp->alt.ax1.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AY0_SEC: info->i = adsp->alt.ay0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AY1_SEC: info->i = adsp->alt.ay1.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AR_SEC: info->i = adsp->alt.ar.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_AF_SEC: info->i = adsp->alt.af.u; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_MX0_SEC: info->i = adsp->alt.mx0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MX1_SEC: info->i = adsp->alt.mx1.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MY0_SEC: info->i = adsp->alt.my0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MY1_SEC: info->i = adsp->alt.my1.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR0_SEC: info->i = adsp->alt.mr.mrx.mr0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR1_SEC: info->i = adsp->alt.mr.mrx.mr1.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MR2_SEC: info->i = adsp->alt.mr.mrx.mr2.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MF_SEC: info->i = adsp->alt.mf.u; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_SI_SEC: info->i = adsp->alt.si.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SE_SEC: info->i = adsp->alt.se.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SB_SEC: info->i = adsp->alt.sb.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SR0_SEC: info->i = adsp->alt.sr.srx.sr0.u; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SR1_SEC: info->i = adsp->alt.sr.srx.sr1.u; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_I0: info->i = adsp->i[0]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_I1: info->i = adsp->i[1]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_I2: info->i = adsp->i[2]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_I3: info->i = adsp->i[3]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_I4: info->i = adsp->i[4]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_I5: info->i = adsp->i[5]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_I6: info->i = adsp->i[6]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_I7: info->i = adsp->i[7]; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_L0: info->i = adsp->l[0]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_L1: info->i = adsp->l[1]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_L2: info->i = adsp->l[2]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_L3: info->i = adsp->l[3]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_L4: info->i = adsp->l[4]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_L5: info->i = adsp->l[5]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_L6: info->i = adsp->l[6]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_L7: info->i = adsp->l[7]; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_M0: info->i = adsp->m[0]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_M1: info->i = adsp->m[1]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_M2: info->i = adsp->m[2]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_M3: info->i = adsp->m[3]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_M4: info->i = adsp->m[4]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_M5: info->i = adsp->m[5]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_M6: info->i = adsp->m[6]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_M7: info->i = adsp->m[7]; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_PX: info->i = adsp->px; break;
- case CPUINFO_INT_REGISTER + ADSP2100_CNTR: info->i = adsp->cntr; break;
- case CPUINFO_INT_REGISTER + ADSP2100_ASTAT: info->i = adsp->astat; break;
- case CPUINFO_INT_REGISTER + ADSP2100_SSTAT: info->i = adsp->sstat; break;
- case CPUINFO_INT_REGISTER + ADSP2100_MSTAT: info->i = adsp->mstat; break;
-
- case CPUINFO_INT_SP:
- case CPUINFO_INT_REGISTER + ADSP2100_PCSP: info->i = adsp->pc_sp; break;
- case CPUINFO_INT_REGISTER + ADSP2100_CNTRSP: info->i = adsp->cntr_sp; break;
- case CPUINFO_INT_REGISTER + ADSP2100_STATSP: info->i = adsp->stat_sp; break;
- case CPUINFO_INT_REGISTER + ADSP2100_LOOPSP: info->i = adsp->loop_sp; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_IMASK: info->i = adsp->imask; break;
- case CPUINFO_INT_REGISTER + ADSP2100_ICNTL: info->i = adsp->icntl; break;
- case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE0: info->i = adsp->irq_state[0]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE1: info->i = adsp->irq_state[1]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE2: info->i = adsp->irq_state[2]; break;
- case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE3: info->i = adsp->irq_state[3]; break;
-
- case CPUINFO_INT_REGISTER + ADSP2100_FLAGIN: info->i = adsp->flagin; break;
- case CPUINFO_INT_REGISTER + ADSP2100_FLAGOUT: info->i = adsp->flagout; break;
- case CPUINFO_INT_REGISTER + ADSP2100_FL0: info->i = adsp->fl0; break;
- case CPUINFO_INT_REGISTER + ADSP2100_FL1: info->i = adsp->fl1; break;
- case CPUINFO_INT_REGISTER + ADSP2100_FL2: info->i = adsp->fl2; break;
+ case CPUINFO_INT_PC: info->i = adsp->pc; break;
+ case CPUINFO_INT_SP: info->i = adsp->pc_sp; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_SET_INFO: /* set per CPU */ break;
@@ -1893,7 +1884,9 @@ static CPU_GET_INFO( adsp21xx )
case CPUINFO_PTR_EXECUTE: info->execute = CPU_EXECUTE_NAME(adsp21xx); break;
case CPUINFO_PTR_BURN: info->burn = NULL; break;
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(adsp21xx); break;
+ case CPUINFO_FCT_IMPORT_STATE: info->import_state = CPU_IMPORT_STATE_NAME(adsp21xx); break;
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &adsp->icount; break;
+ case CPUINFO_PTR_STATE_TABLE: info->state_table = &adsp->state; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: /* set per CPU */ break;
@@ -1913,103 +1906,6 @@ static CPU_GET_INFO( adsp21xx )
adsp->astat & 0x02 ? 'N':'.',
adsp->astat & 0x01 ? 'Z':'.');
break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_PC: sprintf(info->s, "PC: %04X", adsp->pc); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_AX0: sprintf(info->s, "AX0: %04X", adsp->core.ax0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_AX1: sprintf(info->s, "AX1: %04X", adsp->core.ax1.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_AY0: sprintf(info->s, "AY0: %04X", adsp->core.ay0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_AY1: sprintf(info->s, "AY1: %04X", adsp->core.ay1.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_AR: sprintf(info->s, "AR: %04X", adsp->core.ar.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_AF: sprintf(info->s, "AF: %04X", adsp->core.af.u); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_MX0: sprintf(info->s, "MX0: %04X", adsp->core.mx0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MX1: sprintf(info->s, "MX1: %04X", adsp->core.mx1.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MY0: sprintf(info->s, "MY0: %04X", adsp->core.my0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MY1: sprintf(info->s, "MY1: %04X", adsp->core.my1.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MR0: sprintf(info->s, "MR0: %04X", adsp->core.mr.mrx.mr0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MR1: sprintf(info->s, "MR1: %04X", adsp->core.mr.mrx.mr1.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MR2: sprintf(info->s, "MR2: %02X", adsp->core.mr.mrx.mr2.u & 0x00ff); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MF: sprintf(info->s, "MF: %04X", adsp->core.mf.u); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_SI: sprintf(info->s, "SI: %04X", adsp->core.si.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_SE: sprintf(info->s, "SE: %02X ", adsp->core.se.u & 0x00ff); break;
- case CPUINFO_STR_REGISTER + ADSP2100_SB: sprintf(info->s, "SB: %02X ", adsp->core.sb.u & 0x001f); break;
- case CPUINFO_STR_REGISTER + ADSP2100_SR0: sprintf(info->s, "SR0: %04X", adsp->core.sr.srx.sr0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_SR1: sprintf(info->s, "SR1: %04X", adsp->core.sr.srx.sr1.u); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_AX0_SEC: sprintf(info->s, "AX0_SEC: %04X", adsp->alt.ax0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_AX1_SEC: sprintf(info->s, "AX1_SEC: %04X", adsp->alt.ax1.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_AY0_SEC: sprintf(info->s, "AY0_SEC: %04X", adsp->alt.ay0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_AY1_SEC: sprintf(info->s, "AY1_SEC: %04X", adsp->alt.ay1.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_AR_SEC: sprintf(info->s, "AR_SEC: %04X", adsp->alt.ar.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_AF_SEC: sprintf(info->s, "AF_SEC: %04X", adsp->alt.af.u); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_MX0_SEC: sprintf(info->s, "MX0_SEC: %04X", adsp->alt.mx0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MX1_SEC: sprintf(info->s, "MX1_SEC: %04X", adsp->alt.mx1.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MY0_SEC: sprintf(info->s, "MY0_SEC: %04X", adsp->alt.my0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MY1_SEC: sprintf(info->s, "MY1_SEC: %04X", adsp->alt.my1.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MR0_SEC: sprintf(info->s, "MR0_SEC: %04X", adsp->alt.mr.mrx.mr0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MR1_SEC: sprintf(info->s, "MR1_SEC: %04X", adsp->alt.mr.mrx.mr1.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MR2_SEC: sprintf(info->s, "MR2_SEC: %02X", adsp->alt.mr.mrx.mr2.u & 0x00ff); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MF_SEC: sprintf(info->s, "MF_SEC: %04X", adsp->alt.mf.u); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_SI_SEC: sprintf(info->s, "SI_SEC: %04X", adsp->alt.si.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_SE_SEC: sprintf(info->s, "SE_SEC: %02X ", adsp->alt.se.u & 0x00ff); break;
- case CPUINFO_STR_REGISTER + ADSP2100_SB_SEC: sprintf(info->s, "SB_SEC: %02X ", adsp->alt.sb.u & 0x001f); break;
- case CPUINFO_STR_REGISTER + ADSP2100_SR0_SEC: sprintf(info->s, "SR0_SEC: %04X", adsp->alt.sr.srx.sr0.u); break;
- case CPUINFO_STR_REGISTER + ADSP2100_SR1_SEC: sprintf(info->s, "SR1_SEC: %04X", adsp->alt.sr.srx.sr1.u); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_I0: sprintf(info->s, "I0: %04X", adsp->i[0]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_I1: sprintf(info->s, "I1: %04X", adsp->i[1]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_I2: sprintf(info->s, "I2: %04X", adsp->i[2]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_I3: sprintf(info->s, "I3: %04X", adsp->i[3]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_I4: sprintf(info->s, "I4: %04X", adsp->i[4]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_I5: sprintf(info->s, "I5: %04X", adsp->i[5]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_I6: sprintf(info->s, "I6: %04X", adsp->i[6]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_I7: sprintf(info->s, "I7: %04X", adsp->i[7]); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_L0: sprintf(info->s, "L0: %04X", adsp->l[0]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_L1: sprintf(info->s, "L1: %04X", adsp->l[1]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_L2: sprintf(info->s, "L2: %04X", adsp->l[2]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_L3: sprintf(info->s, "L3: %04X", adsp->l[3]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_L4: sprintf(info->s, "L4: %04X", adsp->l[4]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_L5: sprintf(info->s, "L5: %04X", adsp->l[5]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_L6: sprintf(info->s, "L6: %04X", adsp->l[6]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_L7: sprintf(info->s, "L7: %04X", adsp->l[7]); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_M0: sprintf(info->s, "M0: %04X", adsp->m[0]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_M1: sprintf(info->s, "M1: %04X", adsp->m[1]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_M2: sprintf(info->s, "M2: %04X", adsp->m[2]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_M3: sprintf(info->s, "M3: %04X", adsp->m[3]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_M4: sprintf(info->s, "M4: %04X", adsp->m[4]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_M5: sprintf(info->s, "M5: %04X", adsp->m[5]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_M6: sprintf(info->s, "M6: %04X", adsp->m[6]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_M7: sprintf(info->s, "M7: %04X", adsp->m[7]); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_PX: sprintf(info->s, "PX: %02X ", adsp->px); break;
- case CPUINFO_STR_REGISTER + ADSP2100_CNTR: sprintf(info->s, "CNTR:%04X", adsp->cntr); break;
- case CPUINFO_STR_REGISTER + ADSP2100_ASTAT: sprintf(info->s, "ASTA:%02X ", adsp->astat); break;
- case CPUINFO_STR_REGISTER + ADSP2100_SSTAT: sprintf(info->s, "SSTA:%02X ", adsp->sstat); break;
- case CPUINFO_STR_REGISTER + ADSP2100_MSTAT: sprintf(info->s, "MSTA:%02X ", adsp->mstat); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_PCSP: sprintf(info->s, "PCSP:%02X ", adsp->pc_sp); break;
- case CPUINFO_STR_REGISTER + ADSP2100_CNTRSP: sprintf(info->s, "CTSP:%01X ", adsp->cntr_sp); break;
- case CPUINFO_STR_REGISTER + ADSP2100_STATSP: sprintf(info->s, "STSP:%01X ", adsp->stat_sp); break;
- case CPUINFO_STR_REGISTER + ADSP2100_LOOPSP: sprintf(info->s, "LPSP:%01X ", adsp->loop_sp); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_IMASK: sprintf(info->s, "IMSK:%03X ", adsp->imask); break;
- case CPUINFO_STR_REGISTER + ADSP2100_ICNTL: sprintf(info->s, "ICTL:%02X ", adsp->icntl); break;
- case CPUINFO_STR_REGISTER + ADSP2100_IRQSTATE0: sprintf(info->s, "IRQ0:%X ", adsp->irq_state[0]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_IRQSTATE1: sprintf(info->s, "IRQ1:%X ", adsp->irq_state[1]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_IRQSTATE2: sprintf(info->s, "IRQ2:%X ", adsp->irq_state[2]); break;
- case CPUINFO_STR_REGISTER + ADSP2100_IRQSTATE3: sprintf(info->s, "IRQ3:%X ", adsp->irq_state[3]); break;
-
- case CPUINFO_STR_REGISTER + ADSP2100_FLAGIN: sprintf(info->s, "FI: %X ", adsp->flagin); break;
- case CPUINFO_STR_REGISTER + ADSP2100_FLAGOUT: sprintf(info->s, "FO: %X ", adsp->flagout); break;
- case CPUINFO_STR_REGISTER + ADSP2100_FL0: sprintf(info->s, "FL0: %X ", adsp->fl0); break;
- case CPUINFO_STR_REGISTER + ADSP2100_FL1: sprintf(info->s, "FL1: %X ", adsp->fl1); break;
- case CPUINFO_STR_REGISTER + ADSP2100_FL2: sprintf(info->s, "FL2: %X ", adsp->fl2); break;
}
}
@@ -2034,8 +1930,7 @@ static void adsp21xx_load_boot_data(UINT8 *srcdata, UINT32 *dstdata)
static CPU_INIT( adsp2100 )
{
- adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
- adsp->chip_type = CHIP_TYPE_ADSP2100;
+ adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2100);
adsp->mstat_mask = 0x0f;
adsp->imask_mask = 0x0f;
}
@@ -2091,8 +1986,7 @@ CPU_GET_INFO( adsp2100 )
static CPU_INIT( adsp2101 )
{
- adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
- adsp->chip_type = CHIP_TYPE_ADSP2101;
+ adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2101);
adsp->mstat_mask = 0x7f;
adsp->imask_mask = 0x3f;
}
@@ -2161,8 +2055,7 @@ CPU_GET_INFO( adsp2101 )
static CPU_INIT( adsp2104 )
{
- adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
- adsp->chip_type = CHIP_TYPE_ADSP2104;
+ adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2104);
adsp->mstat_mask = 0x7f;
adsp->imask_mask = 0x3f;
}
@@ -2236,8 +2129,7 @@ CPU_GET_INFO( adsp2104 )
static CPU_INIT( adsp2105 )
{
- adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
- adsp->chip_type = CHIP_TYPE_ADSP2105;
+ adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2105);
adsp->mstat_mask = 0x7f;
adsp->imask_mask = 0x3f;
}
@@ -2305,8 +2197,7 @@ CPU_GET_INFO( adsp2105 )
static CPU_INIT( adsp2115 )
{
- adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
- adsp->chip_type = CHIP_TYPE_ADSP2115;
+ adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2115);
adsp->mstat_mask = 0x7f;
adsp->imask_mask = 0x3f;
}
@@ -2380,8 +2271,7 @@ CPU_GET_INFO( adsp2115 )
static CPU_INIT( adsp2181 )
{
- adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
- adsp->chip_type = CHIP_TYPE_ADSP2181;
+ adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2181);
adsp->mstat_mask = 0x7f;
adsp->imask_mask = 0x3ff;
}