void
PciDev::ReadConfig(int offset, int size, uint8_t *data)
{
+ if (offset >= PCI_DEVICE_SPECIFIC)
+ panic("Device specific PCI config space not implemented!\n");
+
switch(size) {
case sizeof(uint32_t):
memcpy((uint8_t*)data, config.data + offset, sizeof(uint32_t));
void
PciDev::WriteConfig(int offset, int size, uint32_t data)
{
+ if (offset >= PCI_DEVICE_SPECIFIC)
+ panic("Device specific PCI config space not implemented!\n");
+
uint32_t barnum;
union {
// This is I/O Space, bottom two bits are read only
if(htoa(config.data[offset]) & 0x1) {
- *(uint32_t *)&config.data[offset] = htoa((word_value & ~0x3) |
+ *(uint32_t *)&config.data[offset] =
+ htoa((word_value & ~0x3) |
(htoa(config.data[offset]) & 0x3));
if (word_value & ~0x1) {
} else {
// This is memory space, bottom four bits are read only
- *(uint32_t *)&config.data[offset] = htoa((word_value & ~0xF) |
+ *(uint32_t *)&config.data[offset] =
+ htoa((word_value & ~0xF) |
(htoa(config.data[offset]) & 0xF));
if (word_value & ~0x3) {