make oldconfig will rebuild these...
[linux-2.4.21-pre4.git] / include / asm-m68k / div64.h
1 #ifndef _M68K_DIV64_H
2 #define _M68K_DIV64_H
3
4 /* n = n / base; return rem; */
5
6 #if 1
7 #define do_div(n, base) ({                                      \
8         union {                                                 \
9                 unsigned long n32[2];                           \
10                 unsigned long long n64;                         \
11         } __n;                                                  \
12         unsigned long __rem, __upper;                           \
13                                                                 \
14         __n.n64 = (n);                                          \
15         if ((__upper = __n.n32[0])) {                           \
16                 asm ("divul.l %2,%1:%0"                         \
17                         : "=d" (__n.n32[0]), "=d" (__upper)     \
18                         : "d" (base), "0" (__n.n32[0]));        \
19         }                                                       \
20         asm ("divu.l %2,%1:%0"                                  \
21                 : "=d" (__n.n32[1]), "=d" (__rem)               \
22                 : "d" (base), "1" (__upper), "0" (__n.n32[1])); \
23         (n) = __n.n64;                                          \
24         __rem;                                                  \
25 })
26 #else
27 #define do_div(n,base) ({                                       \
28         int __res;                                              \
29         __res = ((unsigned long) n) % (unsigned) base;          \
30         n = ((unsigned long) n) / (unsigned) base;              \
31         __res;                                                  \
32 })
33 #endif
34
35 #endif /* _M68K_DIV64_H */