xref: /minix3/lib/libc/arch/i386/gen/fpsetprec.S (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc/*	$NetBSD: fpsetprec.S,v 1.2 2014/05/23 02:34:19 uebayasi Exp $	*/
2f14fb602SLionel Sambuc
3f14fb602SLionel Sambuc/*
4f14fb602SLionel Sambuc * Written by Charles M. Hannum, Apr 9, 1995
5f14fb602SLionel Sambuc * Public domain.
6f14fb602SLionel Sambuc */
7f14fb602SLionel Sambuc
8f14fb602SLionel Sambuc#include <machine/asm.h>
9f14fb602SLionel Sambuc
10f14fb602SLionel Sambuc#ifdef WEAK_ALIAS
11f14fb602SLionel SambucWEAK_ALIAS(fpsetprec, _fpsetprec)
12f14fb602SLionel SambucENTRY(_fpsetprec)
13f14fb602SLionel Sambuc#else
14f14fb602SLionel SambucENTRY(fpsetprec)
15f14fb602SLionel Sambuc#endif
16f14fb602SLionel Sambuc	subl $4,%esp
17f14fb602SLionel Sambuc
18f14fb602SLionel Sambuc	fnstcw (%esp)
19f14fb602SLionel Sambuc	movl (%esp),%eax
20f14fb602SLionel Sambuc
21f14fb602SLionel Sambuc	rorl $8,%eax
22f14fb602SLionel Sambuc	movl %eax,%edx
23f14fb602SLionel Sambuc	andl $3,%eax
24f14fb602SLionel Sambuc
25f14fb602SLionel Sambuc	subl %eax,%edx
26f14fb602SLionel Sambuc	movl 8(%esp),%ecx
27f14fb602SLionel Sambuc	andl $3,%ecx
28f14fb602SLionel Sambuc	orl %ecx,%edx
29f14fb602SLionel Sambuc	roll $8,%edx
30f14fb602SLionel Sambuc	movl %edx,(%esp)
31f14fb602SLionel Sambuc	fldcw (%esp)
32f14fb602SLionel Sambuc
33f14fb602SLionel Sambuc	addl $4,%esp
34f14fb602SLionel Sambuc	ret
35*0a6a1f1dSLionel Sambuc#ifdef WEAK_ALIAS
36*0a6a1f1dSLionel SambucEND(_fpsetprec)
37*0a6a1f1dSLionel Sambuc#else
38*0a6a1f1dSLionel SambucEND(fpsetprec)
39*0a6a1f1dSLionel Sambuc#endif
40