diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2012-01-07 02:10:34 -0800 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2012-01-07 02:10:34 -0800 |
commit | 36a822f08e88483b41af214ace4fd3dccf3aa8cb (patch) | |
tree | d7c4c08590459d967a1d7638b02c586911826953 /src/dev/io_device.cc | |
parent | 85424bef192c02a47c0d46c2d99ac0a5d6e55a99 (diff) | |
parent | f171a29118e1d80c04c72d2fb5f024fed4fb62af (diff) | |
download | gem5-36a822f08e88483b41af214ace4fd3dccf3aa8cb.tar.xz |
Merge with main repository.
Diffstat (limited to 'src/dev/io_device.cc')
-rw-r--r-- | src/dev/io_device.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/dev/io_device.cc b/src/dev/io_device.cc index 3c64e2717..62e4a9c37 100644 --- a/src/dev/io_device.cc +++ b/src/dev/io_device.cc @@ -75,6 +75,18 @@ PioDevice::init() pioPort->sendStatusChange(Port::RangeChange); } +Port * +PioDevice::getPort(const std::string &if_name, int idx) +{ + if (if_name == "pio") { + if (pioPort != NULL) + fatal("%s: pio port already connected to %s", + name(), pioPort->getPeer()->name()); + pioPort = new PioPort(this, sys); + return pioPort; + } + return NULL; +} unsigned int PioDevice::drain(Event *de) @@ -349,3 +361,19 @@ DmaDevice::~DmaDevice() if (dmaPort) delete dmaPort; } + + +Port * +DmaDevice::getPort(const std::string &if_name, int idx) +{ + if (if_name == "dma") { + if (dmaPort != NULL) + fatal("%s: dma port already connected to %s", + name(), dmaPort->getPeer()->name()); + dmaPort = new DmaPort(this, sys, params()->min_backoff_delay, + params()->max_backoff_delay); + return dmaPort; + } + return PioDevice::getPort(if_name, idx); +} + |