summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2011-02-08 18:58:31 +0000
committerJohnny Chen <johnny.chen@apple.com>2011-02-08 18:58:31 +0000
commit86e48b6940cc744dbb5ca8f91f6a3d9a4bf254b6 (patch)
tree9ff87d9b9295c456fef620586f4fba6a9f33ab39
parent17499351735563fa106044c8336f4114f351556f (diff)
downloadbcm5719-llvm-86e48b6940cc744dbb5ca8f91f6a3d9a4bf254b6.tar.gz
bcm5719-llvm-86e48b6940cc744dbb5ca8f91f6a3d9a4bf254b6.zip
Add missing implementation for "BL, BLX (immediate)" Encoding A1.
llvm-svn: 125103
-rw-r--r--lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp b/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
index 59bb0b00958..57abbc5951e 100644
--- a/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
+++ b/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
@@ -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);
OpenPOWER on IntegriCloud