diff options
Diffstat (limited to 'arch/alpha/ev5.cc')
-rw-r--r-- | arch/alpha/ev5.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/alpha/ev5.cc b/arch/alpha/ev5.cc index ff1ecc4bf..826a1ab02 100644 --- a/arch/alpha/ev5.cc +++ b/arch/alpha/ev5.cc @@ -168,11 +168,11 @@ ExecContext::hwrei() if (!PC_PAL(regs.pc)) return Unimplemented_Opcode_Fault; - kernelStats.hwrei(); - - regs.npc = ipr[AlphaISA::IPR_EXC_ADDR]; + setNextPC(ipr[AlphaISA::IPR_EXC_ADDR]); if (!misspeculating()) { + kernelStats.hwrei(); + if ((ipr[AlphaISA::IPR_EXC_ADDR] & 1) == 0) AlphaISA::swap_palshadow(®s, false); @@ -560,7 +560,7 @@ ExecContext::simPalCheck(int palFunc) case PAL::bpt: case PAL::bugchk: - if (system->breakpoint()) + if (!misspeculating() && system->breakpoint()) return false; break; } |