changeset 46d327d42036 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=46d327d42036
description:
        X86: Add a function which gets called when an interrupt message has 
been delivered.

diffstat:

5 files changed, 22 insertions(+), 5 deletions(-)
src/arch/x86/interrupts.cc |    3 +--
src/arch/x86/interrupts.hh |    1 +
src/dev/x86/intdev.cc      |    5 +++--
src/dev/x86/intdev.hh      |   13 +++++++++++++
src/mem/mport.cc           |    5 ++++-

diffs (84 lines):

diff -r 5e719a1e5d82 -r 46d327d42036 src/arch/x86/interrupts.cc
--- a/src/arch/x86/interrupts.cc        Sun Apr 19 03:53:29 2009 -0700
+++ b/src/arch/x86/interrupts.cc        Sun Apr 19 03:54:11 2009 -0700
@@ -327,8 +327,7 @@
                 offset);
         break;
     }
-    delete pkt->req;
-    delete pkt;
+    pkt->makeAtomicResponse();
     return latency;
 }
 
diff -r 5e719a1e5d82 -r 46d327d42036 src/arch/x86/interrupts.hh
--- a/src/arch/x86/interrupts.hh        Sun Apr 19 03:53:29 2009 -0700
+++ b/src/arch/x86/interrupts.hh        Sun Apr 19 03:54:11 2009 -0700
@@ -213,6 +213,7 @@
     Tick read(PacketPtr pkt);
     Tick write(PacketPtr pkt);
     Tick recvMessage(PacketPtr pkt);
+    Tick recvResponse(PacketPtr pkt);
 
     bool
     triggerTimerInterrupt()
diff -r 5e719a1e5d82 -r 46d327d42036 src/dev/x86/intdev.cc
--- a/src/dev/x86/intdev.cc     Sun Apr 19 03:53:29 2009 -0700
+++ b/src/dev/x86/intdev.cc     Sun Apr 19 03:54:11 2009 -0700
@@ -45,10 +45,11 @@
         DPRINTF(IntDev,
                 "Sending interrupt to APIC ID %d.\n", message.destination);
         PacketPtr pkt = buildIntRequest(message.destination, message);
-        if (timing)
+        if (timing) {
             sendMessageTiming(pkt, latency);
-        else
+        } else {
             sendMessageAtomic(pkt);
+        }
     } else {
         DPRINTF(IntDev, "Sending interrupts to APIC IDs:"
                 "%s%s%s%s%s%s%s%s\n",
diff -r 5e719a1e5d82 -r 46d327d42036 src/dev/x86/intdev.hh
--- a/src/dev/x86/intdev.hh     Sun Apr 19 03:53:29 2009 -0700
+++ b/src/dev/x86/intdev.hh     Sun Apr 19 03:54:11 2009 -0700
@@ -71,6 +71,11 @@
             return device->recvMessage(pkt);
         }
 
+        Tick recvResponse(PacketPtr pkt)
+        {
+            return device->recvResponse(pkt);
+        }
+
         // This is x86 focused, so if this class becomes generic, this would
         // need to be moved into a subclass.
         void sendMessage(TriggerIntMessage message, bool timing);
@@ -125,6 +130,14 @@
         return 0;
     }
 
+    virtual Tick
+    recvResponse(PacketPtr pkt)
+    {
+        delete pkt->req;
+        delete pkt;
+        return 0;
+    }
+
     virtual void
     getIntAddrRange(AddrRangeList &range_list)
     {
diff -r 5e719a1e5d82 -r 46d327d42036 src/mem/mport.cc
--- a/src/mem/mport.cc  Sun Apr 19 03:53:29 2009 -0700
+++ b/src/mem/mport.cc  Sun Apr 19 03:54:11 2009 -0700
@@ -56,5 +56,8 @@
 Tick
 MessagePort::sendMessageAtomic(PacketPtr pkt)
 {
-    return sendAtomic(pkt);
+    Tick latency = sendAtomic(pkt);
+    assert(pkt->isResponse());
+    latency += recvResponse(pkt);
+    return latency;
 }
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to