123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /* 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
|