|
|
1.1 root 1: #include "libgcc.h"
2:
3: 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: __divide_error();
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.