diff options
Diffstat (limited to 'sysdeps/libm-i387/s_ceil.S')
-rw-r--r-- | sysdeps/libm-i387/s_ceil.S | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/sysdeps/libm-i387/s_ceil.S b/sysdeps/libm-i387/s_ceil.S index 309fe882f8..b0159128aa 100644 --- a/sysdeps/libm-i387/s_ceil.S +++ b/sysdeps/libm-i387/s_ceil.S @@ -8,27 +8,25 @@ RCSID("$NetBSD: s_ceil.S,v 1.4 1995/05/08 23:52:13 jtc Exp $") ENTRY(__ceil) - pushl %ebp - movl %esp,%ebp + fldl 4(%esp) subl $8,%esp - fstcw -4(%ebp) /* store fpu control word */ + fstcw 4(%esp) /* store fpu control word */ /* We use here %edx although only the low 1 bits are defined. But none of the operations should care and they are faster than the 16 bit operations. */ - movl -4(%ebp),%edx - orl $0x0800,%edx /* round towards +oo */ + movl $0x0800,%edx /* round towards +oo */ + orl 4(%esp),%edx andl $0xfbff,%edx - movl %edx,-8(%ebp) - fldcw -8(%ebp) /* load modified control word */ + movl %edx,(%esp) + fldcw (%esp) /* load modified control word */ - fldl 8(%ebp); /* round */ - frndint + frndint /* round */ - fldcw -4(%ebp) /* restore original control word */ + fldcw 4(%esp) /* restore original control word */ - leave + addl $8,%esp ret END (__ceil) weak_alias (__ceil, ceil) |