xref: /netbsd-src/lib/libc/arch/i386/gen/fpsetprec.S (revision 0d34bfa26d596b4f9bcb49175a92020d91572850)
1*0d34bfa2Suebayasi/*	$NetBSD: fpsetprec.S,v 1.2 2014/05/23 02:34:19 uebayasi Exp $	*/
22587e6e4Schristos
32587e6e4Schristos/*
42587e6e4Schristos * Written by Charles M. Hannum, Apr 9, 1995
52587e6e4Schristos * Public domain.
62587e6e4Schristos */
72587e6e4Schristos
82587e6e4Schristos#include <machine/asm.h>
92587e6e4Schristos
102587e6e4Schristos#ifdef WEAK_ALIAS
112587e6e4SchristosWEAK_ALIAS(fpsetprec, _fpsetprec)
122587e6e4SchristosENTRY(_fpsetprec)
132587e6e4Schristos#else
142587e6e4SchristosENTRY(fpsetprec)
152587e6e4Schristos#endif
162587e6e4Schristos	subl $4,%esp
172587e6e4Schristos
182587e6e4Schristos	fnstcw (%esp)
192587e6e4Schristos	movl (%esp),%eax
202587e6e4Schristos
212587e6e4Schristos	rorl $8,%eax
222587e6e4Schristos	movl %eax,%edx
232587e6e4Schristos	andl $3,%eax
242587e6e4Schristos
252587e6e4Schristos	subl %eax,%edx
262587e6e4Schristos	movl 8(%esp),%ecx
272587e6e4Schristos	andl $3,%ecx
282587e6e4Schristos	orl %ecx,%edx
292587e6e4Schristos	roll $8,%edx
302587e6e4Schristos	movl %edx,(%esp)
312587e6e4Schristos	fldcw (%esp)
322587e6e4Schristos
332587e6e4Schristos	addl $4,%esp
342587e6e4Schristos	ret
35*0d34bfa2Suebayasi#ifdef WEAK_ALIAS
36*0d34bfa2SuebayasiEND(_fpsetprec)
37*0d34bfa2Suebayasi#else
38*0d34bfa2SuebayasiEND(fpsetprec)
39*0d34bfa2Suebayasi#endif
40