diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2006-04-10 14:40:22 -0400 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2006-04-10 14:40:22 -0400 |
commit | 93b271117f8fc93b844b08934ee8fcfa5224053d (patch) | |
tree | 5d39d3794fd2d60c56c56fff8fba2059c71a8287 | |
parent | e17a15f4c5d9a0b65de5e4b0ddceac81385d5360 (diff) | |
download | gem5-93b271117f8fc93b844b08934ee8fcfa5224053d.tar.xz |
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
-rw-r--r-- | dev/io_device.cc | 7 | ||||
-rw-r--r-- | dev/io_device.hh | 2 | ||||
-rw-r--r-- | mem/physical.cc | 8 | ||||
-rw-r--r-- | mem/physical.hh | 2 |
4 files changed, 18 insertions, 1 deletions
diff --git a/dev/io_device.cc b/dev/io_device.cc index 15c835ded..478c9c66e 100644 --- a/dev/io_device.cc +++ b/dev/io_device.cc @@ -88,6 +88,13 @@ PioDevice::~PioDevice() delete pioPort; } +PioDevice::init() +{ + if (!pioPort) + panic("Pio port not connected to anything!"); + pioPort->sendStatusChange(Port::RangeChange); +} + void BasicPioDevice::addressRanges(AddrRangeList &range_list) { diff --git a/dev/io_device.hh b/dev/io_device.hh index b787fa4fd..1e9a49899 100644 --- a/dev/io_device.hh +++ b/dev/io_device.hh @@ -229,6 +229,8 @@ class PioDevice : public SimObject virtual ~PioDevice(); + virtual void init(); + virtual Port *getPort(const std::string &if_name) { if (if_name == "pio") { diff --git a/mem/physical.cc b/mem/physical.cc index 603f8f63e..b00935990 100644 --- a/mem/physical.cc +++ b/mem/physical.cc @@ -90,6 +90,14 @@ PhysicalMemory::PhysicalMemory(const string &n) page_ptr = 0; } +void +PhysicalMemory::init() +{ + if (!port) + panic("PhysicalMemory not connected to anything!"); + port->sendStatusChange(Port::RangeChange); +} + PhysicalMemory::~PhysicalMemory() { if (pmem_addr) diff --git a/mem/physical.hh b/mem/physical.hh index 53e86f85f..ce0a2099c 100644 --- a/mem/physical.hh +++ b/mem/physical.hh @@ -107,7 +107,7 @@ class PhysicalMemory : public MemObject int deviceBlockSize(); void getAddressRanges(AddrRangeList &resp, AddrRangeList &snoop); 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. // uint64_t phys_read_qword(Addr addr) const; |