Kyle McMartin | efb80e7 | 2007-10-18 00:06:26 -0700 | [diff] [blame^] | 1 | #include "libgcc.h" |
2 | |||||
3 | u64 __lshrdi3(u64 v, int cnt) | ||||
4 | { | ||||
5 | int c = cnt & 31; | ||||
6 | u32 vl = (u32) v; | ||||
7 | u32 vh = (u32) (v >> 32); | ||||
8 | |||||
9 | if (cnt & 32) { | ||||
10 | vl = (vh >> c); | ||||
11 | vh = 0; | ||||
12 | } else { | ||||
13 | vl = (vl >> c) + (vh << (32 - c)); | ||||
14 | vh = (vh >> c); | ||||
15 | } | ||||
16 | |||||
17 | return ((u64) vh << 32) + vl; | ||||
18 | } | ||||
19 | EXPORT_SYMBOL(__lshrdi3); |