X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=include%2Fdiv64.h;h=d83314435d860d59ffb9d5a14284d70a3c3a4453;hb=cf05528238c2ef91ad81658158616b3a75b74642;hp=2e0ba8389e11d992fda785f191d326dfbb74b94a;hpb=d1bc6c8d5f4a9c7ca9fb2292d5c65f846dcc3995;p=karo-tx-uboot.git diff --git a/include/div64.h b/include/div64.h index 2e0ba8389e..d83314435d 100644 --- a/include/div64.h +++ b/include/div64.h @@ -8,9 +8,9 @@ * * uint32_t do_div(uint64_t *n, uint32_t base) * { - * uint32_t remainder = *n % base; - * *n = *n / base; - * return remainder; + * uint32_t remainder = *n % base; + * *n = *n / base; + * return remainder; * } * * NOTE: macro parameter n is evaluated multiple times, @@ -31,9 +31,19 @@ extern uint32_t __div64_32(uint64_t *dividend, uint32_t divisor); if (((n) >> 32) == 0) { \ __rem = (uint32_t)(n) % __base; \ (n) = (uint32_t)(n) / __base; \ - } else \ + } else \ __rem = __div64_32(&(n), __base); \ __rem; \ }) +/* Wrapper for do_div(). Doesn't modify dividend and returns + * the result, not reminder. + */ +static inline uint64_t lldiv(uint64_t dividend, uint32_t divisor) +{ + uint64_t __res = dividend; + do_div(__res, divisor); + return(__res); +} + #endif /* _ASM_GENERIC_DIV64_H */