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 --- |