misc: Replaced master/slave terminology
[gem5.git] / src / dev / x86 / i82094aa.hh
index f0837cc27fd190d7f3da1aa152ff693f09f491bf..a5263b37d65d436bdff8aa27b23e9620c152d520 100644 (file)
@@ -24,8 +24,6 @@
  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Authors: Gabe Black
  */
 
 #ifndef __DEV_X86_I82094AA_HH__
@@ -34,8 +32,8 @@
 #include <map>
 
 #include "base/bitunion.hh"
-#include "base/range_map.hh"
 #include "dev/x86/intdev.hh"
+#include "dev/intpin.hh"
 #include "dev/io_device.hh"
 #include "params/I82094AA.hh"
 
@@ -45,7 +43,7 @@ namespace X86ISA
 class I8259;
 class Interrupts;
 
-class I82094AA : public PioDevice, public IntDev
+class I82094AA : public BasicPioDevice
 {
   public:
     BitUnion64(RedirTableEntry)
@@ -65,9 +63,6 @@ class I82094AA : public PioDevice, public IntDev
     EndBitUnion(RedirTableEntry)
 
   protected:
-    Tick latency;
-    Addr pioAddr;
-
     I8259 * extIntPic;
 
     uint8_t regSel;
@@ -85,6 +80,10 @@ class I82094AA : public PioDevice, public IntDev
     RedirTableEntry redirTable[TableSize];
     bool pinStates[TableSize];
 
+    std::vector<IntSinkPin<I82094AA> *> inputs;
+
+    IntRequestPort<I82094AA> intRequestPort;
+
   public:
     typedef I82094AAParams Params;
 
@@ -96,44 +95,25 @@ class I82094AA : public PioDevice, public IntDev
 
     I82094AA(Params *p);
 
-    void init();
+    void init() override;
 
-    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;
-    }
+    Tick read(PacketPtr pkt) override;
+    Tick write(PacketPtr pkt) override;
 
     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_master")
-            return &intPort;
-        return PioDevice::getPort(if_name, idx);
-    }
+    Port &getPort(const std::string &if_name,
+                  PortID idx=InvalidPortID) override;
+
+    bool recvResponse(PacketPtr pkt);
 
     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 override;
+    void unserialize(CheckpointIn &cp) override;
 };
 
 } // namespace X86ISA