Lines Matching refs:tc

48 RiscvFault::invokeSE(ThreadContext *tc, const StaticInstPtr &inst)
50 panic("Fault %s encountered at pc 0x%016llx.", name(), tc->pcState().pc());
54 RiscvFault::invoke(ThreadContext *tc, const StaticInstPtr &inst)
56 PCState pcState = tc->pcState();
59 PrivilegeMode pp = (PrivilegeMode)tc->readMiscReg(MISCREG_PRV);
61 STATUS status = tc->readMiscReg(MISCREG_STATUS);
66 bits(tc->readMiscReg(MISCREG_MIDELEG), _code) != 0) {
70 bits(tc->readMiscReg(MISCREG_SIDELEG), _code) != 0) {
75 bits(tc->readMiscReg(MISCREG_MEDELEG), _code) != 0) {
79 bits(tc->readMiscReg(MISCREG_SEDELEG), _code) != 0) {
122 tc->setMiscReg(cause,
124 tc->setMiscReg(epc, tc->instAddr());
125 tc->setMiscReg(tval, trap_value());
126 tc->setMiscReg(MISCREG_PRV, prv);
127 tc->setMiscReg(MISCREG_STATUS, status);
130 Addr addr = tc->readMiscReg(tvec) >> 2;
131 if (isInterrupt() && bits(tc->readMiscReg(tvec), 1, 0) == 1)
135 invokeSE(tc, inst);
138 tc->pcState(pcState);
141 void Reset::invoke(ThreadContext *tc, const StaticInstPtr &inst)
143 tc->setMiscReg(MISCREG_PRV, PRV_M);
144 STATUS status = tc->readMiscReg(MISCREG_STATUS);
147 tc->setMiscReg(MISCREG_STATUS, status);
148 tc->setMiscReg(MISCREG_MCAUSE, 0);
151 PCState pc = static_cast<RiscvSystem *>(tc->getSystemPtr())->resetVect();
152 tc->pcState(pc);
156 UnknownInstFault::invokeSE(ThreadContext *tc, const StaticInstPtr &inst)
159 tc->pcState().pc());
163 IllegalInstFault::invokeSE(ThreadContext *tc, const StaticInstPtr &inst)
166 tc->pcState().pc(), reason.c_str());
170 UnimplementedFault::invokeSE(ThreadContext *tc,
174 tc->pcState().pc());
178 IllegalFrmFault::invokeSE(ThreadContext *tc, const StaticInstPtr &inst)
181 frm, tc->pcState().pc());
185 BreakpointFault::invokeSE(ThreadContext *tc, const StaticInstPtr &inst)
191 SyscallFault::invokeSE(ThreadContext *tc, const StaticInstPtr &inst)
194 tc->syscall(tc->readIntReg(SyscallNumReg), fault);