From b6e7029dd59fa9508835a5af7696c93785a00d87 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 2 Jun 2010 12:58:02 -0500 Subject: ARM: Fix PC operand handling. --- src/arch/arm/insts/static_inst.hh | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/arch/arm/insts/static_inst.hh') diff --git a/src/arch/arm/insts/static_inst.hh b/src/arch/arm/insts/static_inst.hh index e0d268979..59d7fe705 100644 --- a/src/arch/arm/insts/static_inst.hh +++ b/src/arch/arm/insts/static_inst.hh @@ -139,6 +139,18 @@ class ArmStaticInstBase : public StaticInst return ((spsr & ~bitMask) | (val & bitMask)); } + template + static Addr + readPC(XC *xc) + { + Addr pc = xc->readPC(); + Addr tBit = pc & (ULL(1) << PcTBitShift); + if (tBit) + return pc + 4; + else + return pc + 8; + } + template static void setNextPC(XC *xc, Addr val) -- cgit v1.2.3