source: bootcd/isolinux/syslinux-6.03/dos/__udivmoddi4.c @ dd1be7c

Last change on this file since dd1be7c was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 490 bytes
Line 
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}
Note: See TracBrowser for help on using the repository browser.