aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/include/asm/div64.h
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2009-04-07 16:34:16 -0400
committerJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2009-04-07 16:34:16 -0400
commit38f4b8c0da01ae7cd9b93386842ce272d6fde9ab (patch)
tree3c8c52201aac038094bfea7efdd0984a8f62045e /arch/m68k/include/asm/div64.h
parenta811454027352c762e0d5bba1b1d8f7d26bf96ae (diff)
parent8e2c4f2844c0e8dcdfe312e5f2204854ca8532c6 (diff)
Merge commit 'origin/master' into for-linus/xen/master
* commit 'origin/master': (4825 commits) Fix build errors due to CONFIG_BRANCH_TRACER=y parport: Use the PCI IRQ if offered tty: jsm cleanups Adjust path to gpio headers KGDB_SERIAL_CONSOLE check for module Change KCONFIG name tty: Blackin CTS/RTS Change hardware flow control from poll to interrupt driven Add support for the MAX3100 SPI UART. lanana: assign a device name and numbering for MAX3100 serqt: initial clean up pass for tty side tty: Use the generic RS485 ioctl on CRIS tty: Correct inline types for tty_driver_kref_get() splice: fix deadlock in splicing to file nilfs2: support nanosecond timestamp nilfs2: introduce secondary super block nilfs2: simplify handling of active state of segments nilfs2: mark minor flag for checkpoint created by internal operation nilfs2: clean up sketch file nilfs2: super block operations fix endian bug ... Conflicts: arch/x86/include/asm/thread_info.h arch/x86/lguest/boot.c drivers/xen/manage.c
Diffstat (limited to 'arch/m68k/include/asm/div64.h')
-rw-r--r--arch/m68k/include/asm/div64.h37
1 files changed, 33 insertions, 4 deletions
diff --git a/arch/m68k/include/asm/div64.h b/arch/m68k/include/asm/div64.h
index d211d9f54276..edb66148a71d 100644
--- a/arch/m68k/include/asm/div64.h
+++ b/arch/m68k/include/asm/div64.h
@@ -1,5 +1,34 @@
1#ifdef __uClinux__ 1#ifndef _M68K_DIV64_H
2#include "div64_no.h" 2#define _M68K_DIV64_H
3
4#ifdef CONFIG_MMU
5
6#include <linux/types.h>
7
8/* n = n / base; return rem; */
9
10#define do_div(n, base) ({ \
11 union { \
12 unsigned long n32[2]; \
13 unsigned long long n64; \
14 } __n; \
15 unsigned long __rem, __upper; \
16 \
17 __n.n64 = (n); \
18 if ((__upper = __n.n32[0])) { \
19 asm ("divul.l %2,%1:%0" \
20 : "=d" (__n.n32[0]), "=d" (__upper) \
21 : "d" (base), "0" (__n.n32[0])); \
22 } \
23 asm ("divu.l %2,%1:%0" \
24 : "=d" (__n.n32[1]), "=d" (__rem) \
25 : "d" (base), "1" (__upper), "0" (__n.n32[1])); \
26 (n) = __n.n64; \
27 __rem; \
28})
29
3#else 30#else
4#include "div64_mm.h" 31#include <asm-generic/div64.h>
5#endif 32#endif /* CONFIG_MMU */
33
34#endif /* _M68K_DIV64_H */