lsq_unit_impl.hh (7823:dac01f14f20f) lsq_unit_impl.hh (7848:cc5e64f8423f)
1/*
2 * Copyright (c) 2010 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

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

453
454 // If the instruction faulted or predicated false, then we need to send it
455 // along to commit without the instruction completing.
456 if (load_fault != NoFault || inst->readPredicate() == false) {
457 // Send this instruction to commit, also make sure iew stage
458 // realizes there is activity.
459 // Mark it as executed unless it is an uncached load that
460 // needs to hit the head of commit.
1/*
2 * Copyright (c) 2010 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

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

453
454 // If the instruction faulted or predicated false, then we need to send it
455 // along to commit without the instruction completing.
456 if (load_fault != NoFault || inst->readPredicate() == false) {
457 // Send this instruction to commit, also make sure iew stage
458 // realizes there is activity.
459 // Mark it as executed unless it is an uncached load that
460 // needs to hit the head of commit.
461 if (inst->readPredicate() == false)
462 inst->forwardOldRegs();
461 DPRINTF(LSQUnit, "Load [sn:%lli] not executed from %s\n",
462 inst->seqNum,
463 (load_fault != NoFault ? "fault" : "predication"));
464 if (!(inst->hasRequest() && inst->uncacheable()) ||
465 inst->isAtCommit()) {
466 inst->setExecuted();
467 }
468 iewStage->instToCommit(inst);

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

525 assert(!store_inst->isSquashed());
526
527 // Check the recently completed loads to see if any match this store's
528 // address. If so, then we have a memory ordering violation.
529 int load_idx = store_inst->lqIdx;
530
531 Fault store_fault = store_inst->initiateAcc();
532
463 DPRINTF(LSQUnit, "Load [sn:%lli] not executed from %s\n",
464 inst->seqNum,
465 (load_fault != NoFault ? "fault" : "predication"));
466 if (!(inst->hasRequest() && inst->uncacheable()) ||
467 inst->isAtCommit()) {
468 inst->setExecuted();
469 }
470 iewStage->instToCommit(inst);

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

527 assert(!store_inst->isSquashed());
528
529 // Check the recently completed loads to see if any match this store's
530 // address. If so, then we have a memory ordering violation.
531 int load_idx = store_inst->lqIdx;
532
533 Fault store_fault = store_inst->initiateAcc();
534
535 if (store_inst->readPredicate() == false)
536 store_inst->forwardOldRegs();
537
533 if (storeQueue[store_idx].size == 0) {
534 DPRINTF(LSQUnit,"Fault on Store PC %s, [sn:%lli], Size = 0\n",
535 store_inst->pcState(), store_inst->seqNum);
536
537 return store_fault;
538 } else if (store_inst->readPredicate() == false) {
539 DPRINTF(LSQUnit, "Store [sn:%lli] not executed from predication\n",
540 store_inst->seqNum);

--- 640 unchanged lines hidden ---
538 if (storeQueue[store_idx].size == 0) {
539 DPRINTF(LSQUnit,"Fault on Store PC %s, [sn:%lli], Size = 0\n",
540 store_inst->pcState(), store_inst->seqNum);
541
542 return store_fault;
543 } else if (store_inst->readPredicate() == false) {
544 DPRINTF(LSQUnit, "Store [sn:%lli] not executed from predication\n",
545 store_inst->seqNum);

--- 640 unchanged lines hidden ---