lsq_unit_impl.hh (5529:9ae69b9cd7fd) lsq_unit_impl.hh (5606:6da7a58b0bc8)
1/*
2 * Copyright (c) 2004-2005 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;

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

40
41#if USE_CHECKER
42#include "cpu/checker/cpu.hh"
43#endif
44
45template<class Impl>
46LSQUnit<Impl>::WritebackEvent::WritebackEvent(DynInstPtr &_inst, PacketPtr _pkt,
47 LSQUnit *lsq_ptr)
1/*
2 * Copyright (c) 2004-2005 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;

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

40
41#if USE_CHECKER
42#include "cpu/checker/cpu.hh"
43#endif
44
45template<class Impl>
46LSQUnit<Impl>::WritebackEvent::WritebackEvent(DynInstPtr &_inst, PacketPtr _pkt,
47 LSQUnit *lsq_ptr)
48 : Event(&mainEventQueue), inst(_inst), pkt(_pkt), lsqPtr(lsq_ptr)
48 : inst(_inst), pkt(_pkt), lsqPtr(lsq_ptr)
49{
50 this->setFlags(Event::AutoDelete);
51}
52
53template<class Impl>
54void
55LSQUnit<Impl>::WritebackEvent::process()
56{

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

679 inst->recordResult = true;
680
681 if (!success) {
682 // Instantly complete this store.
683 DPRINTF(LSQUnit, "Store conditional [sn:%lli] failed. "
684 "Instantly completing it.\n",
685 inst->seqNum);
686 WritebackEvent *wb = new WritebackEvent(inst, data_pkt, this);
49{
50 this->setFlags(Event::AutoDelete);
51}
52
53template<class Impl>
54void
55LSQUnit<Impl>::WritebackEvent::process()
56{

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

679 inst->recordResult = true;
680
681 if (!success) {
682 // Instantly complete this store.
683 DPRINTF(LSQUnit, "Store conditional [sn:%lli] failed. "
684 "Instantly completing it.\n",
685 inst->seqNum);
686 WritebackEvent *wb = new WritebackEvent(inst, data_pkt, this);
687 wb->schedule(curTick + 1);
687 cpu->schedule(wb, curTick + 1);
688 completeStore(storeWBIdx);
689 incrStIdx(storeWBIdx);
690 continue;
691 }
692 } else {
693 // Non-store conditionals do not need a writeback.
694 state->noWB = true;
695 }

--- 320 unchanged lines hidden ---
688 completeStore(storeWBIdx);
689 incrStIdx(storeWBIdx);
690 continue;
691 }
692 } else {
693 // Non-store conditionals do not need a writeback.
694 state->noWB = true;
695 }

--- 320 unchanged lines hidden ---