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; --- 55 unchanged lines hidden (view full) --- 64 * have to be created. 65 * 66 * Recv accesor functions are being called from the peer interface. 67 * Send accessor functions are being called from the device the port is 68 * associated with, and it will call the peer recv. accessor function. 69 */ 70class Port 71{ |
72 private: 73 74 /** Descriptive name (for DPRINTF output) */ 75 const std::string portName; 76 |
77 public: 78 |
79 /** 80 * Constructor. 81 * 82 * @param _name Port name for DPRINTF output. Should include name 83 * of memory system object to which the port belongs. 84 */ 85 Port(const std::string &_name) 86 : portName(_name) 87 { } 88 89 /** Return port name (for DPRINTF). */ 90 const std::string &name() const { return portName; } 91 |
92 virtual ~Port() {}; |
93 |
94 // mey be better to use subclasses & RTTI? 95 /** Holds the ports status. Keeps track if it is blocked, or has 96 calculated a range change. */ 97 enum Status { 98 Blocked, 99 Unblocked, 100 RangeChange 101 }; --- 136 unchanged lines hidden (view full) --- 238/** A simple functional port that is only meant for one way communication to 239 * physical memory. It is only meant to be used to load data into memory before 240 * the simulation begins. 241 */ 242 243class FunctionalPort : public Port 244{ 245 public: |
246 FunctionalPort(const std::string &_name) 247 : Port(_name) 248 {} 249 |
250 virtual bool recvTiming(Packet *pkt) { panic("FuncPort is UniDir"); } 251 virtual Tick recvAtomic(Packet *pkt) { panic("FuncPort is UniDir"); } 252 virtual void recvFunctional(Packet *pkt) { panic("FuncPort is UniDir"); } 253 virtual void recvStatusChange(Status status) {} 254 255 template <typename T> 256 inline void write(Addr addr, T d) 257 { --- 13 unchanged lines hidden --- |