Add missing implementation for "BL, BLX (immediate)" Encoding A1.

llvm-svn: 125103
This commit is contained in:
Johnny Chen 2011-02-08 18:58:31 +00:00
parent 1749935173
commit 86e48b6940
1 changed files with 7 additions and 0 deletions

View File

@ -784,6 +784,13 @@ EmulateInstructionARM::EmulateBLXImmediate (ARMEncoding encoding)
context.arg2 = eModeARM; // target instruction set
break;
}
case eEncodingA1:
lr = pc + 4; // return address
imm32 = llvm::SignExtend32<26>(Bits32(opcode, 23, 0) << 2);
target = pc + 8 + imm32;
context.arg1 = 8 + imm32; // signed offset
context.arg2 = eModeARM; // target instruction set
break;
case eEncodingA2:
lr = pc + 4; // return address
imm32 = llvm::SignExtend32<26>(Bits32(opcode, 23, 0) << 2 | Bits32(opcode, 24, 24) << 1);