You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
[NET]: div64_64 consolidate (rev3)
Here is the current version of the 64 bit divide common code. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
9d729f72dc
commit
3927f2e8f9
+3
-2
@@ -4,7 +4,7 @@
|
||||
|
||||
lib-y := ctype.o string.o vsprintf.o cmdline.o \
|
||||
rbtree.o radix-tree.o dump_stack.o \
|
||||
idr.o div64.o int_sqrt.o bitmap.o extable.o prio_tree.o \
|
||||
idr.o int_sqrt.o bitmap.o extable.o prio_tree.o \
|
||||
sha1.o irq_regs.o reciprocal_div.o
|
||||
|
||||
lib-$(CONFIG_MMU) += ioremap.o
|
||||
@@ -12,7 +12,8 @@ lib-$(CONFIG_SMP) += cpumask.o
|
||||
|
||||
lib-y += kobject.o kref.o kobject_uevent.o klist.o
|
||||
|
||||
obj-y += sort.o parser.o halfmd4.o debug_locks.o random32.o bust_spinlocks.o
|
||||
obj-y += div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \
|
||||
bust_spinlocks.o
|
||||
|
||||
ifeq ($(CONFIG_DEBUG_KOBJECT),y)
|
||||
CFLAGS_kobject.o += -DDEBUG
|
||||
|
||||
+22
@@ -58,4 +58,26 @@ uint32_t __div64_32(uint64_t *n, uint32_t base)
|
||||
|
||||
EXPORT_SYMBOL(__div64_32);
|
||||
|
||||
/* 64bit divisor, dividend and result. dynamic precision */
|
||||
uint64_t div64_64(uint64_t dividend, uint64_t divisor)
|
||||
{
|
||||
uint32_t d = divisor;
|
||||
|
||||
if (divisor > 0xffffffffULL) {
|
||||
unsigned int shift = fls(divisor >> 32);
|
||||
|
||||
d = divisor >> shift;
|
||||
dividend >>= shift;
|
||||
}
|
||||
|
||||
/* avoid 64 bit division if possible */
|
||||
if (dividend >> 32)
|
||||
do_div(dividend, d);
|
||||
else
|
||||
dividend = (uint32_t) dividend / d;
|
||||
|
||||
return dividend;
|
||||
}
|
||||
EXPORT_SYMBOL(div64_64);
|
||||
|
||||
#endif /* BITS_PER_LONG == 32 */
|
||||
|
||||
Reference in New Issue
Block a user