This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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 */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]