23 lines
383 B
C
23 lines
383 B
C
#include "libgcc.h"
|
|
|
|
union DWunion {
|
|
struct {
|
|
s32 high;
|
|
s32 low;
|
|
} s;
|
|
s64 ll;
|
|
};
|
|
|
|
s64 __muldi3(s64 u, s64 v)
|
|
{
|
|
const union DWunion uu = { .ll = u };
|
|
const union DWunion vv = { .ll = v };
|
|
union DWunion w = { .ll = __umulsidi3(uu.s.low, vv.s.low) };
|
|
|
|
w.s.high += ((u32)uu.s.low * (u32)vv.s.high
|
|
+ (u32)uu.s.high * (u32)vv.s.low);
|
|
|
|
return w.ll;
|
|
}
|
|
EXPORT_SYMBOL(__muldi3);
|