port.cc (2632:1bb2f91485ea) | port.cc (2641:6d9d837e2032) |
---|---|
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; --- 21 unchanged lines hidden (view full) --- 30 * @file Port object definitions. 31 */ 32 33#include "base/chunk_generator.hh" 34#include "mem/packet_impl.hh" 35#include "mem/port.hh" 36 37void | 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; --- 21 unchanged lines hidden (view full) --- 30 * @file Port object definitions. 31 */ 32 33#include "base/chunk_generator.hh" 34#include "mem/packet_impl.hh" 35#include "mem/port.hh" 36 37void |
38Port::blobHelper(Addr addr, uint8_t *p, int size, Command cmd) | 38Port::blobHelper(Addr addr, uint8_t *p, int size, Packet::Command cmd) |
39{ 40 Request req(false); | 39{ 40 Request req(false); |
41 Packet pkt; 42 pkt.req = &req; 43 pkt.cmd = cmd; 44 pkt.dest = Packet::Broadcast; | 41 Packet pkt(&req, cmd, Packet::Broadcast); |
45 46 for (ChunkGenerator gen(addr, size, peerBlockSize()); 47 !gen.done(); gen.next()) { | 42 43 for (ChunkGenerator gen(addr, size, peerBlockSize()); 44 !gen.done(); gen.next()) { |
48 req.setPaddr(pkt.addr = gen.addr()); 49 req.setSize(pkt.size = gen.size()); | 45 req.setPaddr(gen.addr()); 46 req.setSize(gen.size()); 47 pkt.reinitFromRequest(); |
50 pkt.dataStatic(p); 51 sendFunctional(&pkt); 52 p += gen.size(); 53 } 54} 55 56void 57Port::writeBlob(Addr addr, uint8_t *p, int size) 58{ | 48 pkt.dataStatic(p); 49 sendFunctional(&pkt); 50 p += gen.size(); 51 } 52} 53 54void 55Port::writeBlob(Addr addr, uint8_t *p, int size) 56{ |
59 blobHelper(addr, p, size, Write); | 57 blobHelper(addr, p, size, Packet::WriteReq); |
60} 61 62void 63Port::readBlob(Addr addr, uint8_t *p, int size) 64{ | 58} 59 60void 61Port::readBlob(Addr addr, uint8_t *p, int size) 62{ |
65 blobHelper(addr, p, size, Read); | 63 blobHelper(addr, p, size, Packet::ReadReq); |
66} 67 68void 69Port::memsetBlob(Addr addr, uint8_t val, int size) 70{ 71 // quick and dirty... 72 uint8_t *buf = new uint8_t[size]; 73 74 memset(buf, val, size); | 64} 65 66void 67Port::memsetBlob(Addr addr, uint8_t val, int size) 68{ 69 // quick and dirty... 70 uint8_t *buf = new uint8_t[size]; 71 72 memset(buf, val, size); |
75 blobHelper(addr, buf, size, Write); | 73 blobHelper(addr, buf, size, Packet::WriteReq); |
76 77 delete [] buf; 78} | 74 75 delete [] buf; 76} |