123456789101112131415161718192021222324252627282930313233343536373839 |
- /* Round argument toward 0. SH4 version.
- * According to ISO/IEC 9899:1999. This version doesn't handle range error.
- * If arg is not finite or if the result cannot be represented into a long,
- * return an unspecified value. No exception raised.
- *
- * Copyright (C) 2010 STMicroelectronics Ltd.
- *
- * Author: Christian Bruel <christian.bruel@st.com>
- *
- * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- */
- #include <sysdep.h>
- ENTRY(lroundf)
- mov #0,r0
- sts fpscr,r3
- lds r0,fpscr
- flds fr5,fpul
- mov.l LOCAL(mask),r1
- sts fpul,r2
- and r2,r1
- mov.l LOCAL(midway),r2
- or r1,r2
- lds r2,fpul
- fsts fpul,fr2
- fadd fr2,fr5
- ftrc fr5,fpul
- sts fpul,r0
- rts
- lds r3,fpscr
- .align 2
- LOCAL(mask):
- .long 0x80000000
- LOCAL(midway):
- .long 1056964608
- END(lroundf)
|