diff options
author | Stephen Hemminger <shemminger@linux-foundation.org> | 2007-03-25 22:54:23 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:23:33 -0400 |
commit | 3927f2e8f9afa3424bb51ca81f7abac01ffd0005 (patch) | |
tree | da9e335169572e6c743c084edce6a802f9e667ee /include | |
parent | 9d729f72dca9406025bcfa9c1f660d71d9ef0ff5 (diff) |
[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>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-arm/div64.h | 3 | ||||
-rw-r--r-- | include/asm-generic/div64.h | 7 | ||||
-rw-r--r-- | include/asm-i386/div64.h | 4 | ||||
-rw-r--r-- | include/asm-m68k/div64.h | 3 | ||||
-rw-r--r-- | include/asm-mips/div64.h | 11 | ||||
-rw-r--r-- | include/asm-um/div64.h | 1 | ||||
-rw-r--r-- | include/asm-xtensa/div64.h | 6 |
7 files changed, 34 insertions, 1 deletions
diff --git a/include/asm-arm/div64.h b/include/asm-arm/div64.h index 37e0a96e8789..0b5f881c3d85 100644 --- a/include/asm-arm/div64.h +++ b/include/asm-arm/div64.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define __ASM_ARM_DIV64 | 2 | #define __ASM_ARM_DIV64 |
3 | 3 | ||
4 | #include <asm/system.h> | 4 | #include <asm/system.h> |
5 | #include <linux/types.h> | ||
5 | 6 | ||
6 | /* | 7 | /* |
7 | * The semantics of do_div() are: | 8 | * The semantics of do_div() are: |
@@ -223,4 +224,6 @@ | |||
223 | 224 | ||
224 | #endif | 225 | #endif |
225 | 226 | ||
227 | extern uint64_t div64_64(uint64_t dividend, uint64_t divisor); | ||
228 | |||
226 | #endif | 229 | #endif |
diff --git a/include/asm-generic/div64.h b/include/asm-generic/div64.h index 8f4e3193342e..a4a49370793c 100644 --- a/include/asm-generic/div64.h +++ b/include/asm-generic/div64.h | |||
@@ -30,6 +30,11 @@ | |||
30 | __rem; \ | 30 | __rem; \ |
31 | }) | 31 | }) |
32 | 32 | ||
33 | static inline uint64_t div64_64(uint64_t dividend, uint64_t divisor) | ||
34 | { | ||
35 | return dividend / divisor; | ||
36 | } | ||
37 | |||
33 | #elif BITS_PER_LONG == 32 | 38 | #elif BITS_PER_LONG == 32 |
34 | 39 | ||
35 | extern uint32_t __div64_32(uint64_t *dividend, uint32_t divisor); | 40 | extern uint32_t __div64_32(uint64_t *dividend, uint32_t divisor); |
@@ -49,6 +54,8 @@ extern uint32_t __div64_32(uint64_t *dividend, uint32_t divisor); | |||
49 | __rem; \ | 54 | __rem; \ |
50 | }) | 55 | }) |
51 | 56 | ||
57 | extern uint64_t div64_64(uint64_t dividend, uint64_t divisor); | ||
58 | |||
52 | #else /* BITS_PER_LONG == ?? */ | 59 | #else /* BITS_PER_LONG == ?? */ |
53 | 60 | ||
54 | # error do_div() does not yet support the C64 | 61 | # error do_div() does not yet support the C64 |
diff --git a/include/asm-i386/div64.h b/include/asm-i386/div64.h index 75c67c785bb8..438e980068bd 100644 --- a/include/asm-i386/div64.h +++ b/include/asm-i386/div64.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __I386_DIV64 | 1 | #ifndef __I386_DIV64 |
2 | #define __I386_DIV64 | 2 | #define __I386_DIV64 |
3 | 3 | ||
4 | #include <linux/types.h> | ||
5 | |||
4 | /* | 6 | /* |
5 | * do_div() is NOT a C function. It wants to return | 7 | * do_div() is NOT a C function. It wants to return |
6 | * two values (the quotient and the remainder), but | 8 | * two values (the quotient and the remainder), but |
@@ -45,4 +47,6 @@ div_ll_X_l_rem(long long divs, long div, long *rem) | |||
45 | return dum2; | 47 | return dum2; |
46 | 48 | ||
47 | } | 49 | } |
50 | |||
51 | extern uint64_t div64_64(uint64_t dividend, uint64_t divisor); | ||
48 | #endif | 52 | #endif |
diff --git a/include/asm-m68k/div64.h b/include/asm-m68k/div64.h index 9f65de1a2480..33caad1628d4 100644 --- a/include/asm-m68k/div64.h +++ b/include/asm-m68k/div64.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _M68K_DIV64_H | 1 | #ifndef _M68K_DIV64_H |
2 | #define _M68K_DIV64_H | 2 | #define _M68K_DIV64_H |
3 | 3 | ||
4 | #include <linux/types.h> | ||
5 | |||
4 | /* n = n / base; return rem; */ | 6 | /* n = n / base; return rem; */ |
5 | 7 | ||
6 | #define do_div(n, base) ({ \ | 8 | #define do_div(n, base) ({ \ |
@@ -23,4 +25,5 @@ | |||
23 | __rem; \ | 25 | __rem; \ |
24 | }) | 26 | }) |
25 | 27 | ||
28 | extern uint64_t div64_64(uint64_t dividend, uint64_t divisor); | ||
26 | #endif /* _M68K_DIV64_H */ | 29 | #endif /* _M68K_DIV64_H */ |
diff --git a/include/asm-mips/div64.h b/include/asm-mips/div64.h index d107832de1b6..66189f5f6399 100644 --- a/include/asm-mips/div64.h +++ b/include/asm-mips/div64.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2000, 2004 Maciej W. Rozycki | 2 | * Copyright (C) 2000, 2004 Maciej W. Rozycki |
3 | * Copyright (C) 2003 Ralf Baechle | 3 | * Copyright (C) 2003, 07 Ralf Baechle (ralf@linux-mips.org) |
4 | * | 4 | * |
5 | * This file is subject to the terms and conditions of the GNU General Public | 5 | * This file is subject to the terms and conditions of the GNU General Public |
6 | * License. See the file "COPYING" in the main directory of this archive | 6 | * License. See the file "COPYING" in the main directory of this archive |
@@ -9,6 +9,8 @@ | |||
9 | #ifndef _ASM_DIV64_H | 9 | #ifndef _ASM_DIV64_H |
10 | #define _ASM_DIV64_H | 10 | #define _ASM_DIV64_H |
11 | 11 | ||
12 | #include <linux/types.h> | ||
13 | |||
12 | #if (_MIPS_SZLONG == 32) | 14 | #if (_MIPS_SZLONG == 32) |
13 | 15 | ||
14 | #include <asm/compiler.h> | 16 | #include <asm/compiler.h> |
@@ -78,6 +80,8 @@ | |||
78 | __quot = __quot << 32 | __low; \ | 80 | __quot = __quot << 32 | __low; \ |
79 | (n) = __quot; \ | 81 | (n) = __quot; \ |
80 | __mod; }) | 82 | __mod; }) |
83 | |||
84 | extern uint64_t div64_64(uint64_t dividend, uint64_t divisor); | ||
81 | #endif /* (_MIPS_SZLONG == 32) */ | 85 | #endif /* (_MIPS_SZLONG == 32) */ |
82 | 86 | ||
83 | #if (_MIPS_SZLONG == 64) | 87 | #if (_MIPS_SZLONG == 64) |
@@ -101,6 +105,11 @@ | |||
101 | (n) = __quot; \ | 105 | (n) = __quot; \ |
102 | __mod; }) | 106 | __mod; }) |
103 | 107 | ||
108 | static inline uint64_t div64_64(uint64_t dividend, uint64_t divisor) | ||
109 | { | ||
110 | return dividend / divisor; | ||
111 | } | ||
112 | |||
104 | #endif /* (_MIPS_SZLONG == 64) */ | 113 | #endif /* (_MIPS_SZLONG == 64) */ |
105 | 114 | ||
106 | #endif /* _ASM_DIV64_H */ | 115 | #endif /* _ASM_DIV64_H */ |
diff --git a/include/asm-um/div64.h b/include/asm-um/div64.h index 1e17f7409cab..7b73b2cd5b34 100644 --- a/include/asm-um/div64.h +++ b/include/asm-um/div64.h | |||
@@ -3,4 +3,5 @@ | |||
3 | 3 | ||
4 | #include "asm/arch/div64.h" | 4 | #include "asm/arch/div64.h" |
5 | 5 | ||
6 | extern uint64_t div64_64(uint64_t dividend, uint64_t divisor); | ||
6 | #endif | 7 | #endif |
diff --git a/include/asm-xtensa/div64.h b/include/asm-xtensa/div64.h index c4a105776383..20965e3af1dd 100644 --- a/include/asm-xtensa/div64.h +++ b/include/asm-xtensa/div64.h | |||
@@ -11,9 +11,15 @@ | |||
11 | #ifndef _XTENSA_DIV64_H | 11 | #ifndef _XTENSA_DIV64_H |
12 | #define _XTENSA_DIV64_H | 12 | #define _XTENSA_DIV64_H |
13 | 13 | ||
14 | #include <linux/types.h> | ||
15 | |||
14 | #define do_div(n,base) ({ \ | 16 | #define do_div(n,base) ({ \ |
15 | int __res = n % ((unsigned int) base); \ | 17 | int __res = n % ((unsigned int) base); \ |
16 | n /= (unsigned int) base; \ | 18 | n /= (unsigned int) base; \ |
17 | __res; }) | 19 | __res; }) |
18 | 20 | ||
21 | static inline uint64_t div64_64(uint64_t dividend, uint64_t divisor) | ||
22 | { | ||
23 | return dividend / divisor; | ||
24 | } | ||
19 | #endif | 25 | #endif |