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