The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
/* Set 80387 floating point hardware rounding precision */

	.file	"setprec.387"
.text
	.align 2

.globl _sprec
_sprec:
	pushl %ebp
	movl %esp,%ebp
	pushl %eax
	subl $4,%esp
	fstcw (%esp)
	fwait
	movl (%esp),%eax
	andl $0xfcff,%eax
	movl %eax,(%esp)
	fldcw (%esp)
	popl %eax
	popl %eax
	leave
	ret

	.align 2

.globl _dprec
_dprec:
	pushl %ebp
	movl %esp,%ebp
	pushl %eax
	subl $4,%esp
	fstcw (%esp)
	fwait
	movl (%esp),%eax
/*	andl $0xfcff,%eax */
/* exception on overflow */
	andl $0xfcf7,%eax
	orl $0x200,%eax
	movl %eax,(%esp)
	fldcw (%esp)
	popl %eax
	popl %eax
	leave
	ret

	.align 2

.globl _ldprec
_ldprec:
	pushl %ebp
	movl %esp,%ebp
	pushl %eax
	subl $4,%esp
	fstcw (%esp)
	fwait
	movl (%esp),%eax
	orl $0x300,%eax
	movl %eax,(%esp)
	fldcw (%esp)
	popl %eax
	popl %eax
	leave
	ret


.globl _getprec
_getprec:
	pushl %ebp
	movl %esp,%ebp
	subl $4,%esp
	fstcw (%esp)
	fwait
	movl (%esp),%eax
	leave
	ret

.globl _setfpu
_setfpu:
        pushl %ebp
        movl %esp,%ebp
        movl 8(%ebp),%eax
        pushl %eax
        fldcw (%esp)
        fwait
        movl %ebp,%esp
        popl %ebp
        ret