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
[email protected]
|
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