Create Xref-Html Frames Remove All Frames
file:c:/local/Cygwin/usr/include/machine/ieeefp.h (Tue May 25 21:07:26 2004
)
1: #ifndef __IEEE_BIG_ENDIAN
2: #ifndef __IEEE_LITTLE_ENDIAN
3:
4: /* This file can define macros to choose variations of the IEEE float
5: format:
6:
7: _FLT_LARGEST_EXPONENT_IS_NORMAL
8:
9: Defined if the float format uses the largest exponent for finite
10: numbers rather than NaN and infinity representations. Such a
11: format cannot represent NaNs or infinities at all, but it's FLT_MAX
12: is twice the IEEE value.
13:
14: _FLT_NO_DENORMALS
15:
16: Defined if the float format does not support IEEE denormals. Every
17: float with a zero exponent is taken to be a zero representation.
18:
19: ??? At the moment, there are no equivalent macros above for doubles and
20: the macros are not fully supported by --enable-newlib-hw-fp.
21:
22: __IEEE_BIG_ENDIAN
23:
24: Defined if the float format is big endian. This is mutually exclusive
25: with __IEEE_LITTLE_ENDIAN.
26:
27: __IEEE_LITTLE_ENDIAN
28:
29: Defined if the float format is little endian. This is mutually exclusive
30: with __IEEE_BIG_ENDIAN.
31:
32: Note that one of __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN must be specified for a
33: platform or error will occur.
34:
35: __IEEE_BYTES_LITTLE_ENDIAN
36:
37: This flag is used in conjunction with __IEEE_BIG_ENDIAN to describe a situation
38: whereby multiple words of an IEEE floating point are in big endian order, but the
39: words themselves are little endian with respect to the bytes.
40:
41: _DOUBLE_IS_32_BITS
42:
43: This is used on platforms that support double by using the 32-bit IEEE
44: float type.
45:
46: _FLOAT_ARG
47:
48: This represents what type a float arg is passed as. It is used when the type is
49: not promoted to double.
50:
51: */
52:
53: #if (defined(__arm__) || defined(__thumb__)) && !defined(__MAVERICK__)
54: /* ARM traditionally used big-endian words; and within those words the
55: byte ordering was big or little endian depending upon the target.
56: Modern floating-point formats are naturally ordered; in this case
57: __VFP_FP__ will be defined, even if soft-float. */
58: #ifdef __VFP_FP__
59: # ifdef __ARMEL__
60: # define __IEEE_LITTLE_ENDIAN
61: # else
62: # define __IEEE_BIG_ENDIAN
63: # endif
64: #else
65: # define __IEEE_BIG_ENDIAN
66: # ifdef __ARMEL__
67: # define __IEEE_BYTES_LITTLE_ENDIAN
68: # endif
69: #endif
70: #endif
71:
72: #ifdef __hppa__
73: #define __IEEE_BIG_ENDIAN
74: #endif
75:
76: #ifdef __sparc__
77: #ifdef __LITTLE_ENDIAN_DATA__
78: #define __IEEE_LITTLE_ENDIAN
79: #else
80: #define __IEEE_BIG_ENDIAN
81: #endif
82: #endif
83:
84: #if defined(__m68k__) || defined(__mc68000__)
85: #define __IEEE_BIG_ENDIAN
86: #endif
87:
88: #if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
89: #define __IEEE_BIG_ENDIAN
90: #ifdef __HAVE_SHORT_DOUBLE__
91: # define _DOUBLE_IS_32BITS
92: #endif
93: #endif
94:
95: #if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) || defined (__H8500__)
96: #define __IEEE_BIG_ENDIAN
97: #define _FLOAT_ARG float
98: #define _DOUBLE_IS_32BITS
99: #endif
100:
101: #ifdef __sh__
102: #ifdef __LITTLE_ENDIAN__
103: #define __IEEE_LITTLE_ENDIAN
104: #else
105: #define __IEEE_BIG_ENDIAN
106: #endif
107: #if defined(__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__)
108: #define _DOUBLE_IS_32BITS
109: #endif
110: #endif
111:
112: #ifdef _AM29K
113: #define __IEEE_BIG_ENDIAN
114: #endif
115:
116: #ifdef _WIN32
117: #define __IEEE_LITTLE_ENDIAN
118: #endif
119:
120: #ifdef __i386__
121: #define __IEEE_LITTLE_ENDIAN
122: #endif
123:
124: #ifdef __i960__
125: #define __IEEE_LITTLE_ENDIAN
126: #endif
127:
128: #ifdef __M32R__
129: #define __IEEE_BIG_ENDIAN
130: #endif
131:
132: #if defined(_C4x) || defined(_C3x)
133: #define __IEEE_BIG_ENDIAN
134: #define _DOUBLE_IS_32BITS
135: #endif
136:
137: #ifdef __TIC80__
138: #define __IEEE_LITTLE_ENDIAN
139: #endif
140:
141: #ifdef __MIPSEL__
142: #define __IEEE_LITTLE_ENDIAN
143: #endif
144: #ifdef __MIPSEB__
145: #define __IEEE_BIG_ENDIAN
146: #endif
147:
148: #ifdef __MMIX__
149: #define __IEEE_BIG_ENDIAN
150: #endif
151:
152: #ifdef __D30V__
153: #define __IEEE_BIG_ENDIAN
154: #endif
155:
156: /* necv70 was __IEEE_LITTLE_ENDIAN. */
157:
158: #ifdef __W65__
159: #define __IEEE_LITTLE_ENDIAN
160: #define _DOUBLE_IS_32BITS
161: #endif
162:
163: #if defined(__Z8001__) || defined(__Z8002__)
164: #define __IEEE_BIG_ENDIAN
165: #endif
166:
167: #ifdef __m88k__
168: #define __IEEE_BIG_ENDIAN
169: #endif
170:
171: #ifdef __mn10300__
172: #define __IEEE_LITTLE_ENDIAN
173: #endif
174:
175: #ifdef __mn10200__
176: #define __IEEE_LITTLE_ENDIAN
177: #define _DOUBLE_IS_32BITS
178: #endif
179:
180: #ifdef __v800
181: #define __IEEE_LITTLE_ENDIAN
182: #endif
183:
184: #ifdef __v850
185: #define __IEEE_LITTLE_ENDIAN
186: #endif
187:
188: #ifdef __D10V__
189: #define __IEEE_BIG_ENDIAN
190: #if __DOUBLE__ == 32
191: #define _DOUBLE_IS_32BITS
192: #endif
193: #endif
194:
195: #ifdef __PPC__
196: #if (defined(_BIG_ENDIAN) && _BIG_ENDIAN) || (defined(_AIX) && _AIX)
197: #define __IEEE_BIG_ENDIAN
198: #else
199: #if (defined(_LITTLE_ENDIAN) && _LITTLE_ENDIAN) || (defined(__sun__) && __sun__) || (defined(_WIN32) && _WIN32)
200: #define __IEEE_LITTLE_ENDIAN
201: #endif
202: #endif
203: #endif
204:
205: #ifdef __xstormy16__
206: #define __IEEE_LITTLE_ENDIAN
207: #endif
208:
209: #ifdef __arc__
210: #ifdef __big_endian__
211: #define __IEEE_BIG_ENDIAN
212: #else
213: #define __IEEE_LITTLE_ENDIAN
214: #endif
215: #endif
216:
217: #ifdef __fr30__
218: #define __IEEE_BIG_ENDIAN
219: #endif
220:
221: #ifdef __mcore__
222: #define __IEEE_BIG_ENDIAN
223: #endif
224:
225: #ifdef __frv__
226: #define __IEEE_BIG_ENDIAN
227: #endif
228:
229: #ifdef __ia64__
230: #ifdef __BIG_ENDIAN__
231: #define __IEEE_BIG_ENDIAN
232: #else
233: #define __IEEE_LITTLE_ENDIAN
234: #endif
235: #endif
236:
237: #ifdef __AVR__
238: #define __IEEE_LITTLE_ENDIAN
239: #define _DOUBLE_IS_32BITS
240: #endif
241:
242: #if defined(__or32__) || defined(__or1k__) || defined(__or16__)
243: #define __IEEE_BIG_ENDIAN
244: #endif
245:
246: #ifdef __IP2K__
247: #define __IEEE_BIG_ENDIAN
248: #define __SMALL_BITFIELDS
249: #define _DOUBLE_IS_32BITS
250: #endif
251:
252: #ifdef __iq2000__
253: #define __IEEE_BIG_ENDIAN
254: #endif
255:
256: #ifdef __MAVERICK__
257: #ifdef __ARMEL__
258: # define __IEEE_LITTLE_ENDIAN
259: #else /* must be __ARMEB__ */
260: # define __IEEE_BIG_ENDIAN
261: #endif /* __ARMEL__ */
262: #endif /* __MAVERICK__ */
263:
264: #ifndef __IEEE_BIG_ENDIAN
265: #ifndef __IEEE_LITTLE_ENDIAN
266: #error Endianess not declared!!
267: #endif /* not __IEEE_LITTLE_ENDIAN */
268: #endif /* not __IEEE_BIG_ENDIAN */
269:
270: #endif /* not __IEEE_LITTLE_ENDIAN */
271: #endif /* not __IEEE_BIG_ENDIAN */
272:
273:
Html form generated by Xrefactory version 1.6.7 on Fri Sep 03 17:18:59 2004