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