[rfc] fix umul_ppmm() in our libgcc

Adrian Chadd adrian at freebsd.org
Thu Jun 18 04:01:00 UTC 2015


ok, i'm building a test image.

(my kingdom for being able to run the freebsd unit tests with what's in src..)


-a


On 17 June 2015 at 23:59, Alexander Kabaev <kabaev at gmail.com> wrote:
> On Wed, 17 Jun 2015 19:57:35 -0700
> Adrian Chadd <adrian at freebsd.org> wrote:
>
>> Ok, so this:
>>
>> adrian at lucy-11i386:~/work/freebsd/head-embedded-2/src/contrib/gcc %
>> svn diff longlong.h
>> Index: longlong.h
>> ===================================================================
>> --- longlong.h    (revision 284394)
>> +++ 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 __x = (UDItype) (USItype) (u) * (USItype) (v);        \
>> +     w1 = __x >> 32;                        \
>> +     w0 = __x;                            \
>> +    } while (0)
>>  #define UMUL_TIME 10
>>  #define UDIV_TIME 100
>>  #endif /* __mips__ */
>>
>>
>> ?
>>
>>
>>
>> -a
>
> Looks good to me.
>
> --
> Alexander Kabaev


More information about the freebsd-mips mailing list