From 13eac429e1b2b6b9061a58c05dc7e67415d5ad0e Mon Sep 17 00:00:00 2001 From: ntfreak Date: Fri, 11 Jan 2008 20:38:43 +0000 Subject: - debug handler file not closed - (thanks to oyvind harboe for the patch) - arm_simulate_step called incorrect arm_evaluate_opcode when in thumb mode git-svn-id: svn://svn.berlios.de/openocd/trunk@254 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/target/arm_simulator.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/target/arm_simulator.c') diff --git a/src/target/arm_simulator.c b/src/target/arm_simulator.c index 561b14f8..4ed05586 100644 --- a/src/target/arm_simulator.c +++ b/src/target/arm_simulator.c @@ -269,13 +269,14 @@ int thumb_pass_branch_condition(u32 cpsr, u16 opcode) int arm_simulate_step(target_t *target, u32 *dry_run_pc) { armv4_5_common_t *armv4_5 = target->arch_info; - u32 opcode; u32 current_pc = buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32); arm_instruction_t instruction; int instruction_size; if (armv4_5->core_state == ARMV4_5_STATE_ARM) { + u32 opcode; + /* get current instruction, and identify it */ target_read_u32(target, current_pc, &opcode); arm_evaluate_opcode(opcode, current_pc, &instruction); @@ -298,8 +299,10 @@ int arm_simulate_step(target_t *target, u32 *dry_run_pc) } else { - target_read_u32(target, current_pc, &opcode); - arm_evaluate_opcode(opcode, current_pc, &instruction); + u16 opcode; + + target_read_u16(target, current_pc, &opcode); + thumb_evaluate_opcode(opcode, current_pc, &instruction); instruction_size = 2; /* check condition code (only for branch instructions) */ -- cgit v1.2.3-18-g5258