cpu_impl.hh (3484:9b7ac1654430) | cpu_impl.hh (4172:141705d83494) |
---|---|
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; --- 372 unchanged lines hidden (view full) --- 381 // checked simultaneously with the execution of the instruction. 382 // This is because other valid instructions may have modified 383 // these registers in the meantime, and their values are not 384 // stored within the DynInst. 385 while (!miscRegIdxs.empty()) { 386 int misc_reg_idx = miscRegIdxs.front(); 387 miscRegIdxs.pop(); 388 | 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; --- 372 unchanged lines hidden (view full) --- 381 // checked simultaneously with the execution of the instruction. 382 // This is because other valid instructions may have modified 383 // these registers in the meantime, and their values are not 384 // stored within the DynInst. 385 while (!miscRegIdxs.empty()) { 386 int misc_reg_idx = miscRegIdxs.front(); 387 miscRegIdxs.pop(); 388 |
389 if (inst->tcBase()->readMiscReg(misc_reg_idx) != 390 thread->readMiscReg(misc_reg_idx)) { | 389 if (inst->tcBase()->readMiscRegNoEffect(misc_reg_idx) != 390 thread->readMiscRegNoEffect(misc_reg_idx)) { |
391 warn("%lli: Misc reg idx %i (side effect) does not match! " 392 "Inst: %#x, checker: %#x", 393 curTick, misc_reg_idx, | 391 warn("%lli: Misc reg idx %i (side effect) does not match! " 392 "Inst: %#x, checker: %#x", 393 curTick, misc_reg_idx, |
394 inst->tcBase()->readMiscReg(misc_reg_idx), 395 thread->readMiscReg(misc_reg_idx)); | 394 inst->tcBase()->readMiscRegNoEffect(misc_reg_idx), 395 thread->readMiscRegNoEffect(misc_reg_idx)); |
396 handleError(inst); 397 } 398 } 399} 400 401template <class DynInstPtr> 402void 403Checker<DynInstPtr>::validateState() --- 23 unchanged lines hidden (view full) --- 427Checker<DynInstPtr>::copyResult(DynInstPtr &inst) 428{ 429 RegIndex idx = inst->destRegIdx(0); 430 if (idx < TheISA::FP_Base_DepTag) { 431 thread->setIntReg(idx, inst->readIntResult()); 432 } else if (idx < TheISA::Fpcr_DepTag) { 433 thread->setFloatRegBits(idx, inst->readIntResult()); 434 } else { | 396 handleError(inst); 397 } 398 } 399} 400 401template <class DynInstPtr> 402void 403Checker<DynInstPtr>::validateState() --- 23 unchanged lines hidden (view full) --- 427Checker<DynInstPtr>::copyResult(DynInstPtr &inst) 428{ 429 RegIndex idx = inst->destRegIdx(0); 430 if (idx < TheISA::FP_Base_DepTag) { 431 thread->setIntReg(idx, inst->readIntResult()); 432 } else if (idx < TheISA::Fpcr_DepTag) { 433 thread->setFloatRegBits(idx, inst->readIntResult()); 434 } else { |
435 thread->setMiscReg(idx, inst->readIntResult()); | 435 thread->setMiscRegNoEffect(idx, inst->readIntResult()); |
436 } 437} 438 439template <class DynInstPtr> 440void 441Checker<DynInstPtr>::dumpAndExit(DynInstPtr &inst) 442{ 443 cprintf("Error detected, instruction information:\n"); --- 40 unchanged lines hidden --- | 436 } 437} 438 439template <class DynInstPtr> 440void 441Checker<DynInstPtr>::dumpAndExit(DynInstPtr &inst) 442{ 443 cprintf("Error detected, instruction information:\n"); --- 40 unchanged lines hidden --- |