faults.cc (7400:f6c9b27c4dbe) | faults.cc (7412:b62d0343ad8f) |
---|---|
1/* 2 * Copyright (c) 2010 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 129 unchanged lines hidden (view full) --- 138 139 Addr pc = tc->readPC(); 140 Addr newPc = getVector(tc) | (sctlr.te ? (ULL(1) << PcTBitShift) : 0); 141 DPRINTF(Faults, "Invoking Fault: %s cpsr: %#x PC: %#x lr: %#x newVector: %#x\n", 142 name(), cpsr, pc, tc->readIntReg(INTREG_LR), newPc); 143 tc->setPC(newPc); 144 tc->setNextPC(newPc + cpsr.t ? 2 : 4 ); 145 tc->setMicroPC(0); | 1/* 2 * Copyright (c) 2010 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 129 unchanged lines hidden (view full) --- 138 139 Addr pc = tc->readPC(); 140 Addr newPc = getVector(tc) | (sctlr.te ? (ULL(1) << PcTBitShift) : 0); 141 DPRINTF(Faults, "Invoking Fault: %s cpsr: %#x PC: %#x lr: %#x newVector: %#x\n", 142 name(), cpsr, pc, tc->readIntReg(INTREG_LR), newPc); 143 tc->setPC(newPc); 144 tc->setNextPC(newPc + cpsr.t ? 2 : 4 ); 145 tc->setMicroPC(0); |
146 tc->setNextMicroPC(1); |
|
146} 147 148void 149Reset::invoke(ThreadContext *tc) 150{ 151 tc->getCpuPtr()->clearInterrupts(); 152 tc->clearArchRegs(); 153 ArmFault::invoke(tc); --- 30 unchanged lines hidden (view full) --- 184 if (callNum == 0) { 185 callNum = tc->readIntReg(INTREG_R7); 186 } 187 tc->syscall(callNum); 188 189 // Advance the PC since that won't happen automatically. 190 tc->setPC(tc->readNextPC()); 191 tc->setNextPC(tc->readNextNPC()); | 147} 148 149void 150Reset::invoke(ThreadContext *tc) 151{ 152 tc->getCpuPtr()->clearInterrupts(); 153 tc->clearArchRegs(); 154 ArmFault::invoke(tc); --- 30 unchanged lines hidden (view full) --- 185 if (callNum == 0) { 186 callNum = tc->readIntReg(INTREG_R7); 187 } 188 tc->syscall(callNum); 189 190 // Advance the PC since that won't happen automatically. 191 tc->setPC(tc->readNextPC()); 192 tc->setNextPC(tc->readNextNPC()); |
193 tc->setMicroPC(0); 194 tc->setNextMicroPC(1); |
|
192} 193 194#endif // FULL_SYSTEM 195 196template<class T> 197void 198AbortFault<T>::invoke(ThreadContext *tc) 199{ --- 20 unchanged lines hidden --- | 195} 196 197#endif // FULL_SYSTEM 198 199template<class T> 200void 201AbortFault<T>::invoke(ThreadContext *tc) 202{ --- 20 unchanged lines hidden --- |