summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiacomo Travaglini <giacomo.travaglini@arm.com>2018-02-15 15:15:22 +0000
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2018-05-29 10:08:18 +0000
commit97c33d677f0130116ca40ca2e54a6aec7ad14961 (patch)
treed0eb6676ac8e84dcfb236f013899264140f00268
parent89b3397cf0daba4b2a339e26183aa82e1a573ad0 (diff)
downloadgem5-97c33d677f0130116ca40ca2e54a6aec7ad14961.tar.xz
cpu: Avoid unnecessary dynamic_pointer_cast in atomic model
In the atomic model a dynamic_pointer_cast is performed at every tick to check if the fault is a SyscallRetryFault. This was happening even when there was no generated fault. Change-Id: I7f4afeffffdf4f988230e05286602d8d9a919c6c Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/10101 Reviewed-by: Brandon Potter <Brandon.Potter@amd.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
-rw-r--r--src/cpu/simple/atomic.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/cpu/simple/atomic.cc b/src/cpu/simple/atomic.cc
index bc7670b23..7a368ab32 100644
--- a/src/cpu/simple/atomic.cc
+++ b/src/cpu/simple/atomic.cc
@@ -628,7 +628,8 @@ AtomicSimpleCPU::tick()
traceData = NULL;
}
- if (dynamic_pointer_cast<SyscallRetryFault>(fault)) {
+ if (fault != NoFault &&
+ dynamic_pointer_cast<SyscallRetryFault>(fault)) {
// Retry execution of system calls after a delay.
// Prevents immediate re-execution since conditions which
// caused the retry are unlikely to change every tick.