summaryrefslogtreecommitdiff
path: root/include/arch/x86_64/asm/fpmath.h
blob: 43ee6cfbd114cb2f9a120a3e43297e9725f380e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef __ASM_FPMATH_H
#define __ASM_FPMATH_H

union l2bits {
	long double e;
	struct {
		unsigned int manl : 32;
		unsigned int manh : 32;
		unsigned int exp : 15;
		unsigned int sign : 1;
		unsigned int junkl : 16;
		unsigned int junkh : 32;
	} bits;
	struct {
		unsigned long man : 64;
		unsigned int expsign : 16;
		unsigned long junk : 48;
	} xbits;
};

#define LDBL_NBIT      0x80000000
#define mask_nbit_l(u) ((u).bits.manh &= ~LDBL_NBIT)

#define LDBL_MANH_SIZE 32
#define LDBL_MANL_SIZE 32

#define LDBL_TO_ARRAY32(u, a)                     \
	do {                                      \
		(a)[0] = (uint32_t)(u).bits.manl; \
		(a)[1] = (uint32_t)(u).bits.manh; \
	} while (0)

#endif