bridge.cc (4469:1a5deb8fffd3) bridge.cc (4475:fb185cc1c845)
1
2/*
3 * Copyright (c) 2006 The Regents of The University of Michigan
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

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

107 return queuedRequests >= reqQueueLimit;
108}
109
110/** Function called by the port when the bus is receiving a Timing
111 * transaction.*/
112bool
113Bridge::BridgePort::recvTiming(PacketPtr pkt)
114{
1
2/*
3 * Copyright (c) 2006 The Regents of The University of Michigan
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

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

107 return queuedRequests >= reqQueueLimit;
108}
109
110/** Function called by the port when the bus is receiving a Timing
111 * transaction.*/
112bool
113Bridge::BridgePort::recvTiming(PacketPtr pkt)
114{
115 if (!(pkt->flags & SNOOP_COMMIT))
116 return true;
117
118
115 DPRINTF(BusBridge, "recvTiming: src %d dest %d addr 0x%x\n",
116 pkt->getSrc(), pkt->getDest(), pkt->getAddr());
117
118 DPRINTF(BusBridge, "Local queue size: %d outreq: %d outresp: %d\n",
119 sendQueue.size(), queuedRequests, outstandingResponses);
120 DPRINTF(BusBridge, "Remove queue size: %d outreq: %d outresp: %d\n",
121 otherPort->sendQueue.size(), otherPort->queuedRequests,
122 otherPort->outstandingResponses);

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

244 assert(!sendQueue.empty());
245
246 PacketBuffer *buf = sendQueue.front();
247
248 assert(buf->ready <= curTick);
249
250 PacketPtr pkt = buf->pkt;
251
119 DPRINTF(BusBridge, "recvTiming: src %d dest %d addr 0x%x\n",
120 pkt->getSrc(), pkt->getDest(), pkt->getAddr());
121
122 DPRINTF(BusBridge, "Local queue size: %d outreq: %d outresp: %d\n",
123 sendQueue.size(), queuedRequests, outstandingResponses);
124 DPRINTF(BusBridge, "Remove queue size: %d outreq: %d outresp: %d\n",
125 otherPort->sendQueue.size(), otherPort->queuedRequests,
126 otherPort->outstandingResponses);

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

248 assert(!sendQueue.empty());
249
250 PacketBuffer *buf = sendQueue.front();
251
252 assert(buf->ready <= curTick);
253
254 PacketPtr pkt = buf->pkt;
255
256 pkt->flags &= ~SNOOP_COMMIT; //CLear it if it was set
257
252 // Ugly! @todo When multilevel coherence works this will be removed
253 if (pkt->cmd == MemCmd::WriteInvalidateReq && fixPartialWrite &&
254 pkt->result != Packet::Nacked) {
255 PacketPtr funcPkt = new Packet(pkt->req, MemCmd::WriteReq,
256 Packet::Broadcast);
257 funcPkt->dataStatic(pkt->getPtr<uint8_t>());
258 sendFunctional(funcPkt);
259 pkt->cmd = MemCmd::WriteReq;

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

356void
357Bridge::BridgePort::recvStatusChange(Port::Status status)
358{
359 otherPort->sendStatusChange(status);
360}
361
362void
363Bridge::BridgePort::getDeviceAddressRanges(AddrRangeList &resp,
258 // Ugly! @todo When multilevel coherence works this will be removed
259 if (pkt->cmd == MemCmd::WriteInvalidateReq && fixPartialWrite &&
260 pkt->result != Packet::Nacked) {
261 PacketPtr funcPkt = new Packet(pkt->req, MemCmd::WriteReq,
262 Packet::Broadcast);
263 funcPkt->dataStatic(pkt->getPtr<uint8_t>());
264 sendFunctional(funcPkt);
265 pkt->cmd = MemCmd::WriteReq;

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

362void
363Bridge::BridgePort::recvStatusChange(Port::Status status)
364{
365 otherPort->sendStatusChange(status);
366}
367
368void
369Bridge::BridgePort::getDeviceAddressRanges(AddrRangeList &resp,
364 AddrRangeList &snoop)
370 bool &snoop)
365{
366 otherPort->getPeerAddressRanges(resp, snoop);
367}
368
369BEGIN_DECLARE_SIM_OBJECT_PARAMS(Bridge)
370
371 Param<int> req_size_a;
372 Param<int> req_size_b;

--- 43 unchanged lines hidden ---
371{
372 otherPort->getPeerAddressRanges(resp, snoop);
373}
374
375BEGIN_DECLARE_SIM_OBJECT_PARAMS(Bridge)
376
377 Param<int> req_size_a;
378 Param<int> req_size_b;

--- 43 unchanged lines hidden ---