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, |
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) { |
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 } |
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 --- |