72 cpu->thread->setIntReg(
ZeroReg, 0);
73 cpu->thread->setFloatReg(
ZeroReg, 0.0);
146 retval |=
ipr[idx] &
ULL(0xffffffff00000000);
147 retval |= tc->
getCpuPtr()->curCycle() &
ULL(0x00000000ffffffff);
166 retval |= ((uint64_t)entry.
ppn & ULL(0x7ffffff)) << 32;
167 retval |= ((uint64_t)entry.
xre & ULL(0xf)) << 8;
168 retval |= ((uint64_t)entry.
xwe & ULL(0xf)) << 12;
169 retval |= ((uint64_t)entry.
fonr & ULL(0x1)) << 1;
170 retval |= ((uint64_t)entry.
fonw & ULL(0x1))<< 2;
171 retval |= ((uint64_t)entry.
asma & ULL(0x1)) << 4;
172 retval |= ((uint64_t)entry.
asn & ULL(0x7f)) << 57;
186 panic(
"Tried to read write only register %d\n", idx);
191 panic(
"Tried to read from invalid ipr %d\n", idx);
239 assert(
ipr[idx] == 0);
270 ipr[idx] = val & 0xf;
275 ipr[idx] = val & 0x1f;
291 ipr[idx] = val & 0x18;
296 ipr[idx] = val & 0x18;
306 ipr[idx] = val & 0x7fff0;
310 ipr[idx] = val &
ULL(0xffffff0300);
315 ipr[idx] = val &
ULL(0xffffffffc0000000);
319 ipr[idx] = val & 0x1ffb;
324 ipr[idx] = val & 0x3f;
328 ipr[idx] = val & 0x7f0;
332 ipr[idx] = val &
ULL(0xfe00000000000000);
347 panic(
"Tried to write read only ipr %d\n", idx);
383 panic(
"PTE GH field != 0");
407 panic(
"PTE GH field != 0");
449 panic(
"Tried to write to invalid ipr %d\n", idx);
464 using namespace AlphaISA;
470 if (!(pc.
pc() & 0x3))
471 return std::make_shared<UnimplementedOpcodeFault>();
479 kernelStats->hwrei();
493 kernelStats->callpal(palFunc, tc);
int DTB_ASN_ASN(uint64_t reg)
decltype(nullptr) constexpr NoFault
void copyIprs(ThreadContext *src, ThreadContext *dest)
int DTB_PTE_FONR(uint64_t reg)
int ITB_PTE_GH(uint64_t reg)
int DTB_PTE_XRE(uint64_t reg)
int ITB_PTE_XRE(uint64_t reg)
InternalProcReg readIpr(int idx, ThreadContext *tc)
bool ITB_PTE_ASMA(uint64_t reg)
virtual FaultVect vect()=0
virtual MiscReg readMiscRegNoEffect(int misc_reg) const =0
InternalProcReg ipr[NumInternalProcRegs]
bool simPalCheck(int palFunc)
Check for special simulator handling of specific PAL calls.
Addr ITB_PTE_PPN(uint64_t reg)
bool ITB_PTE_FONR(uint64_t reg)
int DTB_PTE_ASMA(uint64_t reg)
virtual void setIntReg(int reg_idx, uint64_t val)=0
bool ITB_PTE_FONW(uint64_t reg)
virtual BaseCPU * getCpuPtr()=0
virtual TheISA::PCState pcState()=0
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Addr DTB_PTE_PPN(uint64_t reg)
void swAutoBegin(ThreadContext *tc, Addr next_pc)
void setIpr(int idx, InternalProcReg val, ThreadContext *tc)
void initCPU(ThreadContext *tc, int cpuId)
virtual TheISA::TLB * getDTBPtr()=0
int DTB_PTE_FONW(uint64_t reg)
void zeroRegisters(CPU *cpu)
#define ULL(N)
uint64_t constant
void initIPRs(ThreadContext *tc, int cpuId)
int ITB_ASN_ASN(uint64_t reg)
void exitSimLoop(const std::string &message, int exit_code, Tick when, Tick repeat, bool serialize)
Schedule an event to exit the simulation loop (returning to Python) at the end of the current cycle (...
static int numSystemsRunning
int DTB_PTE_GH(uint64_t reg)
int DTB_PTE_XWE(uint64_t reg)
virtual void setMiscRegNoEffect(int misc_reg, const MiscReg &val)=0
std::shared_ptr< FaultBase > Fault
virtual TheISA::TLB * getITBPtr()=0
virtual TheISA::Kernel::Statistics * getKernelStats()=0