arch-arm: Don't fail to initialise PMU if BP is missing
authorAndreas Sandberg <andreas.sandberg@arm.com>
Wed, 20 Jun 2018 13:23:59 +0000 (14:23 +0100)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Thu, 2 Aug 2018 08:29:57 +0000 (08:29 +0000)
The branch predictor currently assumes that each CPU has a branch
predictor. This isn't true in some cases (e.g., KVM, Atomic).

Change-Id: I61e80dca940c2dadba1b812449691c9dba1c06d9
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11520
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

src/arch/arm/ArmPMU.py

index a87c20b4a81199ad18469d45d467e499800bc930..9da3de28ad0eb6729bccbab2b5fa0fb9ba66680b 100644 (file)
@@ -115,8 +115,9 @@ class ArmPMU(SimObject):
         sharing the PMU (e.g., when switching between CPU models).
         """
 
-        bpred = cpu.branchPred if cpu and not isNullPointer(cpu.branchPred) \
-            else None
+        bpred = getattr(cpu, "branchPred", None) if cpu else None
+        if bpred is not None and isNullPointer(bpred):
+            bpred = None
 
         self.addEvent(SoftwareIncrement(self,0x00))
         # 0x01: L1I_CACHE_REFILL