diff -r ace48739e4b9 -r 5ef3d161c661 src/arch/arm/isa/formats/data.isa --- a/src/arch/arm/isa/formats/data.isa Fri Aug 13 11:54:02 2010 -0500 +++ b/src/arch/arm/isa/formats/data.isa Fri Aug 13 11:54:24 2010 -0500 @@ -1040,13 +1040,25 @@ return new MovReg(machInst, rdn, INTREG_ZERO, rm, 0, LSL); case 0x3: if (bits(machInst, 7) == 0) { + ConditionCode condCode; + if(machInst.itstateMask) { + condCode = (ConditionCode)(uint8_t)machInst.itstateCond; + } else { + condCode = COND_UC; + } return new BxReg(machInst, (IntRegIndex)(uint32_t)bits(machInst, 6, 3), - (ArmISA::ConditionCode)(uint8_t)machInst.itstateCond); + condCode); } else { + ConditionCode condCode; + if(machInst.itstateMask) { + condCode = (ConditionCode)(uint8_t)machInst.itstateCond; + } else { + condCode = COND_UC; + } return new BlxReg(machInst, (IntRegIndex)(uint32_t)bits(machInst, 6, 3), - (ArmISA::ConditionCode)(uint8_t)machInst.itstateCond); + condCode); } } }