lsq_unit.hh (10239:592f0bb6bd6f) lsq_unit.hh (10327:5b6279635c49)
1/*
2 * Copyright (c) 2012-2013 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

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

757 stalled = true;
758 stallingStoreIsn = storeQueue[store_idx].inst->seqNum;
759 stallingLoadIdx = load_idx;
760 }
761
762 // Tell IQ/mem dep unit that this instruction will need to be
763 // rescheduled eventually
764 iewStage->rescheduleMemInst(load_inst);
1/*
2 * Copyright (c) 2012-2013 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

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

757 stalled = true;
758 stallingStoreIsn = storeQueue[store_idx].inst->seqNum;
759 stallingLoadIdx = load_idx;
760 }
761
762 // Tell IQ/mem dep unit that this instruction will need to be
763 // rescheduled eventually
764 iewStage->rescheduleMemInst(load_inst);
765 iewStage->decrWb(load_inst->seqNum);
766 load_inst->clearIssued();
767 ++lsqRescheduledLoads;
768
769 // Do not generate a writeback event as this instruction is not
770 // complete.
771 DPRINTF(LSQUnit, "Load-store forwarding mis-match. "
772 "Store idx %i to load addr %#x\n",
773 store_idx, req->getVaddr());

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

884 delete req;
885 if (TheISA::HasUnalignedMemAcc && sreqLow && !completedFirst) {
886 delete sreqLow;
887 delete sreqHigh;
888 }
889
890 ++lsqCacheBlocked;
891
765 load_inst->clearIssued();
766 ++lsqRescheduledLoads;
767
768 // Do not generate a writeback event as this instruction is not
769 // complete.
770 DPRINTF(LSQUnit, "Load-store forwarding mis-match. "
771 "Store idx %i to load addr %#x\n",
772 store_idx, req->getVaddr());

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

883 delete req;
884 if (TheISA::HasUnalignedMemAcc && sreqLow && !completedFirst) {
885 delete sreqLow;
886 delete sreqHigh;
887 }
888
889 ++lsqCacheBlocked;
890
892 // If the first part of a split access succeeds, then let the LSQ
893 // handle the decrWb when completeDataAccess is called upon return
894 // of the requested first part of data
895 if (!completedFirst)
896 iewStage->decrWb(load_inst->seqNum);
897
898 // There's an older load that's already going to squash.
899 if (isLoadBlocked && blockedLoadSeqNum < load_inst->seqNum)
900 return NoFault;
901
902 // Record that the load was blocked due to memory. This
903 // load will squash all instructions after it, be
904 // refetched, and re-executed.
905 isLoadBlocked = true;

--- 45 unchanged lines hidden ---
891 // There's an older load that's already going to squash.
892 if (isLoadBlocked && blockedLoadSeqNum < load_inst->seqNum)
893 return NoFault;
894
895 // Record that the load was blocked due to memory. This
896 // load will squash all instructions after it, be
897 // refetched, and re-executed.
898 isLoadBlocked = true;

--- 45 unchanged lines hidden ---