div64.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _M68K_DIV64_H
  2. #define _M68K_DIV64_H
  3. /* n = n / base; return rem; */
  4. #if 1
  5. #define do_div(n, base) ({
  6. union {
  7. unsigned long n32[2];
  8. unsigned long long n64;
  9. } __n;
  10. unsigned long __rem, __upper;
  11. __n.n64 = (n);
  12. if ((__upper = __n.n32[0])) {
  13. asm ("divul.l %2,%1:%0"
  14. : "=d" (__n.n32[0]), "=d" (__upper)
  15. : "d" (base), "0" (__n.n32[0]));
  16. }
  17. asm ("divu.l %2,%1:%0"
  18. : "=d" (__n.n32[1]), "=d" (__rem)
  19. : "d" (base), "1" (__upper), "0" (__n.n32[1]));
  20. (n) = __n.n64;
  21. __rem;
  22. })
  23. #else
  24. #define do_div(n,base) ({
  25. int __res;
  26. __res = ((unsigned long) n) % (unsigned) base;
  27. n = ((unsigned long) n) / (unsigned) base;
  28. __res;
  29. })
  30. #endif
  31. #endif /* _M68K_DIV64_H */