setprelf.387 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /* Set 80387 floating point hardware rounding precision */
  2. .file "setprec.387"
  3. .version "01.01"
  4. .text
  5. .align 16
  6. .globl sprec
  7. sprec:
  8. pushl %ebp
  9. movl %esp,%ebp
  10. pushl %eax
  11. subl $4,%esp
  12. fstcw (%esp)
  13. fwait
  14. movl (%esp),%eax
  15. andl $0xfcff,%eax
  16. movl %eax,(%esp)
  17. fldcw (%esp)
  18. popl %eax
  19. popl %eax
  20. leave
  21. ret
  22. .Lfe1:
  23. .size sprec,.Lfe1-sprec
  24. .align 16
  25. .globl dprec
  26. dprec:
  27. pushl %ebp
  28. movl %esp,%ebp
  29. pushl %eax
  30. subl $4,%esp
  31. fstcw (%esp)
  32. fwait
  33. movl (%esp),%eax
  34. andl $0xfcff,%eax
  35. /* trap on overflow */
  36. /* andl $0xfcf7,%eax */
  37. orl $0x200,%eax
  38. movl %eax,(%esp)
  39. fldcw (%esp)
  40. popl %eax
  41. popl %eax
  42. leave
  43. ret
  44. .Lfe2:
  45. .size dprec,.Lfe2-dprec
  46. .align 16
  47. .globl ldprec
  48. ldprec:
  49. pushl %ebp
  50. movl %esp,%ebp
  51. pushl %eax
  52. subl $4,%esp
  53. fstcw (%esp)
  54. fwait
  55. movl (%esp),%eax
  56. orl $0x300,%eax
  57. movl %eax,(%esp)
  58. fldcw (%esp)
  59. popl %eax
  60. popl %eax
  61. leave
  62. ret
  63. .Lfe3:
  64. .size ldprec,.Lfe3-ldprec
  65. .align 16
  66. .globl getprec
  67. getprec:
  68. pushl %ebp
  69. movl %esp,%ebp
  70. subl $4,%esp
  71. fstcw (%esp)
  72. fwait
  73. movl (%esp),%eax
  74. leave
  75. ret
  76. .Lfe4:
  77. .size getprec,.Lfe4-getprec