cpu_impl.hh (8832:247fee427324) cpu_impl.hh (8887:20ea02da9c53)
1/*
2 * Copyright (c) 2011 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

--- 230 unchanged lines hidden (view full) ---

239 fetch_PC = (fetch_PC & PCMask) + fetchOffset;
240
241 // If not in the middle of a macro instruction
242 if (!curMacroStaticInst) {
243 // set up memory request for instruction fetch
244 memReq = new Request(unverifiedInst->threadNumber, fetch_PC,
245 sizeof(MachInst),
246 0,
1/*
2 * Copyright (c) 2011 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

--- 230 unchanged lines hidden (view full) ---

239 fetch_PC = (fetch_PC & PCMask) + fetchOffset;
240
241 // If not in the middle of a macro instruction
242 if (!curMacroStaticInst) {
243 // set up memory request for instruction fetch
244 memReq = new Request(unverifiedInst->threadNumber, fetch_PC,
245 sizeof(MachInst),
246 0,
247 masterId,
247 fetch_PC, thread->contextId(),
248 unverifiedInst->threadNumber);
249 memReq->setVirt(0, fetch_PC, sizeof(MachInst),
250 Request::INST_FETCH, masterId, thread->instAddr());
251
252
253 fault = itb->translateFunctional(memReq, tc, BaseTLB::Execute);
254

--- 139 unchanged lines hidden (view full) ---

394 panic("%lli: sn: %lli at PC: %s took a fault in driver "
395 "CPU but not in checker\n", curTick(),
396 unverifiedInst->seqNum, unverifiedInst->pcState());
397 }
398 }
399
400 // Take any faults here
401 if (fault != NoFault) {
248 fetch_PC, thread->contextId(),
249 unverifiedInst->threadNumber);
250 memReq->setVirt(0, fetch_PC, sizeof(MachInst),
251 Request::INST_FETCH, masterId, thread->instAddr());
252
253
254 fault = itb->translateFunctional(memReq, tc, BaseTLB::Execute);
255

--- 139 unchanged lines hidden (view full) ---

395 panic("%lli: sn: %lli at PC: %s took a fault in driver "
396 "CPU but not in checker\n", curTick(),
397 unverifiedInst->seqNum, unverifiedInst->pcState());
398 }
399 }
400
401 // Take any faults here
402 if (fault != NoFault) {
402 fault->invoke(tc, curStaticInst);
403 willChangePC = true;
404 newPCState = thread->pcState();
405 DPRINTF(Checker, "Fault, PC is now %s\n", newPCState);
406 curMacroStaticInst = StaticInst::nullStaticInstPtr;
403 if (FullSystem) {
404 fault->invoke(tc, curStaticInst);
405 willChangePC = true;
406 newPCState = thread->pcState();
407 DPRINTF(Checker, "Fault, PC is now %s\n", newPCState);
408 curMacroStaticInst = StaticInst::nullStaticInstPtr;
409 }
407 } else {
408 advancePC(fault);
409 }
410
411 if (FullSystem) {
412 // @todo: Determine if these should happen only if the
413 // instruction hasn't faulted. In the SimpleCPU case this may
414 // not be true, but in the O3 or Ozone case this may be true.

--- 260 unchanged lines hidden ---
410 } else {
411 advancePC(fault);
412 }
413
414 if (FullSystem) {
415 // @todo: Determine if these should happen only if the
416 // instruction hasn't faulted. In the SimpleCPU case this may
417 // not be true, but in the O3 or Ozone case this may be true.

--- 260 unchanged lines hidden ---