Annotation of qemu/roms/ipxe/src/libgcc/__udivmoddi4.c, revision 1.1.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.