summaryrefslogtreecommitdiff
path: root/src/arch/arm/utility.cc
diff options
context:
space:
mode:
authorAli Saidi <Ali.Saidi@ARM.com>2010-11-15 14:04:03 -0600
committerAli Saidi <Ali.Saidi@ARM.com>2010-11-15 14:04:03 -0600
commit13931b9b827abd8a9fba5cb4448b69066746637c (patch)
tree348231f50e7e0fd224fdf255b3c0a2159097750f /src/arch/arm/utility.cc
parent4c2e5c282b334dcd263373c48d325c7f77847c61 (diff)
downloadgem5-13931b9b827abd8a9fba5cb4448b69066746637c.tar.xz
ARM: Cache the misc regs at the TLB to limit readMiscReg() calls.
Diffstat (limited to 'src/arch/arm/utility.cc')
-rw-r--r--src/arch/arm/utility.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/arch/arm/utility.cc b/src/arch/arm/utility.cc
index c42a8dddd..9293a4cfe 100644
--- a/src/arch/arm/utility.cc
+++ b/src/arch/arm/utility.cc
@@ -48,6 +48,8 @@
#include "mem/vport.hh"
#endif
+#include "arch/arm/tlb.hh"
+
namespace ArmISA {
void
@@ -148,7 +150,11 @@ copyRegs(ThreadContext *src, ThreadContext *dest)
// e.g. updateRegMap(val)
dest->setMiscReg(MISCREG_CPSR, src->readMiscRegNoEffect(MISCREG_CPSR));
- // Lastly copy PC/NPC
+ // Copy over the PC State
dest->pcState(src->pcState());
+
+ // Invalidate the tlb misc register cache
+ dest->getITBPtr()->invalidateMiscReg();
+ dest->getDTBPtr()->invalidateMiscReg();
}
}