diff options
| author | Hirokazu Takata <takata@linux-m32r.org> | 2005-06-21 20:16:17 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-21 22:07:31 -0400 |
| commit | 5757b284a300e0e5d2173750906625b6470bd9f0 (patch) | |
| tree | 262e1ad45505aa85ef202e5be8e3f022e5249bf6 | |
| parent | 960c2a89a051333d2e6793a416d9a33c4b116b41 (diff) | |
[PATCH] m32r: Use asm-generic/div64.h
The current include/asm-m32r/div64.h of 2.6.12-rc5 looks buggy. Here is a
patch for updating it to use asm-generic/div64.h for m32r like other
architectures.
Signed-off-by: Hitoshi Yamamoto <hitoshiy@isl.melco.co.jp>
Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | include/asm-m32r/div64.h | 39 |
1 files changed, 1 insertions, 38 deletions
diff --git a/include/asm-m32r/div64.h b/include/asm-m32r/div64.h index 417a51bd552d..6cd978cefb28 100644 --- a/include/asm-m32r/div64.h +++ b/include/asm-m32r/div64.h | |||
| @@ -1,38 +1 @@ | |||
| 1 | #ifndef _ASM_M32R_DIV64 | #include <asm-generic/div64.h> | |
| 2 | #define _ASM_M32R_DIV64 | ||
| 3 | |||
| 4 | /* $Id$ */ | ||
| 5 | |||
| 6 | /* unsigned long long division. | ||
| 7 | * Input: | ||
| 8 | * unsigned long long n | ||
| 9 | * unsigned long base | ||
| 10 | * Output: | ||
| 11 | * n = n / base; | ||
| 12 | * return value = n % base; | ||
| 13 | */ | ||
| 14 | #define do_div(n, base) \ | ||
| 15 | ({ \ | ||
| 16 | unsigned long _res, _high, _mid, _low; \ | ||
| 17 | \ | ||
| 18 | _low = (n) & 0xffffffffUL; \ | ||
| 19 | _high = (n) >> 32; \ | ||
| 20 | if (_high) { \ | ||
| 21 | _mid = (_high % (unsigned long)(base)) << 16; \ | ||
| 22 | _high = _high / (unsigned long)(base); \ | ||
| 23 | _mid += _low >> 16; \ | ||
| 24 | _low &= 0x0000ffffUL; \ | ||
| 25 | _low += (_mid % (unsigned long)(base)) << 16; \ | ||
| 26 | _mid = _mid / (unsigned long)(base); \ | ||
| 27 | _res = _low % (unsigned long)(base); \ | ||
| 28 | _low = _low / (unsigned long)(base); \ | ||
| 29 | n = _low + ((long long)_mid << 16) + \ | ||
| 30 | ((long long)_high << 32); \ | ||
| 31 | } else { \ | ||
| 32 | _res = _low % (unsigned long)(base); \ | ||
| 33 | n = (_low / (unsigned long)(base)); \ | ||
| 34 | } \ | ||
| 35 | _res; \ | ||
| 36 | }) | ||
| 37 | |||
| 38 | #endif /* _ASM_M32R_DIV64 */ | ||
