faults.cc (8063:eea37fdcfc11) | faults.cc (8076:323e63527496) |
---|---|
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 --- 206 unchanged lines hidden (view full) --- 215FlushPipe::invoke(ThreadContext *tc, StaticInstPtr inst) { 216 DPRINTF(Faults, "Invoking FlushPipe Fault\n"); 217 218 // Set the PC to the next instruction of the faulting instruction. 219 // Net effect is simply squashing all instructions behind and 220 // start refetching from the next instruction. 221 PCState pc = tc->pcState(); 222 assert(inst); | 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 --- 206 unchanged lines hidden (view full) --- 215FlushPipe::invoke(ThreadContext *tc, StaticInstPtr inst) { 216 DPRINTF(Faults, "Invoking FlushPipe Fault\n"); 217 218 // Set the PC to the next instruction of the faulting instruction. 219 // Net effect is simply squashing all instructions behind and 220 // start refetching from the next instruction. 221 PCState pc = tc->pcState(); 222 assert(inst); |
223 pc.forcedItState(inst->machInst.newItstate); |
|
223 inst->advancePC(pc); 224 tc->pcState(pc); 225} 226 227template void AbortFault<PrefetchAbort>::invoke(ThreadContext *tc, 228 StaticInstPtr inst); 229template void AbortFault<DataAbort>::invoke(ThreadContext *tc, 230 StaticInstPtr inst); 231 232// return via SUBS pc, lr, xxx; rfe, movs, ldm 233 234} // namespace ArmISA | 224 inst->advancePC(pc); 225 tc->pcState(pc); 226} 227 228template void AbortFault<PrefetchAbort>::invoke(ThreadContext *tc, 229 StaticInstPtr inst); 230template void AbortFault<DataAbort>::invoke(ThreadContext *tc, 231 StaticInstPtr inst); 232 233// return via SUBS pc, lr, xxx; rfe, movs, ldm 234 235} // namespace ArmISA |