lsq_unit_impl.hh (12216:70bb3ae0fbfc) lsq_unit_impl.hh (12217:0a16f4c03c02)
1
2/*
3 * Copyright (c) 2010-2014, 2017 ARM Limited
4 * Copyright (c) 2013 Advanced Micro Devices, Inc.
5 * All rights reserved
6 *
7 * The license below extends only to copyright in the software and shall
8 * not be construed as granting a license to any other intellectual

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

674 int load_idx = store_inst->lqIdx;
675
676 Fault store_fault = store_inst->initiateAcc();
677
678 if (store_inst->isTranslationDelayed() &&
679 store_fault == NoFault)
680 return store_fault;
681
1
2/*
3 * Copyright (c) 2010-2014, 2017 ARM Limited
4 * Copyright (c) 2013 Advanced Micro Devices, Inc.
5 * All rights reserved
6 *
7 * The license below extends only to copyright in the software and shall
8 * not be construed as granting a license to any other intellectual

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

674 int load_idx = store_inst->lqIdx;
675
676 Fault store_fault = store_inst->initiateAcc();
677
678 if (store_inst->isTranslationDelayed() &&
679 store_fault == NoFault)
680 return store_fault;
681
682 if (!store_inst->readPredicate())
682 if (!store_inst->readPredicate()) {
683 DPRINTF(LSQUnit, "Store [sn:%lli] not executed from predication\n",
684 store_inst->seqNum);
683 store_inst->forwardOldRegs();
685 store_inst->forwardOldRegs();
686 return store_fault;
687 }
684
685 if (storeQueue[store_idx].size == 0) {
686 DPRINTF(LSQUnit,"Fault on Store PC %s, [sn:%lli], Size = 0\n",
687 store_inst->pcState(), store_inst->seqNum);
688
689 return store_fault;
688
689 if (storeQueue[store_idx].size == 0) {
690 DPRINTF(LSQUnit,"Fault on Store PC %s, [sn:%lli], Size = 0\n",
691 store_inst->pcState(), store_inst->seqNum);
692
693 return store_fault;
690 } else if (!store_inst->readPredicate()) {
691 DPRINTF(LSQUnit, "Store [sn:%lli] not executed from predication\n",
692 store_inst->seqNum);
693 return store_fault;
694 }
695
696 assert(store_fault == NoFault);
697
698 if (store_inst->isStoreConditional()) {
699 // Store conditionals need to set themselves as able to
700 // writeback if we haven't had a fault by here.
701 storeQueue[store_idx].canWB = true;

--- 634 unchanged lines hidden ---
694 }
695
696 assert(store_fault == NoFault);
697
698 if (store_inst->isStoreConditional()) {
699 // Store conditionals need to set themselves as able to
700 // writeback if we haven't had a fault by here.
701 storeQueue[store_idx].canWB = true;

--- 634 unchanged lines hidden ---