Skip to content
Snippets Groups Projects
Commit ba379aa8 authored by vpalatin's avatar vpalatin
Browse files

Do not overwrite code when removing software breakpoint if it no longer contains bkpt instruction.

(thanks to oyvind harboe for bug report and test)


git-svn-id: svn://svn.berlios.de/openocd/trunk@214 b42882b7-edfa-0310-969c-e2dbd0fdcd60
parent d6fae6fe
No related branches found
No related tags found
No related merge requests found
......@@ -243,11 +243,19 @@ int arm7_9_unset_breakpoint(struct target_s *target, breakpoint_t *breakpoint)
/* restore original instruction (kept in target endianness) */
if (breakpoint->length == 4)
{
target->type->write_memory(target, breakpoint->address, 4, 1, breakpoint->orig_instr);
u32 current_instr;
/* check that user program as not modified breakpoint instruction */
target->type->read_memory(target, breakpoint->address, 4, 1, (u8*)&current_instr);
if (current_instr==arm7_9->arm_bkpt)
target->type->write_memory(target, breakpoint->address, 4, 1, breakpoint->orig_instr);
}
else
{
target->type->write_memory(target, breakpoint->address, 2, 1, breakpoint->orig_instr);
u16 current_instr;
/* check that user program as not modified breakpoint instruction */
target->type->read_memory(target, breakpoint->address, 2, 1, (u8*)&current_instr);
if (current_instr==arm7_9->thumb_bkpt)
target->type->write_memory(target, breakpoint->address, 2, 1, breakpoint->orig_instr);
}
breakpoint->set = 0;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment