Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
x86
math-emu
reg_convert.c
Go to the documentation of this file.
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
int
FPU_to_exp16
(
FPU_REG
const
*
a
,
FPU_REG
*
x
)
17
{
18
int
sign
=
getsign
(a);
19
20
*(
long
long
*)&(x->
sigl
) = *(
const
long
long
*)&(a->
sigl
);
21
22
/* Set up the exponent as a 16 bit quantity. */
23
setexponent16
(x,
exponent
(a));
24
25
if
(
exponent16
(x) ==
EXP_UNDER
) {
26
/* The number is a de-normal or pseudodenormal. */
27
/* We only deal with the significand and exponent. */
28
29
if
(x->
sigh
& 0x80000000) {
30
/* Is a pseudodenormal. */
31
/* This is non-80486 behaviour because the number
32
loses its 'denormal' identity. */
33
addexponent
(x, 1);
34
}
else
{
35
/* Is a denormal. */
36
addexponent
(x, 1);
37
FPU_normalize_nuo
(x);
38
}
39
}
40
41
if
(!(x->
sigh
& 0x80000000)) {
42
EXCEPTION
(
EX_INTERNAL
| 0x180);
43
}
44
45
return
sign
;
46
}
Generated on Thu Jan 10 2013 13:21:26 for Linux Kernel by
1.8.2