summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/tms32082
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/tms32082')
-rw-r--r--src/devices/cpu/tms32082/mp_ops.cpp54
-rw-r--r--src/devices/cpu/tms32082/tms32082.cpp50
-rw-r--r--src/devices/cpu/tms32082/tms32082.h8
3 files changed, 56 insertions, 56 deletions
diff --git a/src/devices/cpu/tms32082/mp_ops.cpp b/src/devices/cpu/tms32082/mp_ops.cpp
index 0411e6996b6..cbae99b9d81 100644
--- a/src/devices/cpu/tms32082/mp_ops.cpp
+++ b/src/devices/cpu/tms32082/mp_ops.cpp
@@ -142,38 +142,38 @@ void tms32082_mp_device::vector_loadstore()
{
case 0x01: // vst.s
{
- m_program->write_dword(m_outp, m_reg[rd]);
+ m_program.write_dword(m_outp, m_reg[rd]);
m_outp += 4;
break;
}
case 0x03: // vst.d
{
uint64_t data = m_fpair[rd >> 1];
- m_program->write_qword(m_outp, data);
+ m_program.write_qword(m_outp, data);
m_outp += 8;
break;
}
case 0x04: // vld0.s
{
- m_reg[rd] = m_program->read_dword(m_in0p);
+ m_reg[rd] = m_program.read_dword(m_in0p);
m_in0p += 4;
break;
}
case 0x05: // vld1.s
{
- m_reg[rd] = m_program->read_dword(m_in1p);
+ m_reg[rd] = m_program.read_dword(m_in1p);
m_in1p += 4;
break;
}
case 0x06: // vld0.d
{
- m_fpair[rd >> 1] = m_program->read_qword(m_in0p);
+ m_fpair[rd >> 1] = m_program.read_qword(m_in0p);
m_in0p += 8;
break;
}
case 0x07: // vld1.d
{
- m_fpair[rd >> 1] = m_program->read_qword(m_in1p);
+ m_fpair[rd >> 1] = m_program.read_qword(m_in1p);
m_in1p += 8;
break;
}
@@ -518,7 +518,7 @@ void tms32082_mp_device::execute_short_imm()
int32_t offset = OP_SIMM15();
uint32_t address = m_reg[base] + offset;
- uint32_t data = (uint8_t)m_program->read_byte(address);
+ uint32_t data = (uint8_t)m_program.read_byte(address);
if (data & 0x80) data |= 0xffffff00;
if (rd)
m_reg[rd] = data;
@@ -537,7 +537,7 @@ void tms32082_mp_device::execute_short_imm()
int32_t offset = OP_SIMM15();
uint32_t address = m_reg[base] + offset;
- uint32_t data = (uint16_t)m_program->read_word(address);
+ uint32_t data = (uint16_t)m_program.read_word(address);
if (data & 0x8000) data |= 0xffff0000;
if (rd)
m_reg[rd] = data;
@@ -556,7 +556,7 @@ void tms32082_mp_device::execute_short_imm()
int32_t offset = OP_SIMM15();
uint32_t address = m_reg[base] + offset;
- uint32_t data = m_program->read_dword(address);
+ uint32_t data = m_program.read_dword(address);
if (rd)
m_reg[rd] = data;
@@ -574,8 +574,8 @@ void tms32082_mp_device::execute_short_imm()
int32_t offset = OP_SIMM15();
uint32_t address = m_reg[base] + offset;
- uint32_t data1 = m_program->read_dword(address);
- uint32_t data2 = m_program->read_dword(address+4);
+ uint32_t data1 = m_program.read_dword(address);
+ uint32_t data2 = m_program.read_dword(address+4);
if (rd)
{
m_reg[(rd & ~1)+1] = data1;
@@ -596,7 +596,7 @@ void tms32082_mp_device::execute_short_imm()
int32_t offset = OP_SIMM15();
uint32_t address = m_reg[base] + offset;
- uint32_t data = (uint8_t)(m_program->read_byte(address));
+ uint32_t data = (uint8_t)(m_program.read_byte(address));
if (rd)
m_reg[rd] = data;
@@ -614,7 +614,7 @@ void tms32082_mp_device::execute_short_imm()
int32_t offset = OP_SIMM15();
uint32_t address = m_reg[base] + offset;
- uint32_t data = (uint16_t)(m_program->read_word(address));
+ uint32_t data = (uint16_t)(m_program.read_word(address));
if (rd)
m_reg[rd] = data;
@@ -633,7 +633,7 @@ void tms32082_mp_device::execute_short_imm()
uint32_t address = m_reg[base] + offset;
- m_program->write_byte(address, (uint8_t)(m_reg[rd]));
+ m_program.write_byte(address, (uint8_t)(m_reg[rd]));
if (m && base)
m_reg[base] = address;
@@ -650,7 +650,7 @@ void tms32082_mp_device::execute_short_imm()
uint32_t address = m_reg[base] + offset;
- m_program->write_word(address, (uint16_t)(m_reg[rd]));
+ m_program.write_word(address, (uint16_t)(m_reg[rd]));
if (m && base)
m_reg[base] = address;
@@ -667,7 +667,7 @@ void tms32082_mp_device::execute_short_imm()
uint32_t address = m_reg[base] + offset;
- m_program->write_dword(address, m_reg[rd]);
+ m_program.write_dword(address, m_reg[rd]);
if (m && base)
m_reg[base] = address;
@@ -684,8 +684,8 @@ void tms32082_mp_device::execute_short_imm()
uint32_t address = m_reg[base] + offset;
- m_program->write_dword(address+0, m_reg[(rd & ~1) + 1]);
- m_program->write_dword(address+4, m_reg[rd & ~1]);
+ m_program.write_dword(address+0, m_reg[(rd & ~1) + 1]);
+ m_program.write_dword(address+4, m_reg[rd & ~1]);
if (m && base)
m_reg[base] = address;
@@ -1043,7 +1043,7 @@ void tms32082_mp_device::execute_reg_long_imm()
int rd = OP_RD();
uint32_t address = m_reg[base] + (has_imm ? imm32 : m_reg[OP_SRC1()]);
- uint32_t r = m_program->read_byte(address);
+ uint32_t r = m_program.read_byte(address);
if (r & 0x80) r |= 0xffffff00;
if (rd)
@@ -1066,7 +1066,7 @@ void tms32082_mp_device::execute_reg_long_imm()
int rd = OP_RD();
uint32_t address = m_reg[base] + ((has_imm ? imm32 : m_reg[OP_SRC1()]) << shift);
- uint32_t r = m_program->read_word(address);
+ uint32_t r = m_program.read_word(address);
if (r & 0x8000) r |= 0xffff0000;
if (rd)
@@ -1088,7 +1088,7 @@ void tms32082_mp_device::execute_reg_long_imm()
int rd = OP_RD();
uint32_t address = m_reg[base] + ((has_imm ? imm32 : m_reg[OP_SRC1()]) << shift);
- uint32_t r = m_program->read_dword(address);
+ uint32_t r = m_program.read_dword(address);
if (rd)
m_reg[rd] = r;
@@ -1109,7 +1109,7 @@ void tms32082_mp_device::execute_reg_long_imm()
int rd = OP_RD();
uint32_t address = m_reg[base] + ((has_imm ? imm32 : m_reg[OP_SRC1()]) << shift);
- uint64_t r = m_program->read_qword(address);
+ uint64_t r = m_program.read_qword(address);
if (rd)
m_fpair[rd >> 1] = r;
@@ -1129,7 +1129,7 @@ void tms32082_mp_device::execute_reg_long_imm()
int rd = OP_RD();
uint32_t address = m_reg[base] + (has_imm ? imm32 : m_reg[OP_SRC1()]);
- uint32_t r = (uint8_t)(m_program->read_byte(address));
+ uint32_t r = (uint8_t)(m_program.read_byte(address));
if (rd)
m_reg[rd] = r;
@@ -1150,7 +1150,7 @@ void tms32082_mp_device::execute_reg_long_imm()
int rd = OP_RD();
uint32_t address = m_reg[base] + ((has_imm ? imm32 : m_reg[OP_SRC1()]) << shift);
- uint32_t r = (uint16_t)(m_program->read_word(address));
+ uint32_t r = (uint16_t)(m_program.read_word(address));
if (rd)
m_reg[rd] = r;
@@ -1170,7 +1170,7 @@ void tms32082_mp_device::execute_reg_long_imm()
int base = OP_BASE();
uint32_t address = m_reg[base] + (has_imm ? imm32 : m_reg[OP_SRC1()]);
- m_program->write_byte(address, (uint8_t)(m_reg[OP_RD()]));
+ m_program.write_byte(address, (uint8_t)(m_reg[OP_RD()]));
if (m && base)
m_reg[base] = address;
@@ -1188,7 +1188,7 @@ void tms32082_mp_device::execute_reg_long_imm()
int base = OP_BASE();
uint32_t address = m_reg[base] + ((has_imm ? imm32 : m_reg[OP_SRC1()]) << shift);
- m_program->write_word(address, (uint16_t)(m_reg[OP_RD()]));
+ m_program.write_word(address, (uint16_t)(m_reg[OP_RD()]));
if (m && base)
m_reg[base] = address;
@@ -1206,7 +1206,7 @@ void tms32082_mp_device::execute_reg_long_imm()
int base = OP_BASE();
uint32_t address = m_reg[base] + ((has_imm ? imm32 : m_reg[OP_SRC1()]) << shift);
- m_program->write_dword(address, m_reg[OP_RD()]);
+ m_program.write_dword(address, m_reg[OP_RD()]);
if (m && base)
m_reg[base] = address;
diff --git a/src/devices/cpu/tms32082/tms32082.cpp b/src/devices/cpu/tms32082/tms32082.cpp
index a14bf89c346..9df37455e99 100644
--- a/src/devices/cpu/tms32082/tms32082.cpp
+++ b/src/devices/cpu/tms32082/tms32082.cpp
@@ -90,20 +90,20 @@ WRITE32_MEMBER(tms32082_mp_device::mp_param_w)
// TODO: move TC functionality to separate device
uint32_t address = data;
- uint32_t next_entry = m_program->read_dword(address + 0);
- uint32_t pt_options = m_program->read_dword(address + 4);
- uint32_t src_addr = m_program->read_dword(address + 8);
- uint32_t dst_addr = m_program->read_dword(address + 12);
- uint32_t src_b_count = m_program->read_word(address + 16);
- uint32_t src_a_count = m_program->read_word(address + 18);
- uint32_t dst_b_count = m_program->read_word(address + 20);
- uint32_t dst_a_count = m_program->read_word(address + 22);
- uint32_t src_c_count = m_program->read_dword(address + 24);
- uint32_t dst_c_count = m_program->read_dword(address + 28);
- uint32_t src_b_pitch = m_program->read_dword(address + 32);
- uint32_t dst_b_pitch = m_program->read_dword(address + 36);
- uint32_t src_c_pitch = m_program->read_dword(address + 40);
- uint32_t dst_c_pitch = m_program->read_dword(address + 44);
+ uint32_t next_entry = m_program.read_dword(address + 0);
+ uint32_t pt_options = m_program.read_dword(address + 4);
+ uint32_t src_addr = m_program.read_dword(address + 8);
+ uint32_t dst_addr = m_program.read_dword(address + 12);
+ uint32_t src_b_count = m_program.read_word(address + 16);
+ uint32_t src_a_count = m_program.read_word(address + 18);
+ uint32_t dst_b_count = m_program.read_word(address + 20);
+ uint32_t dst_a_count = m_program.read_word(address + 22);
+ uint32_t src_c_count = m_program.read_dword(address + 24);
+ uint32_t dst_c_count = m_program.read_dword(address + 28);
+ uint32_t src_b_pitch = m_program.read_dword(address + 32);
+ uint32_t dst_b_pitch = m_program.read_dword(address + 36);
+ uint32_t src_c_pitch = m_program.read_dword(address + 40);
+ uint32_t dst_c_pitch = m_program.read_dword(address + 44);
printf("TC operation:\n");
printf(" Next entry: %08X\n", next_entry);
@@ -137,8 +137,8 @@ WRITE32_MEMBER(tms32082_mp_device::mp_param_w)
uint32_t src = src_addr + c_src_offset + b_src_offset + ia;
uint32_t dst = dst_addr + c_dst_offset + b_dst_offset + ia;
- uint32_t data = m_program->read_byte(src);
- m_program->write_byte(dst, data);
+ uint32_t data = m_program.read_byte(src);
+ m_program.write_byte(dst, data);
//printf("%08X: %02X -> %08X\n", src, data, dst);
}
@@ -151,7 +151,7 @@ WRITE32_MEMBER(tms32082_mp_device::mp_param_w)
void tms32082_mp_device::device_start()
{
- m_program = &space(AS_PROGRAM);
+ space(AS_PROGRAM).specific(m_program);
m_cmd_callback.resolve();
save_item(NAME(m_pc));
@@ -218,8 +218,8 @@ void tms32082_mp_device::device_start()
state_add(STATE_GENPC, "GENPC", m_pc).noshow();
state_add(STATE_GENPCBASE, "CURPC", m_pc).noshow();
- m_program = &space(AS_PROGRAM);
- m_cache = m_program->cache<2, 0, ENDIANNESS_BIG>();
+ space(AS_PROGRAM).cache(m_cache);
+ space(AS_PROGRAM).specific(m_program);
set_icountptr(m_icount);
}
@@ -294,7 +294,7 @@ void tms32082_mp_device::processor_command(uint32_t command)
printf("PP0 ");
if (!m_cmd_callback.isnull())
- m_cmd_callback(*m_program, 0, command, 0xffffffff);
+ m_cmd_callback(space(AS_PROGRAM), 0, command, 0xffffffff);
printf("\n");
}
@@ -403,7 +403,7 @@ void tms32082_mp_device::check_interrupts()
m_ie &= ~1; // clear global interrupt mask
// get new pc from vector table
- m_fetchpc = m_pc = m_program->read_dword(0x01010180 + (i * 4));
+ m_fetchpc = m_pc = m_program.read_dword(0x01010180 + (i * 4));
return;
}
}
@@ -436,7 +436,7 @@ void tms32082_mp_device::execute_set_input(int inputnum, int state)
uint32_t tms32082_mp_device::fetch()
{
- uint32_t w = m_cache->read_dword(m_fetchpc);
+ uint32_t w = m_cache.read_dword(m_fetchpc);
m_fetchpc += 4;
return w;
}
@@ -506,7 +506,7 @@ std::unique_ptr<util::disasm_interface> tms32082_pp_device::create_disassembler(
void tms32082_pp_device::device_start()
{
- m_program = &space(AS_PROGRAM);
+ space(AS_PROGRAM).specific(m_program);
save_item(NAME(m_pc));
save_item(NAME(m_fetchpc));
@@ -517,8 +517,8 @@ void tms32082_pp_device::device_start()
state_add(STATE_GENPC, "GENPC", m_pc).noshow();
state_add(STATE_GENPCBASE, "CURPC", m_pc).noshow();
- m_program = &space(AS_PROGRAM);
- m_cache = m_program->cache<2, 0, ENDIANNESS_BIG>();
+ space(AS_PROGRAM).cache(m_cache);
+ space(AS_PROGRAM).specific(m_program);
set_icountptr(m_icount);
}
diff --git a/src/devices/cpu/tms32082/tms32082.h b/src/devices/cpu/tms32082/tms32082.h
index e571255192d..ae68967fba4 100644
--- a/src/devices/cpu/tms32082/tms32082.h
+++ b/src/devices/cpu/tms32082/tms32082.h
@@ -129,8 +129,8 @@ protected:
int m_icount;
- address_space *m_program;
- memory_access_cache<2, 0, ENDIANNESS_BIG> * m_cache;
+ memory_access<32, 2, 0, ENDIANNESS_BIG>::cache m_cache;
+ memory_access<32, 2, 0, ENDIANNESS_BIG>::specific m_program;
write32_delegate m_cmd_callback;
@@ -189,8 +189,8 @@ protected:
int m_icount;
- address_space *m_program;
- memory_access_cache<2, 0, ENDIANNESS_BIG> * m_cache;
+ memory_access<32, 2, 0, ENDIANNESS_BIG>::cache m_cache;
+ memory_access<32, 2, 0, ENDIANNESS_BIG>::specific m_program;
};