changeset 43bd6562745e in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=43bd6562745e
description:
        o3cpu: commit: changes interrupt handling
        Currently the commit stage keeps a local copy of the interrupt object.
        Since the interrupt is usually handled several cycles after the commit
        stage becomes aware of it, it is possible that the local copy of the
        interrupt object may not be the interrupt that is actually handled.
        It is possible that another interrupt occurred in the
        interval between interrupt detection and interrupt handling.

        This patch creates a copy of the interrupt just before the interrupt
        is handled. The local copy is ignored.

diffstat:

 src/cpu/o3/commit_impl.hh |  6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diffs (16 lines):

diff -r 327bf4242521 -r 43bd6562745e src/cpu/o3/commit_impl.hh
--- a/src/cpu/o3/commit_impl.hh Thu Mar 28 09:34:23 2013 -0500
+++ b/src/cpu/o3/commit_impl.hh Fri Mar 29 14:05:26 2013 -0500
@@ -752,8 +752,10 @@
             cpu->checker->handlePendingInt();
         }
 
-        // CPU will handle interrupt.
-        cpu->processInterrupts(interrupt);
+        // CPU will handle interrupt. Note that we ignore the local copy of
+        // interrupt. This is because the local copy may no longer be the
+        // interrupt that the interrupt controller thinks is being handled.
+        cpu->processInterrupts(cpu->getInterrupts());
 
         thread[0]->noSquashFromTC = false;
 
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to