Date: Sat, 13 Jun 2015 15:41:34 -0700 From: Adrian Chadd <adrian@freebsd.org> To: "freebsd-mips@freebsd.org" <freebsd-mips@freebsd.org> Subject: [rfc] fix umul_ppmm() in our libgcc Message-ID: <CAJ-Vmonsmu5dGtWKhJchzZfSsVUjtwEVSEij4u6kwk64E0ZOXw@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi, our libgcc in -base is very .. old. It chokes when compiling for mips32. This patch seems to do the right thing. Does anyone have any positive/negative feedback? Thanks, -adrian Index: contrib/gcc/longlong.h =================================================================== --- contrib/gcc/longlong.h (revision 284090) +++ contrib/gcc/longlong.h (working copy) @@ -584,11 +584,11 @@ #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 __ll = (UDItype)(u) * (v); \ + w1 = __ll >> 32; \ + w0 = __ll; \ + } while (0) #define UMUL_TIME 10 #define UDIV_TIME 100 #endif /* __mips__ */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmonsmu5dGtWKhJchzZfSsVUjtwEVSEij4u6kwk64E0ZOXw>