summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2017-03-24 16:04:53 -0400
committer GitHub <noreply@github.com>2017-03-24 16:04:53 -0400
commitd02c2561aa422d2360b9be63f7d7b3e70d550e07 (patch)
tree78c43aced985e8ea9a05cb1b5f06c3dffa948a27
parent0181d72c23d7de681c2e91975e5251927b6dff42 (diff)
parent74a3af9dd2587cc71458a6340fbff2719d508494 (diff)
Merge pull request #2183 from Happy-yappH/master
mips3 drc : Make sure branch delay slot instruction is not virtual
-rw-r--r--src/devices/cpu/mips/mips3drc.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/devices/cpu/mips/mips3drc.cpp b/src/devices/cpu/mips/mips3drc.cpp
index 182c375f9e3..96bab73faef 100644
--- a/src/devices/cpu/mips/mips3drc.cpp
+++ b/src/devices/cpu/mips/mips3drc.cpp
@@ -1101,7 +1101,9 @@ void mips3_device::generate_checksum_block(drcuml_block *block, compiler_state *
void *base = m_direct->read_ptr(seqhead->physpc);
UML_LOAD(block, I0, base, 0, SIZE_DWORD, SCALE_x4); // load i0,base,0,dword
- if (seqhead->delay.first() != nullptr && seqhead->physpc != seqhead->delay.first()->physpc)
+ if (seqhead->delay.first() != nullptr
+ && !(seqhead->delay.first()->flags & OPFLAG_VIRTUAL_NOOP)
+ && seqhead->physpc != seqhead->delay.first()->physpc)
{
base = m_direct->read_ptr(seqhead->delay.first()->physpc);
assert(base != nullptr);
@@ -1142,7 +1144,9 @@ void mips3_device::generate_checksum_block(drcuml_block *block, compiler_state *
UML_ADD(block, I0, I0, I1); // add i0,i0,i1
sum += curdesc->opptr.l[0];
- if (curdesc->delay.first() != nullptr && (curdesc == seqlast || (curdesc->next() != nullptr && curdesc->next()->physpc != curdesc->delay.first()->physpc)))
+ if (curdesc->delay.first() != nullptr
+ && !(curdesc->delay.first()->flags & OPFLAG_VIRTUAL_NOOP)
+ && (curdesc == seqlast || (curdesc->next() != nullptr && curdesc->next()->physpc != curdesc->delay.first()->physpc)))
{
base = m_direct->read_ptr(curdesc->delay.first()->physpc);
assert(base != nullptr);