Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*---------------------------------------------------------------------------+
  2  |  reg_convert.c                                                            |
  3  |                                                                           |
  4  |  Convert register representation.                                         |
  5  |                                                                           |
  6  | Copyright (C) 1992,1993,1994,1996,1997                                    |
  7  |                  W. Metzenthen, 22 Parker St, Ormond, Vic 3163, Australia |
  8  |                  E-mail   billm@suburbia.net                              |
  9  |                                                                           |
 10  |                                                                           |
 11  +---------------------------------------------------------------------------*/
 12 
 13 #include "exception.h"
 14 #include "fpu_emu.h"
 15 
 16 
 17 int FPU_to_exp16(FPU_REG const *a, FPU_REG *x)
 18 {
 19   int sign = getsign(a);
 20 
 21   *(long long *)&(x->sigl) = *(const long long *)&(a->sigl);
 22 
 23   /* Set up the exponent as a 16 bit quantity. */
 24   setexponent16(x, exponent(a));
 25 
 26   if ( exponent16(x) == EXP_UNDER )
 27     {
 28       /* The number is a de-normal or pseudodenormal. */
 29       /* We only deal with the significand and exponent. */
 30 
 31       if (x->sigh & 0x80000000)
 32         {
 33           /* Is a pseudodenormal. */
 34           /* This is non-80486 behaviour because the number
 35              loses its 'denormal' identity. */
 36           addexponent(x, 1);
 37         }
 38       else
 39         {
 40           /* Is a denormal. */
 41           addexponent(x, 1);
 42           FPU_normalize_nuo(x);
 43         }
 44     }
 45 
 46   if ( !(x->sigh & 0x80000000) )
 47     {
 48       EXCEPTION(EX_INTERNAL | 0x180);
 49     }
 50 
 51   return sign;
 52 }
 53 
 54 
  This page was automatically generated by the LXR engine.