Author: adrian
Date: Thu Jun 18 13:40:08 2015
New Revision: 284546
URL: https://svnweb.freebsd.org/changeset/base/284546

Log:
  Fix compilation of this macro under gcc-4.9 for MIPS32.
  
  Some point after gcc-4.2 the MIPS inline assembly restrictions changed -
  =h (hi register) disappeared from the list of restrictions and can no
  longer be used.
  
  So, until someone requires an assembly version of this function,
  just use a non-assembly version and let the compiler sort it out.
  
  Suggested by: kan

Modified:
  head/contrib/gcc/longlong.h

Modified: head/contrib/gcc/longlong.h
==============================================================================
--- head/contrib/gcc/longlong.h Thu Jun 18 13:23:52 2015        (r284545)
+++ head/contrib/gcc/longlong.h Thu Jun 18 13:40:08 2015        (r284546)
@@ -584,11 +584,11 @@ UDItype __umulsidi3 (USItype, USItype);
 
 #if defined (__mips__) && W_TYPE_SIZE == 32
 #define umul_ppmm(w1, w0, u, v) \
-  __asm__ ("multu %2,%3"                                               \
-          : "=l" ((USItype) (w0)),                                     \
-            "=h" ((USItype) (w1))                                      \
-          : "d" ((USItype) (u)),                                       \
-            "d" ((USItype) (v)))
+       do {                                                            \
+       UDItype __x = (UDItype) (USItype) (u) * (USItype) (v);          \
+        w1 = __x >> 32;                                                \
+        w0 = __x;                                                      \
+       } while (0)
 #define UMUL_TIME 10
 #define UDIV_TIME 100
 #endif /* __mips__ */
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to