projects
/
gem5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed a bug where a packet was attempted to be sent even though another packet was...
[gem5.git]
/
src
/
mem
/
port.cc
diff --git
a/src/mem/port.cc
b/src/mem/port.cc
index fb3103ed158ced5f02f25463b4edcce6d7a842ff..17924b7597a8c4ef0f3dfca7d3cac8fef15b4c56 100644
(file)
--- a/
src/mem/port.cc
+++ b/
src/mem/port.cc
@@
-24,29
+24,37
@@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Steve Reinhardt
*/
/**
*/
/**
- * @file Port object definitions.
+ * @file
+ * Port object definitions.
*/
#include "base/chunk_generator.hh"
*/
#include "base/chunk_generator.hh"
+#include "base/trace.hh"
#include "mem/packet_impl.hh"
#include "mem/port.hh"
void
#include "mem/packet_impl.hh"
#include "mem/port.hh"
void
-Port::blobHelper(Addr addr, uint8_t *p, int size, Command cmd)
+Port::setPeer(Port *port)
+{
+ DPRINTF(Config, "setting peer to %s\n", port->name());
+ peer = port;
+}
+
+void
+Port::blobHelper(Addr addr, uint8_t *p, int size, Packet::Command cmd)
{
{
- Request req(false);
- Packet pkt;
- pkt.req = &req;
- pkt.cmd = cmd;
- pkt.dest = Packet::Broadcast;
+ Request req;
+ Packet pkt(&req, cmd, Packet::Broadcast);
for (ChunkGenerator gen(addr, size, peerBlockSize());
!gen.done(); gen.next()) {
for (ChunkGenerator gen(addr, size, peerBlockSize());
!gen.done(); gen.next()) {
- req.setP
addr(pkt.addr = gen.addr()
);
-
req.setSize(pkt.size = gen.size()
);
+ req.setP
hys(gen.addr(), gen.size(), 0
);
+
pkt.reinitFromRequest(
);
pkt.dataStatic(p);
sendFunctional(&pkt);
p += gen.size();
pkt.dataStatic(p);
sendFunctional(&pkt);
p += gen.size();
@@
-56,13
+64,13
@@
Port::blobHelper(Addr addr, uint8_t *p, int size, Command cmd)
void
Port::writeBlob(Addr addr, uint8_t *p, int size)
{
void
Port::writeBlob(Addr addr, uint8_t *p, int size)
{
- blobHelper(addr, p, size,
Write
);
+ blobHelper(addr, p, size,
Packet::WriteReq
);
}
void
Port::readBlob(Addr addr, uint8_t *p, int size)
{
}
void
Port::readBlob(Addr addr, uint8_t *p, int size)
{
- blobHelper(addr, p, size,
Read
);
+ blobHelper(addr, p, size,
Packet::ReadReq
);
}
void
}
void
@@
-72,7
+80,7
@@
Port::memsetBlob(Addr addr, uint8_t val, int size)
uint8_t *buf = new uint8_t[size];
memset(buf, val, size);
uint8_t *buf = new uint8_t[size];
memset(buf, val, size);
- blobHelper(addr, buf, size,
Write
);
+ blobHelper(addr, buf, size,
Packet::WriteReq
);
delete [] buf;
}
delete [] buf;
}