]>
Commit | Line | Data |
---|---|---|
c614ca50 | 1 | /* $NetBSD: flt_rounds.c,v 1.3 2006/02/25 00:58:35 wiz Exp $ */\r |
2aa62f2b | 2 | \r |
3 | /*\r | |
4 | * Copyright (c) 1996 Mark Brinicombe\r | |
5 | * All rights reserved.\r | |
6 | *\r | |
7 | * Redistribution and use in source and binary forms, with or without\r | |
8 | * modification, are permitted provided that the following conditions\r | |
9 | * are met:\r | |
10 | * 1. Redistributions of source code must retain the above copyright\r | |
11 | * notice, this list of conditions and the following disclaimer.\r | |
12 | * 2. Redistributions in binary form must reproduce the above copyright\r | |
13 | * notice, this list of conditions and the following disclaimer in the\r | |
14 | * documentation and/or other materials provided with the distribution.\r | |
15 | * 3. All advertising materials mentioning features or use of this software\r | |
16 | * must display the following acknowledgement:\r | |
17 | * This product includes software developed by Mark Brinicombe\r | |
c614ca50 | 18 | * for the NetBSD Project.\r |
2aa62f2b | 19 | * 4. The name of the author may not be used to endorse or promote products\r |
20 | * derived from this software without specific prior written permission\r | |
21 | *\r | |
22 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\r | |
23 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\r | |
24 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r | |
25 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\r | |
26 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r | |
27 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r | |
28 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r | |
29 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r | |
30 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r | |
31 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r | |
32 | */\r | |
33 | \r | |
c614ca50 | 34 | #include <sys/EfiCdefs.h>\r |
2aa62f2b | 35 | #if defined(LIBC_SCCS) && !defined(lint)\r |
36 | __RCSID("$NetBSD: flt_rounds.c,v 1.3 2006/02/25 00:58:35 wiz Exp $");\r | |
37 | #endif /* LIBC_SCCS and not lint */\r | |
38 | \r | |
39 | #include <sys/types.h>\r | |
c614ca50 | 40 | //#include <ieeefp.h>\r |
2aa62f2b | 41 | \r |
42 | static const int map[] = {\r | |
c614ca50 | 43 | 1, /* round to nearest */\r |
44 | 2, /* round to positive infinity */\r | |
45 | 3, /* round to negative infinity */\r | |
d711a486 | 46 | 0 /* round to zero */\r |
2aa62f2b | 47 | };\r |
48 | \r | |
49 | /*\r | |
50 | * Return the current FP rounding mode\r | |
51 | *\r | |
52 | * Returns:\r | |
c614ca50 | 53 | * 0 - round to zero\r |
54 | * 1 - round to nearest\r | |
55 | * 2 - round to postive infinity\r | |
56 | * 3 - round to negative infinity\r | |
2aa62f2b | 57 | *\r |
58 | * ok all we need to do is get the current FP rounding mode\r | |
59 | * index our map table and return the appropriate value.\r | |
60 | *\r | |
61 | * HOWEVER:\r | |
62 | * The ARM FPA codes the rounding mode into the actual FP instructions\r | |
63 | * so there is no such thing as a global rounding mode.\r | |
64 | * The default is round to nearest if rounding is not explicitly specified.\r | |
65 | * FP instructions generated by GCC will not explicitly specify a rounding\r | |
66 | * mode.\r | |
67 | *\r | |
68 | * So the best we can do it to return the rounding mode FP instructions\r | |
69 | * use if rounding is not specified which is round to nearest.\r | |
70 | *\r | |
71 | * This could change in the future with new floating point emulators or\r | |
72 | * soft float FP libraries.\r | |
73 | */\r | |
74 | \r | |
75 | int __flt_rounds(void);\r | |
76 | \r | |
77 | int\r | |
78 | __flt_rounds()\r | |
79 | {\r | |
c614ca50 | 80 | //return(map[fpgetround()]);\r |
81 | return 1; //TODO: FixMe\r | |
2aa62f2b | 82 | }\r |