repo.or.cz
/
openbios.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
Disable mixing of DMA and FIFO messages in the Solaris ESP kernel module.
[openbios.git]
/
libgcc
/
__udivmodti4.c
blob
e373c59e60ea9c8a238634b39a939c365421d349
1
#include
"libgcc.h"
2
3
__uint128_t
__udivmodti4
(
__uint128_t num
,
__uint128_t den
,
__uint128_t
*
rem_p
)
4
{
5
__uint128_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
( (
__int128_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
}