Merge with main repository.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -209,17 +209,8 @@ class PioDevice : public MemObject
|
||||
|
||||
virtual unsigned int drain(Event *de);
|
||||
|
||||
virtual Port *getPort(const std::string &if_name, int idx = -1)
|
||||
{
|
||||
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;
|
||||
} else
|
||||
return NULL;
|
||||
}
|
||||
virtual Port *getPort(const std::string &if_name, int idx = -1);
|
||||
|
||||
friend class PioPort;
|
||||
|
||||
};
|
||||
@@ -285,24 +276,7 @@ class DmaDevice : public PioDevice
|
||||
|
||||
unsigned cacheBlockSize() const { return dmaPort->cacheBlockSize(); }
|
||||
|
||||
virtual Port *getPort(const std::string &if_name, int idx = -1)
|
||||
{
|
||||
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;
|
||||
} else 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;
|
||||
} else
|
||||
return NULL;
|
||||
}
|
||||
virtual Port *getPort(const std::string &if_name, int idx = -1);
|
||||
|
||||
friend class DmaPort;
|
||||
};
|
||||
|
||||
@@ -217,7 +217,7 @@ MC146818::serialize(const string &base, ostream &os)
|
||||
//
|
||||
Tick rtcTimerInterruptTickOffset = event.when() - curTick();
|
||||
SERIALIZE_SCALAR(rtcTimerInterruptTickOffset);
|
||||
Tick rtcClockTickOffset = event.when() - curTick();
|
||||
Tick rtcClockTickOffset = tickEvent.when() - curTick();
|
||||
SERIALIZE_SCALAR(rtcClockTickOffset);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user