Commit 17f54bc66c514f9fd9aad7952d0f768b30ef1466

suzuki toshiya 2011-01-15T21:53:32

Fix ARM assembly code in include/freetype/config/ftconfig.h. * include/freetype/config/ftconfig.h (FT_MulFix_arm): Copy the maintained code from builds/unix/ftconfig.in. Old GNU binutils could not accept the reduced syntax `orr %0, %2, lsl #16'. Un-omitted syntax like RVCT, `orr %0, %0, %2, lsl #16' is better. Reported by Johnson Y. Yan. The bug report by Qt developers is considered too. http://bugreports.qt.nokia.com/browse/QTBUG-6521

diff --git a/ChangeLog b/ChangeLog
index ab0fb40..51dd7ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2011-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
+
+	Fix ARM assembly code in include/freetype/config/ftconfig.h.
+
+	* include/freetype/config/ftconfig.h (FT_MulFix_arm):
+	Copy the maintained code from builds/unix/ftconfig.in.
+	Old GNU binutils could not accept the reduced syntax
+	`orr %0, %2, lsl #16'.  Un-omitted syntax like RVCT,
+	`orr %0, %0, %2, lsl #16' is better.  Reported by
+	Johnson Y. Yan.  The bug report by Qt developers is
+	considered too.
+
+	http://bugreports.qt.nokia.com/browse/QTBUG-6521
+
 2011-01-15  Werner Lemberg  <wl@gnu.org>
 
 	[raster] Make bbox handling the same as with Microsoft's rasterizer.
diff --git a/include/freetype/config/ftconfig.h b/include/freetype/config/ftconfig.h
index cbe30f2..bcbcd6f 100644
--- a/include/freetype/config/ftconfig.h
+++ b/include/freetype/config/ftconfig.h
@@ -348,14 +348,14 @@ FT_BEGIN_HEADER
     register FT_Int32  t, t2;
 
 
-    asm __volatile__ (
-      "smull  %1, %2, %4, %3\n\t"   /* (lo=%1,hi=%2) = a*b */
-      "mov    %0, %2, asr #31\n\t"  /* %0  = (hi >> 31) */
-      "add    %0, %0, #0x8000\n\t"  /* %0 += 0x8000 */
-      "adds   %1, %1, %0\n\t"       /* %1 += %0 */
-      "adc    %2, %2, #0\n\t"       /* %2 += carry */
-      "mov    %0, %1, lsr #16\n\t"  /* %0  = %1 >> 16 */
-      "orr    %0, %2, lsl #16\n\t"  /* %0 |= %2 << 16 */
+    __asm__ __volatile__ (
+      "smull  %1, %2, %4, %3\n\t"       /* (lo=%1,hi=%2) = a*b */
+      "mov    %0, %2, asr #31\n\t"      /* %0  = (hi >> 31) */
+      "add    %0, %0, #0x8000\n\t"      /* %0 += 0x8000 */
+      "adds   %1, %1, %0\n\t"           /* %1 += %0 */
+      "adc    %2, %2, #0\n\t"           /* %2 += carry */
+      "mov    %0, %1, lsr #16\n\t"      /* %0  = %1 >> 16 */
+      "orr    %0, %0, %2, lsl #16\n\t"  /* %0 |= %2 << 16 */
       : "=r"(a), "=&r"(t2), "=&r"(t)
       : "r"(a), "r"(b) );
     return a;