diff options
author | Jon Loeliger <jdl@freescale.com> | 2007-08-13 11:01:52 -0500 |
---|---|---|
committer | Jon Loeliger <jdl@freescale.com> | 2007-08-13 11:01:52 -0500 |
commit | 8e2dd87eee01bb1b83beab7caf22b851c5cafb2c (patch) | |
tree | 47a43e05d90de7d64ed356bab5f15e8d89f5b5cc /lib_avr32 | |
parent | cca34967cbd13ff6bd352be29e3f1cc88ab24c05 (diff) | |
parent | 9986bc3e40e899bea372a99a2bca4071bdf2e24b (diff) |
Merge commit 'remotes/wd/master'
Conflicts:
MAKEALL
With any luck, this is the last MAKEALL merge conflict!
Diffstat (limited to 'lib_avr32')
-rw-r--r-- | lib_avr32/Makefile | 2 | ||||
-rw-r--r-- | lib_avr32/div64.c | 54 |
2 files changed, 1 insertions, 55 deletions
diff --git a/lib_avr32/Makefile b/lib_avr32/Makefile index cf20836023..bb2938fe5c 100644 --- a/lib_avr32/Makefile +++ b/lib_avr32/Makefile @@ -29,7 +29,7 @@ LIB = $(obj)lib$(ARCH).a SOBJS = memset.o -COBJS = board.o interrupts.o avr32_linux.o div64.o +COBJS = board.o interrupts.o avr32_linux.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) diff --git a/lib_avr32/div64.c b/lib_avr32/div64.c deleted file mode 100644 index 99726e325d..0000000000 --- a/lib_avr32/div64.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2003 Bernardo Innocenti <bernie@develer.com> - * - * Based on former do_div() implementation from asm-parisc/div64.h: - * Copyright (C) 1999 Hewlett-Packard Co - * Copyright (C) 1999 David Mosberger-Tang <davidm@hpl.hp.com> - * - * - * Generic C version of 64bit/32bit division and modulo, with - * 64bit result and 32bit remainder. - * - * The fast case for (n>>32 == 0) is handled inline by do_div(). - * - * Code generated for this function might be very inefficient - * for some CPUs. __div64_32() can be overridden by linking arch-specific - * assembly versions such as arch/ppc/lib/div64.S and arch/sh/lib/div64.S. - */ - -#include <linux/types.h> - -#include <asm/div64.h> - -uint32_t __div64_32(uint64_t *n, uint32_t base) -{ - uint64_t rem = *n; - uint64_t b = base; - uint64_t res, d = 1; - uint32_t high = rem >> 32; - - /* Reduce the thing a bit first */ - res = 0; - if (high >= base) { - high /= base; - res = (uint64_t) high << 32; - rem -= (uint64_t) (high*base) << 32; - } - - while ((int64_t)b > 0 && b < rem) { - b = b+b; - d = d+d; - } - - do { - if (rem >= b) { - rem -= b; - res += d; - } - b >>= 1; - d >>= 1; - } while (d); - - *n = res; - return rem; -} |