1/*
2 * Copyright (c) 2002-2005 The Regents of The University of Michigan
3 * Copyright (c) 2010 Advanced Micro Devices, Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright

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

77 // since it would have been failed already if we didn't have a
78 // read-only copy
79 if (pkt->isUpgrade() || pkt->cmd == MemCmd::StoreCondReq) {
80 hasUpgrade = true;
81 }
82 }
83
84 if (markPending) {
85 MSHR *mshr = dynamic_cast<MSHR*>(pkt->senderState);
85 // Iterate over the SenderState stack and see if we find
86 // an MSHR entry. If we do, set the downstreamPending
87 // flag. Otherwise, do nothing.
88 MSHR *mshr = pkt->findNextSenderState<MSHR>();
89 if (mshr != NULL) {
90 assert(!mshr->downstreamPending);
91 mshr->downstreamPending = true;
92 }
93 }
94
95 push_back(Target(pkt, readyTime, order, source, markPending));
96}

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

128
129
130void
131MSHR::TargetList::clearDownstreamPending()
132{
133 Iterator end_i = end();
134 for (Iterator i = begin(); i != end_i; ++i) {
135 if (i->markedPending) {
133 MSHR *mshr = dynamic_cast<MSHR*>(i->pkt->senderState);
136 // Iterate over the SenderState stack and see if we find
137 // an MSHR entry. If we find one, clear the
138 // downstreamPending flag by calling
139 // clearDownstreamPending(). This recursively clears the
140 // downstreamPending flag in all caches this packet has
141 // passed through.
142 MSHR *mshr = i->pkt->findNextSenderState<MSHR>();
143 if (mshr != NULL) {
144 mshr->clearDownstreamPending();
145 }
146 }
147 }
148}
149
150

--- 324 unchanged lines hidden ---