12fe8fb19SBen Gras/* 22fe8fb19SBen Gras * Written by J.T. Conklin <jtc@NetBSD.org>. 32fe8fb19SBen Gras * Public domain. 42fe8fb19SBen Gras */ 52fe8fb19SBen Gras 62fe8fb19SBen Gras#include <machine/asm.h> 72fe8fb19SBen Gras 82fe8fb19SBen Gras#include "abi.h" 92fe8fb19SBen Gras 10*84d9c625SLionel SambucRCSID("$NetBSD: s_ceil.S,v 1.8 2011/06/18 21:24:51 joerg Exp $") 112fe8fb19SBen Gras 122fe8fb19SBen GrasENTRY(ceil) 132fe8fb19SBen Gras#ifdef __i386__ 142fe8fb19SBen Gras pushl %ebp 152fe8fb19SBen Gras movl %esp,%ebp 162fe8fb19SBen Gras subl $8,%esp 172fe8fb19SBen Gras 182fe8fb19SBen Gras fstcw -4(%ebp) /* store fpu control word */ 192fe8fb19SBen Gras movw -4(%ebp),%dx 202fe8fb19SBen Gras orw $0x0800,%dx /* round towards +oo */ 212fe8fb19SBen Gras andw $0xfbff,%dx 222fe8fb19SBen Gras movw %dx,-8(%ebp) 232fe8fb19SBen Gras fldcw -8(%ebp) /* load modfied control word */ 242fe8fb19SBen Gras 25*84d9c625SLionel Sambuc fldl 8(%ebp) /* round */ 262fe8fb19SBen Gras frndint 272fe8fb19SBen Gras 282fe8fb19SBen Gras fldcw -4(%ebp) /* restore original control word */ 292fe8fb19SBen Gras 302fe8fb19SBen Gras leave 312fe8fb19SBen Gras#else 322fe8fb19SBen Gras fstcw -12(%rsp) 332fe8fb19SBen Gras movw -12(%rsp),%dx 342fe8fb19SBen Gras orw $0x0800,%dx 352fe8fb19SBen Gras andw $0xfbff,%dx 362fe8fb19SBen Gras movw %dx,-16(%rsp) 372fe8fb19SBen Gras fldcw -16(%rsp) 382fe8fb19SBen Gras movsd %xmm0,-8(%rsp) 392fe8fb19SBen Gras fldl -8(%rsp) 402fe8fb19SBen Gras frndint 412fe8fb19SBen Gras fldcw -12(%rsp) 422fe8fb19SBen Gras fstpl -8(%rsp) 432fe8fb19SBen Gras movsd -8(%rsp),%xmm0 442fe8fb19SBen Gras#endif 452fe8fb19SBen Gras ret 46