- 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
__archive__
ntfreak 2008-01-11 20:38:43 +00:00
parent 5e9a5c0f28
commit 13eac429e1
3 changed files with 32 additions and 27 deletions

View File

@ -269,13 +269,14 @@ int thumb_pass_branch_condition(u32 cpsr, u16 opcode)
int arm_simulate_step(target_t *target, u32 *dry_run_pc) int arm_simulate_step(target_t *target, u32 *dry_run_pc)
{ {
armv4_5_common_t *armv4_5 = target->arch_info; 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); u32 current_pc = buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32);
arm_instruction_t instruction; arm_instruction_t instruction;
int instruction_size; int instruction_size;
if (armv4_5->core_state == ARMV4_5_STATE_ARM) if (armv4_5->core_state == ARMV4_5_STATE_ARM)
{ {
u32 opcode;
/* get current instruction, and identify it */ /* get current instruction, and identify it */
target_read_u32(target, current_pc, &opcode); target_read_u32(target, current_pc, &opcode);
arm_evaluate_opcode(opcode, current_pc, &instruction); arm_evaluate_opcode(opcode, current_pc, &instruction);
@ -298,8 +299,10 @@ int arm_simulate_step(target_t *target, u32 *dry_run_pc)
} }
else else
{ {
target_read_u32(target, current_pc, &opcode); u16 opcode;
arm_evaluate_opcode(opcode, current_pc, &instruction);
target_read_u16(target, current_pc, &opcode);
thumb_evaluate_opcode(opcode, current_pc, &instruction);
instruction_size = 2; instruction_size = 2;
/* check condition code (only for branch instructions) */ /* check condition code (only for branch instructions) */

View File

@ -1680,6 +1680,8 @@ int xscale_deassert_reset(target_t *target)
/* resume the target */ /* resume the target */
xscale_resume(target, 1, 0x0, 1, 0); xscale_resume(target, 1, 0x0, 1, 0);
} }
fileio_close(&debug_handler);
} }
else else
{ {