4 /* n = n / base; return rem; */
7 #define do_div(n, base) ({ \
9 unsigned long n32[2]; \
10 unsigned long long n64; \
12 unsigned long __rem, __upper; \
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])); \
20 asm ("divu.l %2,%1:%0" \
21 : "=d" (__n.n32[1]), "=d" (__rem) \
22 : "d" (base), "1" (__upper), "0" (__n.n32[1])); \
27 #define do_div(n,base) ({ \
29 __res = ((unsigned long) n) % (unsigned) base; \
30 n = ((unsigned long) n) / (unsigned) base; \
35 #endif /* _M68K_DIV64_H */