| #include "libgcc.h" | |
| u32 __udivmodsi4(u32 num, u32 den, u32 * rem_p) | |
| { | |
| u32 quot = 0, qbit = 1; | |
| if (den == 0) { | |
| BUG(); | |
| } | |
| /* Left-justify denominator and count shift */ | |
| while ((s32) 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(__udivmodsi4); |