diff options
author | Kyle McMartin <kyle@mako.i.cabal.ca> | 2007-11-28 02:07:35 -0500 |
---|---|---|
committer | Kyle McMartin <kyle@shortfin.cabal.ca> | 2007-12-06 09:16:29 -0800 |
commit | 9d29213fd469c4c409a30b8dbb88c4efcba6e0a6 (patch) | |
tree | 27e8617c6ef5776f6474c1f4422b2f765b96caaf /arch/parisc/lib/libgcc/__umulsidi3.c | |
parent | 09b56adc98e0f8a21644fcb4d20ad367c3fceb55 (diff) |
Revert "[PARISC] import necessary bits of libgcc.a"
This reverts commit efb80e7e097d0888e59fbbe4ded2ac5a256f556d, it turned
out to cause sporadic problems with the timer interrupt on 32-bit kernels.
Needs more investigation.
Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
Diffstat (limited to 'arch/parisc/lib/libgcc/__umulsidi3.c')
-rw-r--r-- | arch/parisc/lib/libgcc/__umulsidi3.c | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/arch/parisc/lib/libgcc/__umulsidi3.c b/arch/parisc/lib/libgcc/__umulsidi3.c deleted file mode 100644 index 396f669164d..00000000000 --- a/arch/parisc/lib/libgcc/__umulsidi3.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "libgcc.h" - -#define __ll_B ((u32) 1 << (32 / 2)) -#define __ll_lowpart(t) ((u32) (t) & (__ll_B - 1)) -#define __ll_highpart(t) ((u32) (t) >> 16) - -#define umul_ppmm(w1, w0, u, v) \ - do { \ - u32 __x0, __x1, __x2, __x3; \ - u16 __ul, __vl, __uh, __vh; \ - \ - __ul = __ll_lowpart (u); \ - __uh = __ll_highpart (u); \ - __vl = __ll_lowpart (v); \ - __vh = __ll_highpart (v); \ - \ - __x0 = (u32) __ul * __vl; \ - __x1 = (u32) __ul * __vh; \ - __x2 = (u32) __uh * __vl; \ - __x3 = (u32) __uh * __vh; \ - \ - __x1 += __ll_highpart (__x0);/* this can't give carry */ \ - __x1 += __x2; /* but this indeed can */ \ - if (__x1 < __x2) /* did we get it? */ \ - __x3 += __ll_B; /* yes, add it in the proper pos. */ \ - \ - (w1) = __x3 + __ll_highpart (__x1); \ - (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \ - } while (0) - -union DWunion { - struct { - s32 high; - s32 low; - } s; - s64 ll; -}; - -u64 __umulsidi3(u32 u, u32 v) -{ - union DWunion __w; - - umul_ppmm(__w.s.high, __w.s.low, u, v); - - return __w.ll; -} |