File: [Development] / linux-2.6-xfs / include / asm-m68k / div64.h (download)
Revision 1.2, Thu May 24 16:41:45 2007 UTC (10 years, 5 months ago) by tes.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.1: +3 -0
lines
Merge up to 2.6.22-rc2
Merge of 2.6.x-xfs-melb:linux:28675b by kenmcd.
|
#ifndef _M68K_DIV64_H
#define _M68K_DIV64_H
#include <linux/types.h>
/* n = n / base; return rem; */
#define do_div(n, base) ({ \
union { \
unsigned long n32[2]; \
unsigned long long n64; \
} __n; \
unsigned long __rem, __upper; \
\
__n.n64 = (n); \
if ((__upper = __n.n32[0])) { \
asm ("divul.l %2,%1:%0" \
: "=d" (__n.n32[0]), "=d" (__upper) \
: "d" (base), "0" (__n.n32[0])); \
} \
asm ("divu.l %2,%1:%0" \
: "=d" (__n.n32[1]), "=d" (__rem) \
: "d" (base), "1" (__upper), "0" (__n.n32[1])); \
(n) = __n.n64; \
__rem; \
})
extern uint64_t div64_64(uint64_t dividend, uint64_t divisor);
#endif /* _M68K_DIV64_H */