summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mamehaze <mamehaze@users.noreply.github.com>2014-12-27 14:45:56 +0000
committer mamehaze <mamehaze@users.noreply.github.com>2014-12-27 14:45:56 +0000
commit61ed3c962397dd86903971e5ae42f3185dd12c6e (patch)
tree4a48a2504fe1d9dc6d22337630bd1d5e9050f163
parent6ae1429c9230b07282e3a0cb62efd53f522c3b88 (diff)
(nw)
-rw-r--r--src/emu/cpu/arcompact/arcompact_execute.c36
-rw-r--r--src/emu/cpu/arcompact/arcompact_make.py26
2 files changed, 26 insertions, 36 deletions
diff --git a/src/emu/cpu/arcompact/arcompact_execute.c b/src/emu/cpu/arcompact/arcompact_execute.c
index e5623089737..8e79c587ba1 100644
--- a/src/emu/cpu/arcompact/arcompact_execute.c
+++ b/src/emu/cpu/arcompact/arcompact_execute.c
@@ -2440,42 +2440,6 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle0d_helper(OPS_16, const char
}
-ARCOMPACT_RETTYPE arcompact_device::arcompact_handle0d_00(OPS_16) // ADD_S c, b, u3 (note, c destination)
-{
- int u, breg, creg;
-
- COMMON16_GET_u3;
- COMMON16_GET_breg;
- COMMON16_GET_creg;
-
- REG_16BIT_RANGE(breg);
- REG_16BIT_RANGE(creg);
-
- m_regs[creg] = m_regs[breg] + u;
-
- return m_pc + (2 >> 0);
-}
-
-ARCOMPACT_RETTYPE arcompact_device::arcompact_handle0d_01(OPS_16)
-{
- return arcompact_handle0d_helper(PARAMS, "SUB_S");
-}
-
-ARCOMPACT_RETTYPE arcompact_device::arcompact_handle0d_02(OPS_16) // ASL_S c, b asl u3 (note, c destination)
-{
- int u, breg, creg;
-
- COMMON16_GET_u3;
- COMMON16_GET_breg;
- COMMON16_GET_creg;
-
- REG_16BIT_RANGE(breg);
- REG_16BIT_RANGE(creg);
-
- m_regs[creg] = m_regs[breg] << u;
-
- return m_pc + (2 >> 0);
-}
ARCOMPACT_RETTYPE arcompact_device::arcompact_handle0d_03(OPS_16)
{
diff --git a/src/emu/cpu/arcompact/arcompact_make.py b/src/emu/cpu/arcompact/arcompact_make.py
index 9268a6c55e0..110595c6585 100644
--- a/src/emu/cpu/arcompact/arcompact_make.py
+++ b/src/emu/cpu/arcompact/arcompact_make.py
@@ -286,6 +286,27 @@ def EmitGroup04(f,funcname, opname, opexecute, opwrite, opwrite_alt, ignore_a, b
print >>f, ""
print >>f, ""
+
+# xxx_S c, b, u3 format opcodes (note c is destination)
+def EmitGroup0d(f,funcname, opname, opexecute, opwrite):
+ print >>f, "ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s(OPS_16)" % (funcname)
+ print >>f, "{"
+ print >>f, " int u, breg, creg;"
+ print >>f, ""
+ print >>f, " COMMON16_GET_u3;"
+ print >>f, " COMMON16_GET_breg;"
+ print >>f, " COMMON16_GET_creg;"
+ print >>f, ""
+ print >>f, " REG_16BIT_RANGE(breg);"
+ print >>f, " REG_16BIT_RANGE(creg);"
+ print >>f, ""
+ print >>f, " %s" % (opexecute)
+ print >>f, " %s" % (opwrite)
+ print >>f, ""
+ print >>f, " return m_pc + (2 >> 0);"
+ print >>f, "}"
+
+
# xxx_S b <- b,c format opcodes
def EmitGroup0f(f,funcname, opname, opexecute, opwrite):
print >>f, "ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s(OPS_16)"% (funcname)
@@ -368,6 +389,11 @@ EmitGroup04(f, "04_2f_02", "LSR1", "UINT32 result = c >> 1;", "m_regs[b
EmitGroup04(f, "04_2f_07", "EXTB", "UINT32 result = c & 0x000000ff;", "m_regs[breg] = result;","", 2,1, -1, EmitGroup04_unsupported_Flags ) # ^
EmitGroup04(f, "04_2f_08", "EXTW", "UINT32 result = c & 0x0000ffff;", "m_regs[breg] = result;","", 2,1, -1, EmitGroup04_unsupported_Flags ) # ^
+# xxx_S c, b, u3 format opcodes (note c is destination)
+EmitGroup0d(f, "0d_00", "ADD_S", "UINT32 result = m_regs[breg] + u;", "m_regs[creg] = result;" )
+EmitGroup0d(f, "0d_01", "SUB_S", "UINT32 result = m_regs[breg] - u;", "m_regs[creg] = result;" )
+EmitGroup0d(f, "0d_02", "ASL_S", "UINT32 result = m_regs[breg] << u;", "m_regs[creg] = result;" )
+
# xxx_S b <- b,c format opcodes (or in some cases xxx_S b,c)
EmitGroup0f(f, "0f_02", "SUB_S", "UINT32 result = m_regs[breg] - m_regs[creg];", "m_regs[breg] = result;" )
EmitGroup0f(f, "0f_04", "AND_S", "UINT32 result = m_regs[breg] & m_regs[creg];", "m_regs[breg] = result;" )