Fix handling of thumb disassembly in armv4_5 disassemble. Courtesy of Adam Dybkowski <adybkows@wp.pl>
git-svn-id: svn://svn.berlios.de/openocd/trunk@1338 b42882b7-edfa-0310-969c-e2dbd0fdcd60__archive__
parent
ded2e16b35
commit
2aed5dd40b
|
@ -404,6 +404,7 @@ int handle_armv4_5_disassemble_command(struct command_context_s *cmd_ctx, char *
|
|||
int i;
|
||||
arm_instruction_t cur_instruction;
|
||||
u32 opcode;
|
||||
u16 thumb_opcode;
|
||||
int thumb = 0;
|
||||
|
||||
if (armv4_5->common_magic != ARMV4_5_COMMON_MAGIC)
|
||||
|
@ -427,13 +428,26 @@ int handle_armv4_5_disassemble_command(struct command_context_s *cmd_ctx, char *
|
|||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
if((retval = target_read_u32(target, address, &opcode)) != ERROR_OK)
|
||||
if(thumb)
|
||||
{
|
||||
return retval;
|
||||
if((retval = target_read_u16(target, address, &thumb_opcode)) != ERROR_OK)
|
||||
{
|
||||
return retval;
|
||||
}
|
||||
if((retval = thumb_evaluate_opcode(thumb_opcode, address, &cur_instruction)) != ERROR_OK)
|
||||
{
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
if((retval = arm_evaluate_opcode(opcode, address, &cur_instruction)) != ERROR_OK)
|
||||
{
|
||||
return retval;
|
||||
else {
|
||||
if((retval = target_read_u32(target, address, &opcode)) != ERROR_OK)
|
||||
{
|
||||
return retval;
|
||||
}
|
||||
if((retval = arm_evaluate_opcode(opcode, address, &cur_instruction)) != ERROR_OK)
|
||||
{
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
command_print(cmd_ctx, "%s", cur_instruction.text);
|
||||
address += (thumb) ? 2 : 4;
|
||||
|
|
Loading…
Reference in New Issue