arch, x86: Delete packet in IntDevice::recvResponse
[gem5.git] / src / dev / x86 / i82094aa.hh
index dfef059c33a8a4ddd6b94ab258c9156360581f2e..d047a49da7ef4d291586570236d5e4d9a8786282 100644 (file)
@@ -34,7 +34,6 @@
 #include <map>
 
 #include "base/bitunion.hh"
-#include "base/range_map.hh"
 #include "dev/x86/intdev.hh"
 #include "dev/io_device.hh"
 #include "params/I82094AA.hh"
@@ -45,7 +44,7 @@ namespace X86ISA
 class I8259;
 class Interrupts;
 
-class I82094AA : public PioDevice, public IntDev
+class I82094AA : public BasicPioDevice, public IntDevice
 {
   public:
     BitUnion64(RedirTableEntry)
@@ -65,9 +64,6 @@ class I82094AA : public PioDevice, public IntDev
     EndBitUnion(RedirTableEntry)
 
   protected:
-    Tick latency;
-    Addr pioAddr;
-
     I8259 * extIntPic;
 
     uint8_t regSel;
@@ -101,39 +97,22 @@ class I82094AA : public PioDevice, public IntDev
     Tick read(PacketPtr pkt);
     Tick write(PacketPtr pkt);
 
-    AddrRangeList getAddrRanges()
-    {
-        AddrRangeList ranges;
-        ranges.push_back(RangeEx(pioAddr, pioAddr + 4));
-        ranges.push_back(RangeEx(pioAddr + 16, pioAddr + 20));
-        return ranges;
-    }
-
-    AddrRangeList getIntAddrRange()
-    {
-        AddrRangeList ranges;
-        ranges.push_back(RangeEx(x86InterruptAddress(initialApicId, 0),
-                                 x86InterruptAddress(initialApicId, 0) +
-                                 PhysAddrAPICRangeSize));
-        return ranges;
-    }
+    AddrRangeList getIntAddrRange() const;
 
     void writeReg(uint8_t offset, uint32_t value);
     uint32_t readReg(uint8_t offset);
 
-    Port *getPort(const std::string &if_name, int idx = -1)
-    {
-        if (if_name == "int_port")
-            return intPort;
-        return PioDevice::getPort(if_name, idx);
-    }
+    BaseMasterPort &getMasterPort(const std::string &if_name,
+                                  PortID idx = InvalidPortID);
+
+    Tick recvResponse(PacketPtr pkt) M5_ATTR_OVERRIDE;
 
     void signalInterrupt(int line);
     void raiseInterruptPin(int number);
     void lowerInterruptPin(int number);
 
-    virtual void serialize(std::ostream &os);
-    virtual void unserialize(Checkpoint *cp, const std::string &section);
+    void serialize(CheckpointOut &cp) const M5_ATTR_OVERRIDE;
+    void unserialize(CheckpointIn &cp) M5_ATTR_OVERRIDE;
 };
 
 } // namespace X86ISA