diff options
author | Min Kyu Jeong <minkyu.jeong@arm.com> | 2011-01-18 16:30:01 -0600 |
---|---|---|
committer | Min Kyu Jeong <minkyu.jeong@arm.com> | 2011-01-18 16:30:01 -0600 |
commit | 96375409ea7a5593ddd7f4f723db349921f35142 (patch) | |
tree | 38668fb81cc4d07cb037221dcb2d576d327c1309 /src/arch/arm | |
parent | 965a01d913f71570150c839ffc7376084d0fed88 (diff) | |
download | gem5-96375409ea7a5593ddd7f4f723db349921f35142.tar.xz |
O3: Fixes fetch deadlock when the interrupt clears before CPU handles it.
When this condition occurs the cpu should restart the fetch stage to fetch from
the original execution path. Fault handling in the commit stage is cleaned up a
little bit so the control flow is simplier. Finally, if an instruction is being
used to carry a fault it isn't executed, so the fault propagates appropriately.
Diffstat (limited to 'src/arch/arm')
-rw-r--r-- | src/arch/arm/interrupts.hh | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/arch/arm/interrupts.hh b/src/arch/arm/interrupts.hh index 5870034c3..a94408a4f 100644 --- a/src/arch/arm/interrupts.hh +++ b/src/arch/arm/interrupts.hh @@ -102,7 +102,7 @@ class Interrupts : public SimObject void clear(int int_num, int index) { - DPRINTF(Interrupt, "Interrupt %d:%d posted\n", int_num, index); + DPRINTF(Interrupt, "Interrupt %d:%d cleared\n", int_num, index); if (int_num < 0 || int_num >= NumInterruptTypes) panic("int_num out of bounds\n"); @@ -112,7 +112,6 @@ class Interrupts : public SimObject interrupts[int_num] = false; intStatus &= ~(ULL(1) << int_num); - } void |