Commited in r1338.

Rick


On Jan 18, 2009, at 5:17 PM, Adam Dybkowski wrote:

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
                adybk...@wp.pl
                http://dybkowski.net/
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

--
Rick Altherr
kc8...@kc8apf.net

"He said he hadn't had a byte in three days. I had a short, so I split it with him."
 -- Unsigned



Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to