~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-m68k/div64.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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), "" (__n.n32[0]));        \
 19         }                                                       \
 20         asm ("divu.l %2,%1:%0"                                  \
 21                 : "=d" (__n.n32[1]), "=d" (__rem)               \
 22                 : "d" (base), "1" (__upper), "" (__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 */
 36 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.