Panic if physical memory isn't connected to anything

send range change at init for all devices

dev/io_device.cc:
dev/io_device.hh:
    add init function for pio devices to sent status changes around
mem/physical.cc:
mem/physical.hh:
    Panic if physical memory isn't connected to anything

--HG--
extra : convert_revision : 4223d1c3c73522d1e196c218eb0084d238677ad9
This commit is contained in:
Ali Saidi 2006-04-10 14:40:22 -04:00
parent e17a15f4c5
commit 93b271117f
4 changed files with 18 additions and 1 deletions

View file

@ -88,6 +88,13 @@ PioDevice::~PioDevice()
delete pioPort; delete pioPort;
} }
PioDevice::init()
{
if (!pioPort)
panic("Pio port not connected to anything!");
pioPort->sendStatusChange(Port::RangeChange);
}
void void
BasicPioDevice::addressRanges(AddrRangeList &range_list) BasicPioDevice::addressRanges(AddrRangeList &range_list)
{ {

View file

@ -229,6 +229,8 @@ class PioDevice : public SimObject
virtual ~PioDevice(); virtual ~PioDevice();
virtual void init();
virtual Port *getPort(const std::string &if_name) virtual Port *getPort(const std::string &if_name)
{ {
if (if_name == "pio") { if (if_name == "pio") {

View file

@ -90,6 +90,14 @@ PhysicalMemory::PhysicalMemory(const string &n)
page_ptr = 0; page_ptr = 0;
} }
void
PhysicalMemory::init()
{
if (!port)
panic("PhysicalMemory not connected to anything!");
port->sendStatusChange(Port::RangeChange);
}
PhysicalMemory::~PhysicalMemory() PhysicalMemory::~PhysicalMemory()
{ {
if (pmem_addr) if (pmem_addr)

View file

@ -107,7 +107,7 @@ class PhysicalMemory : public MemObject
int deviceBlockSize(); int deviceBlockSize();
void getAddressRanges(AddrRangeList &resp, AddrRangeList &snoop); void getAddressRanges(AddrRangeList &resp, AddrRangeList &snoop);
virtual Port *getPort(const std::string &if_name); virtual Port *getPort(const std::string &if_name);
void virtual init() { port->sendStatusChange(Port::RangeChange); } void virtual init();
// fast back-door memory access for vtophys(), remote gdb, etc. // fast back-door memory access for vtophys(), remote gdb, etc.
// uint64_t phys_read_qword(Addr addr) const; // uint64_t phys_read_qword(Addr addr) const;