diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2006-04-20 17:14:30 -0400 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2006-04-20 17:14:30 -0400 |
commit | 6dc3b2fa395601852cb3efff302229907b1759f8 (patch) | |
tree | 466acd07de93a29ce641b85a967a4af3cd308599 /dev/pciconfigall.cc | |
parent | 9a415916932f43e31b3044724b8741cd06ed9182 (diff) | |
download | gem5-6dc3b2fa395601852cb3efff302229907b1759f8.tar.xz |
make ide disk work for newmem
SConscript:
compile ide devices
base/chunk_generator.hh:
add another parameter to the chuck generator called complete() which
returns the number of bytes transfered so far. Very useful for
adding to a pointer.
configs/test/fs.py:
Add ide disk to fs test configuration
dev/ide_ctrl.cc:
dev/ide_ctrl.hh:
dev/ide_disk.cc:
dev/ide_disk.hh:
dev/io_device.cc:
dev/io_device.hh:
dev/pciconfigall.cc:
dev/pciconfigall.hh:
dev/pcidev.cc:
dev/pcidev.hh:
update for new memory system
mem/bus.cc:
support devices that return multiple ranges
remove old ranges before using new info
mem/packet.hh:
make senderstate void* per steve's request that we use every
construct possible in C++
mem/physical.cc:
have memory stamp the packet with the time.
mem/physical.hh:
actually set the memory latency variable
python/m5/objects/Device.py:
Add DmaDevice
python/m5/objects/Ide.py:
Ide disk no longer has a physmem pointer
python/m5/objects/Pci.py:
update pci device for newmem
python/m5/objects/PhysicalMemory.py:
add latency parameter for physical memory
sim/byteswap.hh:
use fast architecture dependent byteswap calls if they exist
--HG--
extra : convert_revision : e3cf2e8f61064ad302d94bc22010a00c59f3f793
Diffstat (limited to 'dev/pciconfigall.cc')
-rw-r--r-- | dev/pciconfigall.cc | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/dev/pciconfigall.cc b/dev/pciconfigall.cc index 86a505b9a..fa6b35f77 100644 --- a/dev/pciconfigall.cc +++ b/dev/pciconfigall.cc @@ -37,7 +37,7 @@ #include "base/trace.hh" #include "dev/pciconfigall.hh" -//#include "dev/pcidev.hh" +#include "dev/pcidev.hh" #include "dev/pcireg.h" #include "dev/platform.hh" #include "mem/packet.hh" @@ -68,7 +68,7 @@ PciConfigAll::PciConfigAll(Params *p) void PciConfigAll::startup() { -/* bitset<256> intLines; + bitset<256> intLines; PciDev *tempDev; uint8_t intline; @@ -85,7 +85,7 @@ PciConfigAll::startup() } // devices != NULL } // PCI_FUNC } // PCI_DEV - */ + } Tick @@ -97,7 +97,7 @@ PciConfigAll::read(Packet &pkt) Addr daddr = pkt.addr - pioAddr; int device = (daddr >> 11) & 0x1F; int func = (daddr >> 8) & 0x7; - //int reg = daddr & 0xFF; + int reg = daddr & 0xFF; pkt.time = curTick + pioDelay; @@ -131,7 +131,7 @@ PciConfigAll::read(Packet &pkt) if (devices[device][func] == NULL) *data32 = 0xFFFFFFFF; else - ;//devices[device][func]->readConfig(reg, req.size, data32); + devices[device][func]->readConfig(reg, data32); break; case sizeof(uint16_t): if (!pkt.data) { @@ -143,7 +143,7 @@ PciConfigAll::read(Packet &pkt) if (devices[device][func] == NULL) *data16 = 0xFFFF; else - ;//devices[device][func]->readConfig(reg, req.size, data16); + devices[device][func]->readConfig(reg, data16); break; case sizeof(uint8_t): if (!pkt.data) { @@ -155,7 +155,7 @@ PciConfigAll::read(Packet &pkt) if (devices[device][func] == NULL) *data8 = 0xFF; else - ;//devices[device][func]->readConfig(reg, req.size, data8); + devices[device][func]->readConfig(reg, data8); break; default: panic("invalid access size(?) for PCI configspace!\n"); @@ -177,7 +177,7 @@ PciConfigAll::write(Packet &pkt) int device = (daddr >> 11) & 0x1F; int func = (daddr >> 8) & 0x7; -// int reg = daddr & 0xFF; + int reg = daddr & 0xFF; if (devices[device][func] == NULL) panic("Attempting to write to config space on non-existant device\n"); @@ -185,8 +185,19 @@ PciConfigAll::write(Packet &pkt) DPRINTF(PciConfigAll, "write - va=%#x size=%d data=%#x\n", pkt.addr, pkt.size, *(uint32_t*)pkt.data); -// devices[device][func]->writeConfig(reg, req->size, data); - + switch (pkt.size) { + case sizeof(uint8_t): + devices[device][func]->writeConfig(reg, *pkt.data); + break; + case sizeof(uint16_t): + devices[device][func]->writeConfig(reg, *(uint16_t*)pkt.data); + break; + case sizeof(uint32_t): + devices[device][func]->writeConfig(reg, *(uint32_t*)pkt.data); + break; + default: + panic("invalid pci config write size\n"); + } return pioDelay; } |