]>
Commit | Line | Data |
---|---|---|
efb80e7e KM |
1 | #include "libgcc.h" |
2 | ||
3 | u64 __udivmoddi4(u64 num, u64 den, u64 * rem_p) | |
4 | { | |
5 | u64 quot = 0, qbit = 1; | |
6 | ||
7 | if (den == 0) { | |
8 | BUG(); | |
9 | } | |
10 | ||
11 | /* Left-justify denominator and count shift */ | |
12 | while ((s64) den >= 0) { | |
13 | den <<= 1; | |
14 | qbit <<= 1; | |
15 | } | |
16 | ||
17 | while (qbit) { | |
18 | if (den <= num) { | |
19 | num -= den; | |
20 | quot += qbit; | |
21 | } | |
22 | den >>= 1; | |
23 | qbit >>= 1; | |
24 | } | |
25 | ||
26 | if (rem_p) | |
27 | *rem_p = num; | |
28 | ||
29 | return quot; | |
30 | } | |
31 | EXPORT_SYMBOL(__udivmoddi4); |