diff options
Diffstat (limited to 'src/cpu/ozone/dyn_inst_impl.hh')
-rw-r--r-- | src/cpu/ozone/dyn_inst_impl.hh | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cpu/ozone/dyn_inst_impl.hh b/src/cpu/ozone/dyn_inst_impl.hh index 396007687..8519917f5 100644 --- a/src/cpu/ozone/dyn_inst_impl.hh +++ b/src/cpu/ozone/dyn_inst_impl.hh @@ -249,11 +249,33 @@ OzoneDynInst<Impl>::setMiscReg(int misc_reg, const MiscReg &val) #if FULL_SYSTEM template <class Impl> +Fault +OzoneDynInst<Impl>::hwrei() +{ + if (!(this->readPC() & 0x3)) + return new AlphaISA::UnimplementedOpcodeFault; + + this->setNextPC(this->thread->readMiscRegNoEffect(AlphaISA::IPR_EXC_ADDR)); + + this->cpu->hwrei(); + + // FIXME: XXX check for interrupts? XXX + return NoFault; +} + +template <class Impl> void OzoneDynInst<Impl>::trap(Fault fault) { fault->invoke(this->thread->getTC()); } + +template <class Impl> +bool +OzoneDynInst<Impl>::simPalCheck(int palFunc) +{ + return this->cpu->simPalCheck(palFunc); +} #else template <class Impl> void |