root/arch/microblaze/lib/lshrdi3.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. __lshrdi3

   1 // SPDX-License-Identifier: GPL-2.0
   2 #include <linux/export.h>
   3 
   4 #include "libgcc.h"
   5 
   6 long long __lshrdi3(long long u, word_type b)
   7 {
   8         DWunion uu, w;
   9         word_type bm;
  10 
  11         if (b == 0)
  12                 return u;
  13 
  14         uu.ll = u;
  15         bm = 32 - b;
  16 
  17         if (bm <= 0) {
  18                 w.s.high = 0;
  19                 w.s.low = (unsigned int) uu.s.high >> -bm;
  20         } else {
  21                 const unsigned int carries = (unsigned int) uu.s.high << bm;
  22 
  23                 w.s.high = (unsigned int) uu.s.high >> b;
  24                 w.s.low = ((unsigned int) uu.s.low >> b) | carries;
  25         }
  26 
  27         return w.ll;
  28 }
  29 EXPORT_SYMBOL(__lshrdi3);

/* [<][>][^][v][top][bottom][index][help] */