Linux 2.6.24-rc4
[linux-2.6/verdex.git] / arch / parisc / lib / libgcc / __udivmoddi4.c
blob2df0caa5a7d80582daf5fd95f857a30b84dbb1bb
1 #include "libgcc.h"
3 u64 __udivmoddi4(u64 num, u64 den, u64 * rem_p)
5 u64 quot = 0, qbit = 1;
7 if (den == 0) {
8 BUG();
11 /* Left-justify denominator and count shift */
12 while ((s64) den >= 0) {
13 den <<= 1;
14 qbit <<= 1;
17 while (qbit) {
18 if (den <= num) {
19 num -= den;
20 quot += qbit;
22 den >>= 1;
23 qbit >>= 1;
26 if (rem_p)
27 *rem_p = num;
29 return quot;
31 EXPORT_SYMBOL(__udivmoddi4);