summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2022-08-27 10:38:08 -0400
committer AJR <ajrhacker@users.noreply.github.com>2022-08-27 10:38:08 -0400
commitc26f3dd96bb436d531719222e25778925fae7583 (patch)
treee124d896ac0739b80ad0a94845afa762a6d553d6 /src
parent614942b131d718de2a06fc423766059f15464f3e (diff)
sparc: Re-support certain instructions in SPARClite disassembly
Diffstat (limited to 'src')
-rw-r--r--src/devices/cpu/sparc/sparcdasm.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/devices/cpu/sparc/sparcdasm.cpp b/src/devices/cpu/sparc/sparcdasm.cpp
index 98c9ab01bc1..a813892f8b3 100644
--- a/src/devices/cpu/sparc/sparcdasm.cpp
+++ b/src/devices/cpu/sparc/sparcdasm.cpp
@@ -873,7 +873,7 @@ offs_t sparc_disassembler::dasm(std::ostream &stream, offs_t pc, uint32_t op) co
case 0x28:
return dasm_read_state_reg(stream, pc, op);
case 0x29:
- if (m_version <= v8)
+ if (m_version < v9)
{
util::stream_format(stream, "%-*s%%psr,%s", m_op_field_width, "rd", REG_NAMES[RD]);
return 4 | SUPPORTED;
@@ -979,7 +979,7 @@ offs_t sparc_disassembler::dasm(std::ostream &stream, offs_t pc, uint32_t op) co
}
break;
case 0x33:
- if (m_version <= v8)
+ if (m_version < v9)
{
if (RS1 == 0)
{
@@ -1152,9 +1152,9 @@ offs_t sparc_disassembler::dasm_read_state_reg(std::ostream &stream, offs_t pc,
util::stream_format(stream, "%-*s%%y,%s", m_op_field_width, "rd", REG_NAMES[RD]);
return 4 | SUPPORTED;
}
- else if ((m_version == v8) || ((m_version >= v9) && !USEIMM))
+ else if ((m_version == v8) || (m_version == sparclite) || ((m_version >= v9) && !USEIMM))
{
- if (!USEIMM && (RS1 == 15) && (RD == 0))
+ if (!USEIMM && (RS1 == 15) && (RD == 0) && (m_version != sparclite))
{
util::stream_format(stream, "stbar");
return 4 | SUPPORTED;
@@ -1482,6 +1482,7 @@ offs_t sparc_disassembler::dasm_ldst(std::ostream &stream, offs_t pc, uint32_t o
util::stream_format(stream, "%-*s[", m_op_field_width, "ldx");
dasm_address(stream, op);
util::stream_format(stream, "],%%efsr");
+ return 4 | SUPPORTED;
}
break;
case 0x25: // Store floating-point state register
@@ -1548,8 +1549,8 @@ offs_t sparc_disassembler::dasm_ldst(std::ostream &stream, offs_t pc, uint32_t o
dasm_address(stream, op);
stream << ']';
return 4 | SUPPORTED;
- case 0x26: // Store Floating-point deferred-trap Queue
- case 0x36: // Store Coprocessor deferred-trap Queue
+ case 0x26: // Store Double Floating-point deferred-trap Queue
+ case 0x36: // Store Double Coprocessor deferred-trap Queue
util::stream_format(stream, "%-*s%%%cq,[", m_op_field_width, "std", (OP3 == 0x36) ? 'c' : 'f');
dasm_address(stream, op);
stream << ']';