Chameleon

Chameleon Svn Source Tree

Root/branches/meklortOld/i386/modules/klibc/__udivmoddi4.c

Source at commit 1077 created 13 years 1 month ago.
By azimutz, Removing this info from DEBUG's realm. This will be enabled by default until i gather enough feedback to decide whether it will stay On or Off by default. This info display, is only available on Gui; ShowInfo=No disables it. For the Gui minimalist, "Boot Banner"=No also disables it. Ok, "house cleaning" is suspended until i figure out what Meklort's cooking over at that new branch... "rewrite" :-o just the name sounds scary :-D
1#include "libsaio.h"
2
3extern void __divide_error();
4
5uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t * rem_p)
6{
7uint64_t quot = 0, qbit = 1;
8
9if (den == 0) {
10__divide_error();
11return 0;/* If trap returns... */
12}
13
14/* Left-justify denominator and count shift */
15while ((int64_t) den >= 0) {
16den <<= 1;
17qbit <<= 1;
18}
19
20while (qbit) {
21if (den <= num) {
22num -= den;
23quot += qbit;
24}
25den >>= 1;
26qbit >>= 1;
27}
28
29if (rem_p)
30*rem_p = num;
31
32return quot;
33}
34

Archive Download this file

Revision: 1077