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 |