projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'warnings-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git...
[powerpc.git]
/
lib
/
div64.c
diff --git
a/lib/div64.c
b/lib/div64.c
index
c3d7655
..
b71cf93
100644
(file)
--- a/
lib/div64.c
+++ b/
lib/div64.c
@@
-23,7
+23,7
@@
/* Not needed on 64bit architectures */
#if BITS_PER_LONG == 32
/* Not needed on 64bit architectures */
#if BITS_PER_LONG == 32
-uint32_t __div64_32(uint64_t *n, uint32_t base)
+uint32_t __
attribute__((weak)) __
div64_32(uint64_t *n, uint32_t base)
{
uint64_t rem = *n;
uint64_t b = base;
{
uint64_t rem = *n;
uint64_t b = base;
@@
-61,20
+61,18
@@
EXPORT_SYMBOL(__div64_32);
/* 64bit divisor, dividend and result. dynamic precision */
uint64_t div64_64(uint64_t dividend, uint64_t divisor)
{
/* 64bit divisor, dividend and result. dynamic precision */
uint64_t div64_64(uint64_t dividend, uint64_t divisor)
{
- uint32_t
d = divisor
;
+ uint32_t
high, d
;
- if (divisor > 0xffffffffULL) {
- unsigned int shift = fls(divisor >> 32);
+ high = divisor >> 32;
+ if (high) {
+ unsigned int shift = fls(high);
d = divisor >> shift;
dividend >>= shift;
d = divisor >> shift;
dividend >>= shift;
- }
+ } else
+ d = divisor;
- /* avoid 64 bit division if possible */
- if (dividend >> 32)
- do_div(dividend, d);
- else
- dividend = (uint32_t) dividend / d;
+ do_div(dividend, d);
return dividend;
}
return dividend;
}