cpu_impl.hh (3125:febd811bccc6) cpu_impl.hh (3126:756092c6383c)
1/*
2 * Copyright (c) 2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

398template <class DynInstPtr>
399void
400Checker<DynInstPtr>::validateState()
401{
402 if (updateThisCycle) {
403 warn("%lli: Instruction PC %#x results didn't match up, copying all "
404 "registers from main CPU", curTick, unverifiedInst->readPC());
405 // Heavy-weight copying of all registers
1/*
2 * Copyright (c) 2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

398template <class DynInstPtr>
399void
400Checker<DynInstPtr>::validateState()
401{
402 if (updateThisCycle) {
403 warn("%lli: Instruction PC %#x results didn't match up, copying all "
404 "registers from main CPU", curTick, unverifiedInst->readPC());
405 // Heavy-weight copying of all registers
406 cpuXC->copyArchRegs(unverifiedInst->xcBase());
406 thread->copyArchRegs(unverifiedInst->tcBase());
407 // Also advance the PC. Hopefully no PC-based events happened.
408#if THE_ISA != MIPS_ISA
409 // go to the next instruction
407 // Also advance the PC. Hopefully no PC-based events happened.
408#if THE_ISA != MIPS_ISA
409 // go to the next instruction
410 cpuXC->setPC(cpuXC->readNextPC());
411 cpuXC->setNextPC(cpuXC->readNextPC() + sizeof(MachInst));
410 thread->setPC(thread->readNextPC());
411 thread->setNextPC(thread->readNextPC() + sizeof(MachInst));
412#else
413 // go to the next instruction
412#else
413 // go to the next instruction
414 cpuXC->setPC(cpuXC->readNextPC());
415 cpuXC->setNextPC(cpuXC->readNextNPC());
416 cpuXC->setNextNPC(cpuXC->readNextNPC() + sizeof(MachInst));
414 thread->setPC(thread->readNextPC());
415 thread->setNextPC(thread->readNextNPC());
416 thread->setNextNPC(thread->readNextNPC() + sizeof(MachInst));
417#endif
418 updateThisCycle = false;
417#endif
418 updateThisCycle = false;
419 }
419}
420
421template <class DynInstPtr>
422void
423Checker<DynInstPtr>::copyResult(DynInstPtr &inst)
424{
425 RegIndex idx = inst->destRegIdx(0);
426 if (idx < TheISA::FP_Base_DepTag) {

--- 53 unchanged lines hidden ---
420}
421
422template <class DynInstPtr>
423void
424Checker<DynInstPtr>::copyResult(DynInstPtr &inst)
425{
426 RegIndex idx = inst->destRegIdx(0);
427 if (idx < TheISA::FP_Base_DepTag) {

--- 53 unchanged lines hidden ---