From 45b4998e9369029d48c1f33fbccb1a525793cd46 Mon Sep 17 00:00:00 2001 From: Antonio Borneo Date: Tue, 15 Jan 2019 15:51:13 +0100 Subject: [PATCH] arm_opcode: fix encoding of ARMv5 breakpoint instruction The encoding of BKPT instruction is 0xE12###7#, where the four '#' characters should be replaced by the 16 bits immediate value. The macro uses an incorrect shift amount, thus the immediate value is not properly coded and bits 20~23 of the opcode could get corrupted. Fixed by using the proper shift amount. Change-Id: I32db8224ab57aad6d3b002f92f9f259056593675 Signed-off-by: Antonio Borneo Reviewed-on: http://openocd.zylin.com/4854 Tested-by: jenkins Reviewed-by: Matthias Welwarsky --- src/target/arm_opcodes.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/target/arm_opcodes.h b/src/target/arm_opcodes.h index 482abe630a..e94e8333b8 100644 --- a/src/target/arm_opcodes.h +++ b/src/target/arm_opcodes.h @@ -213,7 +213,7 @@ /* Breakpoint instruction (ARMv5) * Im: 16-bit immediate */ -#define ARMV5_BKPT(Im) (0xe1200070 | ((Im & 0xfff0) << 8) | (Im & 0xf)) +#define ARMV5_BKPT(Im) (0xe1200070 | ((Im & 0xfff0) << 4) | (Im & 0xf)) /* Thumb mode instructions -- 2.30.2