diff options
author | Jeff Garzik <jgarzik@pretzel.yyz.us> | 2005-06-22 13:07:28 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-06-22 13:07:28 -0400 |
commit | ff40c6d3d1437ecdf295b8e39adcb06c3d6021ef (patch) | |
tree | 3666d029b4bd4df2909dbefd9c7a09e6042b7d32 /include/asm-m32r/div64.h | |
parent | 8bf62ecee58360749c5f0e68bc97d5e02a6816b1 (diff) | |
parent | 2a5a68b840cbab31baab2d9b2e1e6de3b289ae1e (diff) |
Merge upstream kernel changes into 'C/H/S support' branch of libata.
Diffstat (limited to 'include/asm-m32r/div64.h')
-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 */ | ||