X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fdiv64.c;h=a111eb8de9cfeefb2bc82011ef580f970091bfcd;hb=5402a7349d26875f69c184badf87b88541b1cf6c;hp=689bd76833faf4ae7eed39efc50bc52d766f5135;hpb=2418f4f28f8467b92a6177af32d05737ebf6206c;p=linux-2.6 diff --git a/lib/div64.c b/lib/div64.c index 689bd76833..a111eb8de9 100644 --- a/lib/div64.c +++ b/lib/div64.c @@ -78,9 +78,10 @@ EXPORT_SYMBOL(div_s64_rem); #endif /* 64bit divisor, dividend and result. dynamic precision */ -uint64_t div64_64(uint64_t dividend, uint64_t divisor) +#ifndef div64_u64 +u64 div64_u64(u64 dividend, u64 divisor) { - uint32_t high, d; + u32 high, d; high = divisor >> 32; if (high) { @@ -91,10 +92,19 @@ uint64_t div64_64(uint64_t dividend, uint64_t divisor) } else d = divisor; - do_div(dividend, d); - - return dividend; + return div_u64(dividend, d); } -EXPORT_SYMBOL(div64_64); +EXPORT_SYMBOL(div64_u64); +#endif #endif /* BITS_PER_LONG == 32 */ + +/* + * Iterative div/mod for use when dividend is not expected to be much + * bigger than divisor. + */ +u32 iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder) +{ + return __iter_div_u64_rem(dividend, divisor, remainder); +} +EXPORT_SYMBOL(iter_div_u64_rem);