12345678910111213141516171819202122232425262728293031 |
- #include "libgcc.h"
- u64 __udivmoddi4(u64 num, u64 den, u64 * rem_p)
- {
- u64 quot = 0, qbit = 1;
- if (den == 0) {
- BUG();
- }
- /* Left-justify denominator and count shift */
- while ((s64) den >= 0) {
- den <<= 1;
- qbit <<= 1;
- }
- while (qbit) {
- if (den <= num) {
- num -= den;
- quot += qbit;
- }
- den >>= 1;
- qbit >>= 1;
- }
- if (rem_p)
- *rem_p = num;
- return quot;
- }
- EXPORT_SYMBOL(__udivmoddi4);
|