binutils patches for Cirrus/arm9e/maverick support

Richard Earnshaw rearnsha@arm.com
Wed Oct 10 10:13:00 GMT 2001


+ static void
+ do_c_quad (str, flags, mode)
+      char * str;
+      unsigned long flags;
+      int mode;
+ {
+   int shift1, shift2, shift3, shift4;
+   enum cirrus_regtype rt;
+ 
+   rt = (inst.instruction << 4 == 0xe2006000
+ 	|| inst.instruction << 4 == 0xe3006000) ? CIRRUS_REGTYPE_MVAX
+     : CIRRUS_REGTYPE_MVFX;

This (assuming '<< 4' will shift bits out of the top and drop them) is 
non-portable.  Much better to use a mask and let the compiler pick the 
best way to optimize it.

Also, is there somewhere I can find the documentation for the new 
instructions?  I can't see anything obvious on the Cirrus web pages and 
I'm trying to integrate your changes into my new parsing code.

R.



More information about the Binutils mailing list