]> git.pld-linux.org Git - packages/kernel.git/blame - 2.6.0-t8-__div64_32-lkml.patch
- CSZ scheduler removed from kernel tree.
[packages/kernel.git] / 2.6.0-t8-__div64_32-lkml.patch
CommitLineData
5de4fc43 1diff -u -p -r1.1 div64.c
2--- linux.org/lib/div64.c 29 Jul 2003 17:02:19 -0000 1.1
3+++ linux/lib/div64.c 24 Oct 2003 04:10:59 -0000
4@@ -25,25 +25,27 @@
5
6 uint32_t __div64_32(uint64_t *n, uint32_t base)
7 {
8- uint32_t low, low2, high, rem;
9+ uint64_t rem = *n;
10+ uint64_t b = base;
11+ uint64_t res = 0, d = 1;
12
13- low = *n & 0xffffffff;
14- high = *n >> 32;
15- rem = high % (uint32_t)base;
16- high = high / (uint32_t)base;
17- low2 = low >> 16;
18- low2 += rem << 16;
19- rem = low2 % (uint32_t)base;
20- low2 = low2 / (uint32_t)base;
21- low = low & 0xffff;
22- low += rem << 16;
23- rem = low % (uint32_t)base;
24- low = low / (uint32_t)base;
25+ if (b > 0) {
26+ while (b < rem) {
27+ b <<= 1;
28+ d <<= 1;
29+ }
30+ }
31
32- *n = low +
33- ((uint64_t)low2 << 16) +
34- ((uint64_t)high << 32);
35+ do {
36+ if (rem >= b) {
37+ rem -= b;
38+ res += d;
39+ }
40+ b >>= 1;
41+ d >>= 1;
42+ } while (d);
43
44+ *n = res;
45 return rem;
46 }
47
This page took 0.909328 seconds and 4 git commands to generate.