Hi.
I've tried to disassemble ARM7TDMI Thumb code with openocd (built from
repository version 1337) using command:
armv4_5 disassemble 0x1000 8 thumb
and have not get a Thumb disassembly.
I've checked this in file armv4_5.c and think it's a bug in
handle_armv4_5_disassemble_command function. I'm attaching a solution,
check if it's worth committing.
Index: src/target/armv4_5.c
===================================================================
--- src/target/armv4_5.c (version 1337)
+++ src/target/armv4_5.c (working copy)
@@ -404,6 +404,7 @@
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,27 @@
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)
+ else
{
- return retval;
+ 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;
--
Adam Dybkowski
[email protected]
http://dybkowski.net/
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development