objdump fails for ColdFire

Nick Clifton nickc@redhat.com
Thu May 13 16:39:00 GMT 2004


Hi Peter,

>I think this is caused by the disassembler picking only *one* entry
>out of the table and then checking the if the args match the
>patterns:
>
>{"movel",	one(0020000),	one(0170000), "ms%d", mcf },
>{"movel",	one(0020000),	one(0170000), "nspd", mcf },
>{"movel",	one(0020000),	one(0170000), "olmd", mcf },
>
>Note that the mask and bits are the same for each pattern, its down to
>the args to determine which form is valid.  
>
>To fix this I'm thinking of looping over the table for each match of
>the masked opcode and if the args match, accept it.
>  
>

This is probably a good idea.  It would be nice to have this code 
cleaned up somewhat.

I see in the function opcodes/m68k-dis.c:print_insn_m68k() that there is 
already some special case code for the divul, divsl and other 
instructions.  So maybe you could also add some code there.

Cheers
  Nick



More information about the Binutils mailing list