diff options
Diffstat (limited to 'os2/rint.s')
-rw-r--r-- | os2/rint.s | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/os2/rint.s b/os2/rint.s new file mode 100644 index 00000000000..7f6569ed72c --- /dev/null +++ b/os2/rint.s @@ -0,0 +1,32 @@ +/ rint.s (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes + +#include <emx/asm386.h> + +#define FUNC MATHSUFFIX2(rint) + + .globl LABEL(FUNC) + + .text + + ALIGN + +/ double _rint (double x) + +#define cw1 0(%esp) +#define cw2 2(%esp) +/define ret_addr 4(%esp) +#define x 8(%esp) + +LABEL(FUNC): + PROFILE_NOFRAME + subl $4, %esp + fstcww cw1 + movw cw1, %ax + andw $0xf3ff, %ax /* round to nearest or even */ + movw %ax, cw2 + fldcww cw2 + FLD x /* x */ + frndint + fldcww cw1 + addl $4, %esp + EPILOGUE(FUNC) |