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 --- |