Annotation of qemu/roms/ipxe/src/libgcc/__udivmoddi4.c, revision 1.1

1.1     ! root        1: #include "libgcc.h"
        !             2: 
        !             3: __libgcc uint64_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:     return 1/((unsigned)den); /* Intentional divide by zero, without
        !             9:                                 triggering a compiler warning which
        !            10:                                 would abort the build */
        !            11:   }
        !            12: 
        !            13:   /* Left-justify denominator and count shift */
        !            14:   while ( (int64_t)den >= 0 ) {
        !            15:     den <<= 1;
        !            16:     qbit <<= 1;
        !            17:   }
        !            18: 
        !            19:   while ( qbit ) {
        !            20:     if ( den <= num ) {
        !            21:       num -= den;
        !            22:       quot += qbit;
        !            23:     }
        !            24:     den >>= 1;
        !            25:     qbit >>= 1;
        !            26:   }
        !            27: 
        !            28:   if ( rem_p )
        !            29:     *rem_p = num;
        !            30: 
        !            31:   return quot;
        !            32: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.