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 ---