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