port.cc (3918:1f9a98d198e8) port.cc (4022:c422464ca16e)
1/*
2 * Copyright (c) 2002-2005 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;

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

41void
42Port::setPeer(Port *port)
43{
44 DPRINTF(Config, "setting peer to %s\n", port->name());
45 peer = port;
46}
47
48void
1/*
2 * Copyright (c) 2002-2005 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;

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

41void
42Port::setPeer(Port *port)
43{
44 DPRINTF(Config, "setting peer to %s\n", port->name());
45 peer = port;
46}
47
48void
49Port::blobHelper(Addr addr, uint8_t *p, int size, Packet::Command cmd)
49Port::blobHelper(Addr addr, uint8_t *p, int size, MemCmd cmd)
50{
51 Request req;
52 Packet pkt(&req, cmd, Packet::Broadcast);
53
54 for (ChunkGenerator gen(addr, size, peerBlockSize());
55 !gen.done(); gen.next()) {
56 req.setPhys(gen.addr(), gen.size(), 0);
57 pkt.reinitFromRequest();
58 pkt.dataStatic(p);
59 sendFunctional(&pkt);
60 p += gen.size();
61 }
62}
63
64void
65Port::writeBlob(Addr addr, uint8_t *p, int size)
66{
50{
51 Request req;
52 Packet pkt(&req, cmd, Packet::Broadcast);
53
54 for (ChunkGenerator gen(addr, size, peerBlockSize());
55 !gen.done(); gen.next()) {
56 req.setPhys(gen.addr(), gen.size(), 0);
57 pkt.reinitFromRequest();
58 pkt.dataStatic(p);
59 sendFunctional(&pkt);
60 p += gen.size();
61 }
62}
63
64void
65Port::writeBlob(Addr addr, uint8_t *p, int size)
66{
67 blobHelper(addr, p, size, Packet::WriteReq);
67 blobHelper(addr, p, size, MemCmd::WriteReq);
68}
69
70void
71Port::readBlob(Addr addr, uint8_t *p, int size)
72{
68}
69
70void
71Port::readBlob(Addr addr, uint8_t *p, int size)
72{
73 blobHelper(addr, p, size, Packet::ReadReq);
73 blobHelper(addr, p, size, MemCmd::ReadReq);
74}
75
76void
77Port::memsetBlob(Addr addr, uint8_t val, int size)
78{
79 // quick and dirty...
80 uint8_t *buf = new uint8_t[size];
81
82 std::memset(buf, val, size);
74}
75
76void
77Port::memsetBlob(Addr addr, uint8_t val, int size)
78{
79 // quick and dirty...
80 uint8_t *buf = new uint8_t[size];
81
82 std::memset(buf, val, size);
83 blobHelper(addr, buf, size, Packet::WriteReq);
83 blobHelper(addr, buf, size, MemCmd::WriteReq);
84
85 delete [] buf;
86}
84
85 delete [] buf;
86}