projects
/
profile
/
ivi
/
syslinux.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
Merge commit 'hdt-0.3.5'
[profile/ivi/syslinux.git]
/
dos
/
__udivmoddi4.c
1
#include <stdint.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
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
}