- 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__
parent
5e9a5c0f28
commit
13eac429e1
|
@ -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) */
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue