diff options
author | Nathanael Premillieu <nathanael.premillieu@irisa.fr> | 2012-12-12 09:50:16 -0600 |
---|---|---|
committer | Nathanael Premillieu <nathanael.premillieu@irisa.fr> | 2012-12-12 09:50:16 -0600 |
commit | 84fc57bfe6b5a9130d7ed27ee1e3fc1e06f80d08 (patch) | |
tree | 702168070ebc5241a46d52e252a7812e1f9dccab /src | |
parent | 141ee3879459eea62d6176119fbc2c432a5fb124 (diff) | |
download | gem5-84fc57bfe6b5a9130d7ed27ee1e3fc1e06f80d08.tar.xz |
arm: set movret_uop as conditional or unconditional control
A flag was missing for the movret_uop microop instruction. This patch adds
that flag when the instruction is used, not directly in the constructor of
the instruction.
Committed by: Nilay Vaish <nilay@cs.wisc.edu>
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/arm/insts/macromem.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/arch/arm/insts/macromem.cc b/src/arch/arm/insts/macromem.cc index d05ac7728..decd194c4 100644 --- a/src/arch/arm/insts/macromem.cc +++ b/src/arch/arm/insts/macromem.cc @@ -145,6 +145,10 @@ MacroMemOp::MacroMemOp(const char *mnem, ExtMachInst machInst, // register. if (load && reg == INTREG_PC && exception_ret) { *++uop = new MicroUopRegMovRet(machInst, 0, INTREG_UREG1); + if (!(condCode == COND_AL || condCode == COND_UC)) + (*uop)->setFlag(StaticInst::IsCondControl); + else + (*uop)->setFlag(StaticInst::IsUncondControl); } else if (load) { *++uop = new MicroUopRegMov(machInst, regIdx, INTREG_UREG1); if (reg == INTREG_PC) { |