Changed to inherit from DmaDevice to avoid multiple inheritance (now
authorAndrew Schultz <alschult@umich.edu>
Mon, 22 Mar 2004 21:50:09 +0000 (16:50 -0500)
committerAndrew Schultz <alschult@umich.edu>
Mon, 22 Mar 2004 21:50:09 +0000 (16:50 -0500)
assumes that all PCI devices are DmaDevices, and if not, they can just
ignore the DMA stuff)

--HG--
extra : convert_revision : aa58b658370696674ca4c32b265bc0400e5dda5a

dev/pcidev.cc
dev/pcidev.hh

index 0e0b7f840002cbd8aa742026274b495b96e076c5..2b07c0fedf7102839b02f19511fce1bf5a9912a2 100644 (file)
@@ -40,7 +40,6 @@
 #include "base/str.hh" // for to_number
 #include "base/trace.hh"
 #include "dev/pciareg.h"
-#include "dev/scsi_ctrl.hh"
 #include "dev/pcidev.hh"
 #include "dev/pciconfigall.hh"
 #include "mem/functional_mem/memory_control.hh"
@@ -53,8 +52,8 @@ using namespace std;
 
 PciDev::PciDev(const string &name, MemoryController *mmu, PciConfigAll *cf,
                PciConfigData *cd, uint32_t bus, uint32_t dev, uint32_t func)
-    : FunctionalMemory(name), MMU(mmu), ConfigSpace(cf), ConfigData(cd),
-      Bus(bus), Device(dev), Function(func)
+    : DmaDevice(name), MMU(mmu), ConfigSpace(cf), ConfigData(cd), BusNum(bus),
+      DeviceNum(dev), FunctionNum(func)
 {
     // copy the config data from the PciConfigData object
     if (cd) {
@@ -79,21 +78,24 @@ PciDev::ReadConfig(int offset, int size, uint8_t *data)
         memcpy((uint32_t*)data, config.data + offset, sizeof(uint32_t));
         DPRINTF(PCIDEV,
                 "read device: %#x function: %#x register: %#x data: %#x\n",
-                Device, Function, offset, *(uint32_t*)(config.data + offset));
+                DeviceNum, FunctionNum, offset,
+                *(uint32_t*)(config.data + offset));
         break;
 
       case sizeof(uint16_t):
         memcpy((uint16_t*)data, config.data + offset, sizeof(uint16_t));
         DPRINTF(PCIDEV,
                 "read device: %#x function: %#x register: %#x data: %#x\n",
-                Device, Function, offset, *(uint16_t*)(config.data + offset));
+                DeviceNum, FunctionNum, offset,
+                *(uint16_t*)(config.data + offset));
         break;
 
       case sizeof(uint8_t):
         memcpy((uint8_t*)data, config.data + offset, sizeof(uint8_t));
         DPRINTF(PCIDEV,
                 "read device: %#x function: %#x register: %#x data: %#x\n",
-                Device, Function, offset, (uint16_t)(*(uint8_t*)(config.data + offset)));
+                DeviceNum, FunctionNum, offset,
+                (uint16_t)(*(uint8_t*)(config.data + offset)));
         break;
 
       default:
@@ -115,7 +117,7 @@ PciDev::WriteConfig(int offset, int size, uint32_t data)
 
     DPRINTF(PCIDEV,
             "write device: %#x function: %#x reg: %#x size: %#x data: %#x\n",
-            Device, Function, offset, size, word_value);
+            DeviceNum, FunctionNum, offset, size, word_value);
 
     barnum = (offset - PCI0_BASE_ADDR0) >> 2;
 
@@ -184,11 +186,11 @@ PciDev::WriteConfig(int offset, int size, uint32_t data)
 
                         // It's never been set
                         if (BARAddrs[barnum] == 0)
-                            MMU->add_child(this,
+                            MMU->add_child((FunctionalMemory *)this,
                                            Range<Addr>(base_addr,
                                                        base_addr + base_size));
                         else
-                            MMU->update_child(this,
+                            MMU->update_child((FunctionalMemory *)this,
                                               Range<Addr>(BARAddrs[barnum],
                                                           BARAddrs[barnum] +
                                                           base_size),
@@ -212,11 +214,11 @@ PciDev::WriteConfig(int offset, int size, uint32_t data)
 
                         // It's never been set
                         if (BARAddrs[barnum] == 0)
-                            MMU->add_child(this,
+                            MMU->add_child((FunctionalMemory *)this,
                                            Range<Addr>(base_addr,
                                                        base_addr + base_size));
                         else
-                            MMU->update_child(this,
+                            MMU->update_child((FunctionalMemory *)this,
                                               Range<Addr>(BARAddrs[barnum],
                                                           BARAddrs[barnum] +
                                                           base_size),
index 6496791b27edd58bf558aac6592730baab4220ce..59c582a6cf9fcce138bf27a5d4c364dca69444ef 100644 (file)
  */
 
 /* @file
- * PCI configspace devices
+ * Interface for devices using PCI configuration
  */
 
 #ifndef __PCI_DEV_HH__
 #define __PCI_DEV_HH__
 
 #include "dev/pcireg.h"
-#include "sim/sim_object.hh"
-#include "mem/functional_mem/functional_memory.hh"
+#include "dev/io_device.hh"
 
 class PciConfigAll;
 class MemoryController;
@@ -63,15 +62,15 @@ class PciConfigData : public SimObject
  * register with it. This object registers with the PCIConfig space
  * object.
  */
-class PciDev : public FunctionalMemory
+class PciDev : public DmaDevice
 {
   protected:
     MemoryController *MMU;
     PciConfigAll *ConfigSpace;
     PciConfigData *ConfigData;
-    uint32_t Bus;
-    uint32_t Device;
-    uint32_t Function;
+    uint32_t BusNum;
+    uint32_t DeviceNum;
+    uint32_t FunctionNum;
 
     PCIConfig config;
     uint32_t BARSize[6];