mshr.cc (9086:496304c8017d) mshr.cc (9543:a373b2e664ff)
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) {
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>();
86 if (mshr != NULL) {
87 assert(!mshr->downstreamPending);
88 mshr->downstreamPending = true;
89 }
90 }
91
92 push_back(Target(pkt, readyTime, order, source, markPending));
93}

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

125
126
127void
128MSHR::TargetList::clearDownstreamPending()
129{
130 Iterator end_i = end();
131 for (Iterator i = begin(); i != end_i; ++i) {
132 if (i->markedPending) {
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>();
134 if (mshr != NULL) {
135 mshr->clearDownstreamPending();
136 }
137 }
138 }
139}
140
141

--- 324 unchanged lines hidden ---
143 if (mshr != NULL) {
144 mshr->clearDownstreamPending();
145 }
146 }
147 }
148}
149
150

--- 324 unchanged lines hidden ---