ARM: BXJ should be BX when there is no J support

This commit is contained in:
Ali Saidi 2010-06-02 12:58:12 -05:00
parent 1fcd389fa3
commit f64c8bafd2
2 changed files with 8 additions and 5 deletions

View file

@ -67,10 +67,8 @@ format DataOp {
1: decode OPCODE_7 {
0x0: decode MISC_OPCODE {
0x0: ArmMsrMrs::armMsrMrs();
0x1: ArmBxClz::armBxClz();
0x2: decode OPCODE {
0x9: WarnUnimpl::bxj();
}
// bxj unimplemented, treated as bx
0x1,0x2: ArmBxClz::armBxClz();
0x3: decode OPCODE {
0x9: ArmBlxReg::armBlxReg();
}

View file

@ -207,7 +207,12 @@ def format Thumb32BranchesAndMiscCtrl() {{
break;
}
case 0x3c:
return new WarnUnimplemented("bxj", machInst);
{
// On systems that don't support bxj, bxj == bx
return new BxReg(machInst,
(IntRegIndex)(uint32_t)bits(machInst, 19, 16),
COND_UC);
}
case 0x3d:
{
const uint32_t imm32 = bits(machInst, 7, 0);