Subversion Repositories HelenOS-historic

Rev

Rev 563 | Rev 857 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 563 Rev 647
Line 27... Line 27...
27
 */
27
 */
28
 
28
 
29
#ifndef __SOFTFLOAT_H__
29
#ifndef __SOFTFLOAT_H__
30
#define __SOFTFLOAT_H__
30
#define __SOFTFLOAT_H__
31
 
31
 
32
 
-
 
33
typedef union {
-
 
34
    float f;
-
 
35
    struct  {
-
 
36
        #ifdef __BIG_ENDIAN__
-
 
37
        __u32 sign:1;
-
 
38
        __u32 exp:8;
-
 
39
        __u32 mantisa:23;
-
 
40
        #elif defined __LITTLE_ENDIAN__
-
 
41
        __u32 mantisa:23;
-
 
42
        __u32 exp:8;
-
 
43
        __u32 sign:1;
-
 
44
        #else 
-
 
45
        #error "Unknown endians."
-
 
46
        #endif
-
 
47
        } parts __attribute__ ((packed));
-
 
48
    } float32;
-
 
49
   
-
 
50
typedef union {
-
 
51
    double d;
-
 
52
    struct  {
-
 
53
        #ifdef __BIG_ENDIAN__
-
 
54
        __u64 sign:1;
-
 
55
        __u64 exp:11;
-
 
56
        __u64 mantisa:52;
-
 
57
        #elif defined __LITTLE_ENDIAN__
-
 
58
        __u64 mantisa:52;
-
 
59
        __u64 exp:11;
-
 
60
        __u64 sign:1;
-
 
61
        #else 
-
 
62
        #error "Unknown endians."
-
 
63
        #endif
-
 
64
        } parts __attribute__ ((packed));
-
 
65
    } float64;
-
 
66
 
-
 
67
#define FLOAT32_MAX 0x7f800000
-
 
68
#define FLOAT32_MIN 0xff800000
-
 
69
#define FLOAT64_MAX
-
 
70
#define FLOAT64_MIN
-
 
71
 
-
 
72
#define FLOAT32_BIAS 0xF7
-
 
73
#define FLOAT64_BIAS 0x3FF
-
 
74
#define FLOAT80_BIAS 0x3FFF
-
 
75
 
-
 
76
 
-
 
77
 
-
 
78
float __addsf3(float a, float b);
32
float __addsf3(float a, float b);
79
double __adddf3(double a, double b);
33
double __adddf3(double a, double b);
80
long double __addtf3(long double a, long double b);
34
long double __addtf3(long double a, long double b);
81
long double __addxf3(long double a, long double b);
35
long double __addxf3(long double a, long double b);
82
 
36