X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmem%2Fport.cc;h=fb1715db699dc9a282256908b6389bc6a7954333;hb=ea8b347dc5d375572d8d19770024ec8be5fd5017;hp=2e56d2486e66d9e698c0aa1de489dfaeeb84fe44;hpb=a84d9716d63e16e01bdcef34b115c6dcd20e4146;p=gem5.git diff --git a/src/mem/port.cc b/src/mem/port.cc index 2e56d2486..fb1715db6 100644 --- a/src/mem/port.cc +++ b/src/mem/port.cc @@ -36,64 +36,16 @@ #include "base/chunk_generator.hh" #include "base/trace.hh" +#include "debug/Config.hh" #include "mem/mem_object.hh" #include "mem/port.hh" -class defaultPeerPortClass: public Port -{ - protected: - void blowUp() - { - fatal("Unconnected port!"); - } - - public: - defaultPeerPortClass() : Port("default_port") - {} - - bool recvTiming(PacketPtr) - { - blowUp(); - return false; - } - - Tick recvAtomic(PacketPtr) - { - blowUp(); - return 0; - } - - void recvFunctional(PacketPtr) - { - blowUp(); - } - - void recvStatusChange(Status) - { - blowUp(); - } - - int deviceBlockSize() - { - blowUp(); - return 0; - } - - void getDeviceAddressRanges(AddrRangeList &, bool &) - { - blowUp(); - } - - bool isDefaultPort() { return true; } - -} defaultPeerPort; - -Port::Port() : peer(&defaultPeerPort), owner(NULL) +Port::Port(const std::string &_name, MemObject *_owner) + : portName(_name), peer(NULL), owner(_owner) { } -Port::Port(const std::string &_name, MemObject *_owner) : - portName(_name), peer(&defaultPeerPort), owner(_owner) +Port::~Port() { } @@ -101,15 +53,14 @@ void Port::setPeer(Port *port) { DPRINTF(Config, "setting peer to %s\n", port->name()); + peer = port; } void -Port::removeConn() +Port::setOwner(MemObject *_owner) { - if (peer->getOwner()) - peer->getOwner()->deletePortRefs(peer); - peer = NULL; + owner = _owner; } void @@ -150,3 +101,15 @@ Port::memsetBlob(Addr addr, uint8_t val, int size) delete [] buf; } + + +void +Port::printAddr(Addr a) +{ + Request req(a, 1, 0); + Packet pkt(&req, MemCmd::PrintReq, Packet::Broadcast); + Packet::PrintReqState prs(std::cerr); + pkt.senderState = &prs; + + sendFunctional(&pkt); +}