From: Nicolas Pitre Date: Wed, 28 Oct 2009 01:19:43 +0000 (-0400) Subject: ARM: fix single-step of Thumb unconditional branch X-Git-Tag: v0.3.0-rc0~10 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=76afa936ba4bfa5a5780dbad562c6637c252524b;p=openocd ARM: fix single-step of Thumb unconditional branch Only type 1 branch instruction has a condition code, not type 2. Currently they're both tagged with ARM_B which doesn't allow for the distinction. Signed-off-by: Nicolas Pitre Signed-off-by: David Brownell --- diff --git a/src/target/arm_simulator.c b/src/target/arm_simulator.c index c50a52cd..27957b2f 100644 --- a/src/target/arm_simulator.c +++ b/src/target/arm_simulator.c @@ -317,8 +317,8 @@ int arm_simulate_step_core(target_t *target, uint32_t *dry_run_pc, struct arm_si return retval; instruction_size = 2; - /* check condition code (only for branch instructions) */ - if (instruction.type == ARM_B && + /* check condition code (only for branch (1) instructions) */ + if ((opcode & 0xf000) == 0xd000 && !thumb_pass_branch_condition(sim->get_cpsr(sim, 0, 32), opcode)) { if (dry_run_pc)