From: <kc...@ma...> - 2009-01-19 08:08:36
|
Author: kc8apf Date: 2009-01-19 08:08:28 +0100 (Mon, 19 Jan 2009) New Revision: 1338 Modified: trunk/src/target/armv4_5.c Log: Fix handling of thumb disassembly in armv4_5 disassemble. Courtesy of Adam Dybkowski <ady...@wp...> Modified: trunk/src/target/armv4_5.c =================================================================== --- trunk/src/target/armv4_5.c 2009-01-17 23:16:59 UTC (rev 1337) +++ trunk/src/target/armv4_5.c 2009-01-19 07:08:28 UTC (rev 1338) @@ -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,26 @@ 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; |