Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros
longlong.h File Reference
#include <asm-generic/bitops/count_zeros.h>

Go to the source code of this file.

Macros

#define __BITS4   (W_TYPE_SIZE / 4)
 
#define __ll_B   ((UWtype) 1 << (W_TYPE_SIZE / 2))
 
#define __ll_lowpart(t)   ((UWtype) (t) & (__ll_B - 1))
 
#define __ll_highpart(t)   ((UWtype) (t) >> (W_TYPE_SIZE / 2))
 
#define __MPN(x)   __##x
 
#define __umulsidi3(u, v)
 
#define add_ssaaaa(sh, sl, ah, al, bh, bl)
 
#define sub_ddmmss(sh, sl, ah, al, bh, bl)
 
#define umul_ppmm(w1, w0, u, v)
 
#define __udiv_qrnnd_c(q, r, n1, n0, d)
 
#define UDIV_NEEDS_NORMALIZATION   1
 
#define udiv_qrnnd   __udiv_qrnnd_c
 

Macro Definition Documentation

#define __BITS4   (W_TYPE_SIZE / 4)

Definition at line 38 of file longlong.h.

#define __ll_B   ((UWtype) 1 << (W_TYPE_SIZE / 2))

Definition at line 39 of file longlong.h.

#define __ll_highpart (   t)    ((UWtype) (t) >> (W_TYPE_SIZE / 2))

Definition at line 41 of file longlong.h.

#define __ll_lowpart (   t)    ((UWtype) (t) & (__ll_B - 1))

Definition at line 40 of file longlong.h.

#define __MPN (   x)    __##x

Definition at line 46 of file longlong.h.

#define __udiv_qrnnd_c (   q,
  r,
  n1,
  n0,
  d 
)

Definition at line 1328 of file longlong.h.

#define __umulsidi3 (   u,
  v 
)
Value:
({UWtype __hi, __lo; \
umul_ppmm(__hi, __lo, u, v); \
((UDWtype) __hi << W_TYPE_SIZE) | __lo; })

Definition at line 1261 of file longlong.h.

#define add_ssaaaa (   sh,
  sl,
  ah,
  al,
  bh,
  bl 
)
Value:
do { \
UWtype __x; \
__x = (al) + (bl); \
(sh) = (ah) + (bh) + (__x < (al)); \
(sl) = __x; \
} while (0)

Definition at line 1270 of file longlong.h.

#define sub_ddmmss (   sh,
  sl,
  ah,
  al,
  bh,
  bl 
)
Value:
do { \
UWtype __x; \
__x = (al) - (bl); \
(sh) = (ah) - (bh) - (__x > (al)); \
(sl) = __x; \
} while (0)

Definition at line 1280 of file longlong.h.

#define UDIV_NEEDS_NORMALIZATION   1

Definition at line 1375 of file longlong.h.

#define udiv_qrnnd   __udiv_qrnnd_c

Definition at line 1376 of file longlong.h.

#define umul_ppmm (   w1,
  w0,
  u,
  v 
)
Value:
do { \
UWtype __x0, __x1, __x2, __x3; \
UHWtype __ul, __vl, __uh, __vh; \
UWtype __u = (u), __v = (v); \
\
__ul = __ll_lowpart(__u); \
__uh = __ll_highpart(__u); \
__vl = __ll_lowpart(__v); \
__vh = __ll_highpart(__v); \
\
__x0 = (UWtype) __ul * __vl; \
__x1 = (UWtype) __ul * __vh; \
__x2 = (UWtype) __uh * __vl; \
__x3 = (UWtype) __uh * __vh; \
\
__x1 += __ll_highpart(__x0);/* this can't give carry */ \
__x1 += __x2; /* but this indeed can */ \
if (__x1 < __x2) /* did we get it? */ \
__x3 += __ll_B; /* yes, add it in the proper pos. */ \
\
(w1) = __x3 + __ll_highpart(__x1); \
(w0) = (__ll_lowpart(__x1) << W_TYPE_SIZE/2) + __ll_lowpart(__x0); \
} while (0)

Definition at line 1290 of file longlong.h.