linux-old/include/asm-s390/div64.h
<<
>>
Prefs
   1#ifndef __S390_DIV64
   2#define __S390_DIV64
   3
   4/* for do_div "base" needs to be smaller than 2^31-1 */
   5 
   6#define do_div(n, base) ({                                      \
   7        unsigned long long __n = (n);                           \
   8        unsigned long __r;                                      \
   9                                                                \
  10        asm ("   slr  0,0\n"                                    \
  11             "   l    1,%1\n"                                   \
  12             "   srdl 0,1\n"                                    \
  13             "   dr   0,%2\n"                                   \
  14             "   alr  1,1\n"                                    \
  15             "   alr  0,0\n"                                    \
  16             "   lhi  2,1\n"                                    \
  17             "   n    2,%1\n"                                   \
  18             "   alr  0,2\n"                                    \
  19             "   clr  0,%2\n"                                   \
  20             "   jl   0f\n"                                     \
  21             "   slr  0,%2\n"                                   \
  22             "   ahi  1,1\n"                                    \
  23             "0: st   1,%1\n"                                   \
  24             "   l    1,4+%1\n"                                 \
  25             "   srdl 0,1\n"                                    \
  26             "   dr   0,%2\n"                                   \
  27             "   alr  1,1\n"                                    \
  28             "   alr  0,0\n"                                    \
  29             "   lhi  2,1\n"                                    \
  30             "   n    2,4+%1\n"                                 \
  31             "   alr  0,2\n"                                    \
  32             "   clr  0,%2\n"                                   \
  33             "   jl   1f\n"                                     \
  34             "   slr  0,%2\n"                                   \
  35             "   ahi  1,1\n"                                    \
  36             "1: st   1,4+%1\n"                                 \
  37             "   lr   %0,0"                                     \
  38             : "=d" (__r), "+m" (__n)                           \
  39             : "d" (base) : "0", "1", "2", "cc" );              \
  40        (n) = (__n);                                            \
  41        __r;                                                    \
  42})
  43
  44#endif
  45
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.