summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/sparc/sparcdasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/sparc/sparcdasm.cpp')
-rw-r--r--src/devices/cpu/sparc/sparcdasm.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/devices/cpu/sparc/sparcdasm.cpp b/src/devices/cpu/sparc/sparcdasm.cpp
index 3de1b2fe6b5..1fcbcdfa7a8 100644
--- a/src/devices/cpu/sparc/sparcdasm.cpp
+++ b/src/devices/cpu/sparc/sparcdasm.cpp
@@ -759,7 +759,7 @@ offs_t sparc_disassembler::dasm(std::ostream &stream, offs_t pc, uint32_t op) co
return 4 | SUPPORTED;
case 1:
util::stream_format(stream, "%-*s%%pc%c0x%08x ! 0x%08x", m_op_field_width, "call", (DISP30 < 0) ? '-' : '+', std::abs(DISP30), pc + DISP30);
- return 4 | SUPPORTED;
+ return 4 | STEP_OVER | step_over_extra(1) | SUPPORTED;
case 2:
switch (OP3)
{
@@ -1025,8 +1025,8 @@ offs_t sparc_disassembler::dasm(std::ostream &stream, offs_t pc, uint32_t op) co
{
switch (RD)
{
- case 0: util::stream_format(stream, "done"); return 4 | SUPPORTED;
- case 1: util::stream_format(stream, "retry"); return 4 | SUPPORTED;
+ case 0: util::stream_format(stream, "done"); return 4 | STEP_OUT | SUPPORTED;
+ case 1: util::stream_format(stream, "retry"); return 4 | STEP_OUT | SUPPORTED;
}
}
break;
@@ -1396,6 +1396,7 @@ offs_t sparc_disassembler::dasm_jmpl(std::ostream &stream, offs_t pc, uint32_t o
if (USEIMM && (RD == 0) && ((RS1 == 15) || (RS1 == 31)) && (SIMM13 == 8))
{
util::stream_format(stream, (RS1 == 31) ? "ret" : "retl");
+ return 4 | STEP_OUT | step_over_extra(1) | SUPPORTED;
}
else
{
@@ -1403,8 +1404,11 @@ offs_t sparc_disassembler::dasm_jmpl(std::ostream &stream, offs_t pc, uint32_t o
dasm_address(stream, op);
if ((RD != 0) && (RD != 15))
util::stream_format(stream, ",%s", REG_NAMES[RD]);
+ if (RD != 0)
+ return 4 | STEP_OVER | step_over_extra(1) | SUPPORTED;
+ else
+ return 4 | SUPPORTED;
}
- return 4 | SUPPORTED;
}
@@ -1412,7 +1416,7 @@ offs_t sparc_disassembler::dasm_return(std::ostream &stream, offs_t pc, uint32_t
{
util::stream_format(stream, "%-*s", m_op_field_width, (m_version >= 9) ? "return" : "rett");
dasm_address(stream, op);
- return 4 | SUPPORTED;
+ return 4 | STEP_OUT | step_over_extra(1) | SUPPORTED;
}
@@ -1445,7 +1449,7 @@ offs_t sparc_disassembler::dasm_tcc(std::ostream &stream, offs_t pc, uint32_t op
else if (RS2 == 0) util::stream_format(stream, "%s", REG_NAMES[RS1]);
else util::stream_format(stream, "%s,%s", REG_NAMES[RS1], REG_NAMES[RS2]);
}
- return 4 | SUPPORTED;
+ return 4 | STEP_OVER | SUPPORTED;
}