tport.cc (4666:5d110d024fcf) | tport.cc (4670:54ac1fb49a26) |
---|---|
1/* 2 * Copyright (c) 2006 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; --- 55 unchanged lines hidden (view full) --- 64{ 65 // If the device is only a slave, it should only be sending 66 // responses, which should never get nacked. There used to be 67 // code to hanldle nacks here, but I'm pretty sure it didn't work 68 // correctly with the drain code, so that would need to be fixed 69 // if we ever added it back. 70 assert(pkt->isRequest()); 71 assert(pkt->result == Packet::Unknown); | 1/* 2 * Copyright (c) 2006 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; --- 55 unchanged lines hidden (view full) --- 64{ 65 // If the device is only a slave, it should only be sending 66 // responses, which should never get nacked. There used to be 67 // code to hanldle nacks here, but I'm pretty sure it didn't work 68 // correctly with the drain code, so that would need to be fixed 69 // if we ever added it back. 70 assert(pkt->isRequest()); 71 assert(pkt->result == Packet::Unknown); |
72 73 if (pkt->memInhibitAsserted()) { 74 // snooper will supply based on copy of packet 75 // still target's responsibility to delete packet 76 delete pkt->req; 77 delete pkt; 78 return true; 79 } 80 |
|
72 bool needsResponse = pkt->needsResponse(); 73 Tick latency = recvAtomic(pkt); 74 // turn packet around to go back to requester if response expected 75 if (needsResponse) { | 81 bool needsResponse = pkt->needsResponse(); 82 Tick latency = recvAtomic(pkt); 83 // turn packet around to go back to requester if response expected 84 if (needsResponse) { |
76 // recvAtomic() should already have turned packet into atomic response | 85 // recvAtomic() should already have turned packet into 86 // atomic response |
77 assert(pkt->isResponse()); 78 pkt->convertAtomicToTimingResponse(); 79 schedSendTiming(pkt, curTick + latency); 80 } else { 81 delete pkt->req; 82 delete pkt; 83 } | 87 assert(pkt->isResponse()); 88 pkt->convertAtomicToTimingResponse(); 89 schedSendTiming(pkt, curTick + latency); 90 } else { 91 delete pkt->req; 92 delete pkt; 93 } |
94 |
|
84 return true; 85} 86 87 88void 89SimpleTimingPort::schedSendTiming(PacketPtr pkt, Tick when) 90{ 91 assert(when > curTick); --- 87 unchanged lines hidden --- | 95 return true; 96} 97 98 99void 100SimpleTimingPort::schedSendTiming(PacketPtr pkt, Tick when) 101{ 102 assert(when > curTick); --- 87 unchanged lines hidden --- |