#include "arch/alpha/kernel_stats.hh"
#include "arch/alpha/osfpal.hh"
#include "arch/alpha/tlb.hh"
-#include "arch/alpha/kgdb.h"
-#include "base/remote_gdb.hh"
-#include "base/stats/events.hh"
+#include "base/cp_annotate.hh"
+#include "base/debug.hh"
#include "config/full_system.hh"
#include "cpu/base.hh"
#include "cpu/simple_thread.hh"
#include "cpu/thread_context.hh"
-#include "sim/debug.hh"
#include "sim/sim_exit.hh"
namespace AlphaISA {
cpu->thread->setFloatReg(ZeroReg, 0.0);
}
-int
-MiscRegFile::getInstAsid()
-{
- return ITB_ASN_ASN(ipr[IPR_ITB_ASN]);
-}
-
-int
-MiscRegFile::getDataAsid()
-{
- return DTB_ASN_ASN(ipr[IPR_DTB_ASN]);
-}
-
#endif
////////////////////////////////////////////////////////////////////////
}
MiscReg
-MiscRegFile::readIpr(int idx, ThreadContext *tc)
+ISA::readIpr(int idx, ThreadContext *tc)
{
uint64_t retval = 0; // return value, default 0
#endif
void
-MiscRegFile::setIpr(int idx, uint64_t val, ThreadContext *tc)
+ISA::setIpr(int idx, uint64_t val, ThreadContext *tc)
{
uint64_t old;
case IPR_IPLR:
#ifdef DEBUG
- if (break_ipl != -1 && break_ipl == (val & 0x1f))
+ if (break_ipl != -1 && break_ipl == (int)(val & 0x1f))
debug_break();
#endif
// really a control write
ipr[idx] = val;
- tc->getDTBPtr()->flushAddr(val,
- DTB_ASN_ASN(ipr[IPR_DTB_ASN]));
+ tc->getDTBPtr()->flushAddr(val, DTB_ASN_ASN(ipr[IPR_DTB_ASN]));
break;
case IPR_DTB_TAG: {
// really a control write
ipr[idx] = val;
- tc->getITBPtr()->flushAddr(val,
- ITB_ASN_ASN(ipr[IPR_ITB_ASN]));
+ tc->getITBPtr()->flushAddr(val, ITB_ASN_ASN(ipr[IPR_ITB_ASN]));
break;
default:
// no error...
}
-
void
copyIprs(ThreadContext *src, ThreadContext *dest)
{
- for (int i = 0; i < NumInternalProcRegs; ++i) {
+ for (int i = 0; i < NumInternalProcRegs; ++i)
dest->setMiscRegNoEffect(i, src->readMiscRegNoEffect(i));
- }
}
} // namespace AlphaISA
#if FULL_SYSTEM
+
using namespace AlphaISA;
Fault
setNextPC(readMiscRegNoEffect(IPR_EXC_ADDR));
+ CPA::cpa()->swAutoBegin(tc, readNextPC());
+
if (!misspeculating()) {
if (kernelStats)
kernelStats->hwrei();