This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[rx] patch; fix sign-extension of mov.w
- From: DJ Delorie <dj at redhat dot com>
- To: binutils at sourceware dot org
- Date: Mon, 30 Apr 2012 18:04:27 -0400
- Subject: [rx] patch; fix sign-extension of mov.w
Applied.
* rx-decode.opc (MOV): Do not sign-extend immediates which are
already the maximum bit size.
* rx-decode.c: Regenerate.
Index: opcodes/rx-decode.opc
===================================================================
RCS file: /cvs/src/src/opcodes/rx-decode.opc,v
retrieving revision 1.6
diff -p -U5 -r1.6 opcodes/rx-decode.opc
--- opcodes/rx-decode.opc 21 Apr 2011 05:48:06 -0000 1.6
+++ opcodes/rx-decode.opc 27 Apr 2012 18:23:09 -0000
@@ -260,11 +260,24 @@ rx_decode_opcode (unsigned long pc AU,
/** 0111 0101 0100 rdst mov%s #%1, %0 */
ID(mov); DR(rdst); SC(IMM (1)); F_____;
/** 1111 10sd rdst im sz mov%s #%1, %0 */
- ID(mov); sBWL (sz); DD(sd, rdst, sz); SC(IMMex(im)); F_____;
+ ID(mov); DD(sd, rdst, sz);
+ if ((im == 1 && sz == 0)
+ || (im == 2 && sz == 1)
+ || (im == 0 && sz == 2))
+ {
+ BWL (sz);
+ SC(IMM(im));
+ }
+ else
+ {
+ sBWL (sz);
+ SC(IMMex(im));
+ }
+ F_____;
/** 0110 0110 immm rdst mov%s #%1, %0 */
ID(mov); DR(rdst); SC(immm); F_____;
/** 0011 11sz d dst sppp mov%s #%1, %0 */