1/* 2 * Written by J.T. Conklin <jtc@netbsd.org>. 3 * Public domain. 4 */ 5 6#include <machine/asm.h> 7 8RCSID("$NetBSD: s_ceil.S,v 1.4 1995/05/08 23:52:13 jtc Exp $") 9 10ENTRY(__ceil) 11 fldl 4(%esp) 12 subl $8,%esp 13 14 fstcw 4(%esp) /* store fpu control word */ 15 16 /* We use here %edx although only the low 1 bits are defined. 17 But none of the operations should care and they are faster 18 than the 16 bit operations. */ 19 movl $0x0800,%edx /* round towards +oo */ 20 orl 4(%esp),%edx 21 andl $0xfbff,%edx 22 movl %edx,(%esp) 23 fldcw (%esp) /* load modified control word */ 24 25 frndint /* round */ 26 27 fldcw 4(%esp) /* restore original control word */ 28 29 addl $8,%esp 30 ret 31END (__ceil) 32weak_alias (__ceil, ceil) 33