__ashldi3.c 292 B

12345678910111213141516171819
  1. #include "libgcc.h"
  2. u64 __ashldi3(u64 v, int cnt)
  3. {
  4. int c = cnt & 31;
  5. u32 vl = (u32) v;
  6. u32 vh = (u32) (v >> 32);
  7. if (cnt & 32) {
  8. vh = (vl << c);
  9. vl = 0;
  10. } else {
  11. vh = (vh << c) + (vl >> (32 - c));
  12. vl = (vl << c);
  13. }
  14. return ((u64) vh << 32) + vl;
  15. }
  16. EXPORT_SYMBOL(__ashldi3);