dev: make BasicPioDevice take size in constructor
[gem5.git] / src / dev / sparc / iob.hh
index c05c4f2ef270f761570b0fb7a97d494a6231a424..fc5e610925dfd3e904eca97de02a6214b23eb8da 100644 (file)
@@ -36,9 +36,9 @@
 #ifndef __DEV_SPARC_IOB_HH__
 #define __DEV_SPARC_IOB_HH__
 
-#include "base/range.hh"
-#include "dev/io_device.hh"
 #include "dev/disk_image.hh"
+#include "dev/io_device.hh"
+#include "params/Iob.hh"
 
 class IntrControl;
 
@@ -123,26 +123,24 @@ class Iob : public PioDevice
     void readIob(PacketPtr pkt);
     void readJBus(PacketPtr pkt);
 
-
   public:
-    struct Params : public PioDevice::Params
-    {
-        Tick pio_delay;
-    };
-  protected:
-    const Params *params() const { return (const Params*)_params; }
+    typedef IobParams Params;
+    Iob(const Params *p);
 
-  public:
-    Iob(Params *p);
+    const Params *
+    params() const
+    {
+        return dynamic_cast<const Params *>(_params);
+    }
 
     virtual Tick read(PacketPtr pkt);
     virtual Tick write(PacketPtr pkt);
     void generateIpi(Type type, int cpu_id, int vector);
     void receiveDeviceInterrupt(DeviceId devid);
-    bool receiveJBusInterrupt(int cpu_id, int source, uint64_t d0, uint64_t d1);
-
+    bool receiveJBusInterrupt(int cpu_id, int source, uint64_t d0,
+                              uint64_t d1);
 
-    void addressRanges(AddrRangeList &range_list);
+    AddrRangeList getAddrRanges() const;
 
     virtual void serialize(std::ostream &os);
     virtual void unserialize(Checkpoint *cp, const std::string &section);