aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Langlois <pierre.langlois@arm.com>2015-09-11 16:47:20 +0100
committerPierre Langlois <pierre.langlois@arm.com>2015-09-11 16:47:20 +0100
commit4d50586db70d366d7d9eaf42062bf23bb6073695 (patch)
treef4c04e7302df6167c89a6f5682fdcaea77adfe66
parent6dcaef99fab7e59e3eeb16a95d4c29b7b499b408 (diff)
downloadbinutils-4d50586db70d366d7d9eaf42062bf23bb6073695.zip
binutils-4d50586db70d366d7d9eaf42062bf23bb6073695.tar.gz
binutils-4d50586db70d366d7d9eaf42062bf23bb6073695.tar.bz2
[AArch64] Fix incorrect mask when decoding b.cond instruction
The encoding of the b.cond instruction is described in the architecture reference manual as: b.cond 0101 0100 iiii iiii iiii iiii iii0 cccc So the mask should be 0xff000010. gdb/ChangeLog: * aarch64-tdep.c (decode_bcond): Fix incorrect mask.
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/aarch64-tdep.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 705b7eb..0942986 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2015-09-11 Pierre Langlois <pierre.langlois@arm.com>
+
+ * aarch64-tdep.c (decode_bcond): Fix incorrect mask.
+
2015-09-11 Mihail-Marian Nistor <mihail.nistor@freescale.com>
PR gdb/18947
diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
index 9a44446..a4d8186 100644
--- a/gdb/aarch64-tdep.c
+++ b/gdb/aarch64-tdep.c
@@ -339,7 +339,8 @@ decode_b (CORE_ADDR addr, uint32_t insn, int *is_bl, int32_t *offset)
static int
decode_bcond (CORE_ADDR addr, uint32_t insn, unsigned *cond, int32_t *offset)
{
- if (decode_masked_match (insn, 0xfe000000, 0x54000000))
+ /* b.cond 0101 0100 iiii iiii iiii iiii iii0 cccc */
+ if (decode_masked_match (insn, 0xff000010, 0x54000000))
{
*cond = (insn >> 0) & 0xf;
*offset = extract_signed_bitfield (insn, 19, 5) << 2;