syslinux/memdump/__udivmoddi4.c
<<
>>
Prefs
   1#include <stdint.h>
   2
   3uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t * rem_p)
   4{
   5    uint64_t quot = 0, qbit = 1;
   6
   7    if (den == 0) {
   8        asm volatile ("int $0");
   9        return 0;               /* If trap returns... */
  10    }
  11
  12    /* Left-justify denominator and count shift */
  13    while ((int64_t) den >= 0) {
  14        den <<= 1;
  15        qbit <<= 1;
  16    }
  17
  18    while (qbit) {
  19        if (den <= num) {
  20            num -= den;
  21            quot += qbit;
  22        }
  23        den >>= 1;
  24        qbit >>= 1;
  25    }
  26
  27    if (rem_p)
  28        *rem_p = num;
  29
  30    return quot;
  31}
  32
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.