Rev 804 | Rev 829 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 804 | Rev 828 | ||
|---|---|---|---|
| Line 327... | Line 327... | ||
| 327 | __u32 alow, blow; |
327 | __u32 alow, blow; |
| 328 | 328 | ||
| 329 | alow = a & 0xFFFFFFFF; |
329 | alow = a & 0xFFFFFFFF; |
| 330 | blow = b & 0xFFFFFFFF; |
330 | blow = b & 0xFFFFFFFF; |
| 331 | 331 | ||
| 332 | a <<= 32; |
332 | a >>= 32; |
| 333 | b <<= 32; |
333 | b >>= 32; |
| 334 | 334 | ||
| 335 | low = (__u64)alow * blow; |
335 | low = ((__u64)alow) * blow; |
| 336 | middle1 = a * blow; |
336 | middle1 = a * blow; |
| 337 | middle2 = alow * b; |
337 | middle2 = alow * b; |
| 338 | high = a * b; |
338 | high = a * b; |
| 339 | 339 | ||
| 340 | middle1 += middle2; |
340 | middle1 += middle2; |
| 341 | high += ((__u64)(middle1 < middle2) << 32) + (middle1 >> 32); |
341 | high += (((__u64)(middle1 < middle2)) << 32) + (middle1 >> 32); |
| 342 | middle1 <<= 32; |
342 | middle1 <<= 32; |
| 343 | low += middle1; |
343 | low += middle1; |
| 344 | high += (low < middle1); |
344 | high += (low < middle1); |
| 345 | *lo = low; |
345 | *lo = low; |
| 346 | *hi = high; |
346 | *hi = high; |
| - | 347 | ||
| 347 | return; |
348 | return; |
| 348 | } |
349 | } |
| 349 | 350 | ||
| 350 | 351 | ||