[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>
This commit is contained in:
parent
960c2a89a0
commit
5757b284a3
|
@ -1,38 +1 @@
|
||||||
#ifndef _ASM_M32R_DIV64
|
#include <asm-generic/div64.h>
|
||||||
#define _ASM_M32R_DIV64
|
|
||||||
|
|
||||||
/* $Id$ */
|
|
||||||
|
|
||||||
/* unsigned long long division.
|
|
||||||
* Input:
|
|
||||||
* unsigned long long n
|
|
||||||
* unsigned long base
|
|
||||||
* Output:
|
|
||||||
* n = n / base;
|
|
||||||
* return value = n % base;
|
|
||||||
*/
|
|
||||||
#define do_div(n, base) \
|
|
||||||
({ \
|
|
||||||
unsigned long _res, _high, _mid, _low; \
|
|
||||||
\
|
|
||||||
_low = (n) & 0xffffffffUL; \
|
|
||||||
_high = (n) >> 32; \
|
|
||||||
if (_high) { \
|
|
||||||
_mid = (_high % (unsigned long)(base)) << 16; \
|
|
||||||
_high = _high / (unsigned long)(base); \
|
|
||||||
_mid += _low >> 16; \
|
|
||||||
_low &= 0x0000ffffUL; \
|
|
||||||
_low += (_mid % (unsigned long)(base)) << 16; \
|
|
||||||
_mid = _mid / (unsigned long)(base); \
|
|
||||||
_res = _low % (unsigned long)(base); \
|
|
||||||
_low = _low / (unsigned long)(base); \
|
|
||||||
n = _low + ((long long)_mid << 16) + \
|
|
||||||
((long long)_high << 32); \
|
|
||||||
} else { \
|
|
||||||
_res = _low % (unsigned long)(base); \
|
|
||||||
n = (_low / (unsigned long)(base)); \
|
|
||||||
} \
|
|
||||||
_res; \
|
|
||||||
})
|
|
||||||
|
|
||||||
#endif /* _ASM_M32R_DIV64 */
|
|
||||||
|
|
Loading…
Reference in New Issue