Add missing implementation for "BL, BLX (immediate)" Encoding A1.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@125103 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp b/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
index 59bb0b0..57abbc5 100644
--- a/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
+++ b/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
@@ -784,6 +784,13 @@
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);