summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Schultz <alschult@umich.edu>2004-05-25 16:35:18 -0400
committerAndrew Schultz <alschult@umich.edu>2004-05-25 16:35:18 -0400
commitced021a78f28b4f44bb10233f4acd3a1cae81e2b (patch)
tree5dbf178b3a6a3a2524174330b41440ea50539a77
parent7c70a16c04202cc57e42b1b8baabcda40b6245b2 (diff)
downloadgem5-ced021a78f28b4f44bb10233f4acd3a1cae81e2b.tar.xz
Varied fixes to get linux running. Allow for shutdown on linux.
dev/ide_disk.cc: Fix to PIO writes and also add command needed for shutdown dev/pcidev.cc: Change the panic on write to read-only registers to a debug print. The kernel tries to write back over all of the PCI registers to restore the saved SRM state, so we need to let it do this without panicing. sim/system.cc: Add back increment of number of running systems to allow trap of halt work correctly. --HG-- extra : convert_revision : 84aba4effbec14545f3610c19a8e321d7e7f7cf2
-rw-r--r--dev/ide_disk.cc5
-rw-r--r--dev/pcidev.cc2
-rw-r--r--sim/system.cc3
3 files changed, 9 insertions, 1 deletions
diff --git a/dev/ide_disk.cc b/dev/ide_disk.cc
index 2205db9e3..ddd4a09e7 100644
--- a/dev/ide_disk.cc
+++ b/dev/ide_disk.cc
@@ -644,6 +644,7 @@ IdeDisk::startCommand()
case WIN_RECAL:
case WIN_SPECIFY:
+ case WIN_STANDBYNOW1:
case WIN_FLUSH_CACHE:
case WIN_VERIFY:
case WIN_SEEK:
@@ -960,6 +961,10 @@ IdeDisk::updateState(DevAction_t action)
cmdReg.status &= ~STATUS_DRQ_BIT;
devState = Prepare_Data_Out;
+
+ /** @todo change this to a scheduled event to simulate
+ disk delay */
+ updateState(ACT_DATA_READY);
}
}
break;
diff --git a/dev/pcidev.cc b/dev/pcidev.cc
index 9ac170b5c..9d6208d6b 100644
--- a/dev/pcidev.cc
+++ b/dev/pcidev.cc
@@ -247,7 +247,7 @@ PciDev::WriteConfig(int offset, int size, uint32_t data)
break;
default:
- panic("writing to a read only register");
+ DPRINTF(PCIDEV, "Writing to a read only register");
}
break;
}
diff --git a/sim/system.cc b/sim/system.cc
index 619593abd..b801cb254 100644
--- a/sim/system.cc
+++ b/sim/system.cc
@@ -52,6 +52,9 @@ System::System(const std::string _name,
bin(_bin),
binned_fns(binned_fns)
{
+ // increment the number of running systems
+ numSystemsRunning++;
+
// add self to global system list
systemList.push_back(this);
if (bin == true) {