sfp-util.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #include <linux/kernel.h>
  2. #include <linux/sched.h>
  3. #include <linux/types.h>
  4. #include <asm/byteorder.h>
  5. #define add_ssaaaa(sh, sl, ah, al, bh, bl) ({
  6.         unsigned int __sh = (ah);
  7.         unsigned int __sl = (al);
  8.         __asm__ ("   alr  %1,%3n"
  9.                  "   brc  12,0fn"
  10.                  "   ahi  %0,1n"
  11.                  "0: alr  %0,%2"
  12.                  : "+&d" (__sh), "+d" (__sl)
  13.                  : "d" (bh), "d" (bl) : "cc" );
  14.         (sh) = __sh;
  15.         (sl) = __sl;
  16. })
  17. #define sub_ddmmss(sh, sl, ah, al, bh, bl) ({
  18.        unsigned int __sh = (ah);
  19.        unsigned int __sl = (al);
  20.        __asm__ ("   slr  %1,%3n"
  21.                 "   brc  3,0fn"
  22.                 "   ahi  %0,-1n"
  23.                 "0: slr  %0,%2"
  24.                 : "+&d" (__sh), "+d" (__sl)
  25.                 : "d" (bh), "d" (bl) : "cc" );
  26.        (sh) = __sh;
  27.        (sl) = __sl;
  28. })
  29. /* a umul b = a mul b + (a>=2<<31) ? b<<32:0 + (b>=2<<31) ? a<<32:0 */
  30. #define umul_ppmm(wh, wl, u, v) ({
  31.         unsigned int __wh = u;
  32.         unsigned int __wl = v;
  33.         __asm__ ("   ltr  1,%0n"
  34.                  "   mr   0,%1n"
  35.                  "   jnm  0fn"
  36.                  "   alr  0,%1n"
  37.                  "0: ltr  %1,%1n"
  38.                  "   jnm  1fn"
  39.                  "   alr  0,%0n"
  40.                  "1: lr   %0,0n"
  41.                  "   lr   %1,1n"
  42.                  : "+d" (__wh), "+d" (__wl)
  43.                  : : "0", "1", "cc" );
  44.         wh = __wh;
  45.         wl = __wl;
  46. })
  47. #define udiv_qrnnd(q, r, n1, n0, d)
  48.   do { unsigned long __r;
  49.     (q) = __udiv_qrnnd (&__r, (n1), (n0), (d));
  50.     (r) = __r;
  51.   } while (0)
  52. extern unsigned long __udiv_qrnnd (unsigned long *, unsigned long,
  53.    unsigned long , unsigned long);
  54. #define UDIV_NEEDS_NORMALIZATION 0
  55. #define abort() return 0
  56. #define __BYTE_ORDER __BIG_ENDIAN