Root/
Source at commit 1146 created 12 years 10 months ago. By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing). | |
---|---|
1 | #include "libsaio.h"␊ |
2 | extern void __divide_error();␊ |
3 | uint32_t __udivmodsi4(uint32_t num, uint32_t den, uint32_t * rem_p)␊ |
4 | {␊ |
5 | ␉uint32_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 ((int32_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 | }␊ |
32 |