projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
omit declaration of basename wrongly interpreted as prototype in C++
[musl]
/
src
/
fenv
/
i386
/
fenv.s
diff --git
a/src/fenv/i386/fenv.s
b/src/fenv/i386/fenv.s
index
34101d5
..
e365b8f
100644
(file)
--- a/
src/fenv/i386/fenv.s
+++ b/
src/fenv/i386/fenv.s
@@
-1,52
+1,60
@@
-2: not %ecx
+.global feclearexcept
+.type feclearexcept,@function
+feclearexcept:
+ mov 4(%esp),%ecx
+ not %ecx
+ test $0x3f,%ecx
+ jnz 2f
+1: fnclex
+ xor %eax,%eax
+ ret
+2: fnstsw %ax
+ and %ecx,%eax
+ jz 1b
sub $32,%esp
fnstenv (%esp)
sub $32,%esp
fnstenv (%esp)
- and %ecx,4(%esp)
- or %edx,4(%esp)
+ mov %al,4(%esp)
fldenv (%esp)
add $32,%esp
fldenv (%esp)
add $32,%esp
- ret
-
-.global feclearexcept
-feclearexcept:
xor %eax,%eax
xor %eax,%eax
- mov 4(%esp),%ecx
- xor %edx,%edx
- test %ecx,%ecx
- jnz 2b
ret
.global feraiseexcept
ret
.global feraiseexcept
+.type feraiseexcept,@function
feraiseexcept:
feraiseexcept:
+ mov 4(%esp),%eax
+ sub $32,%esp
+ fnstenv (%esp)
+ or %al,4(%esp)
+ fldenv (%esp)
+ add $32,%esp
xor %eax,%eax
xor %eax,%eax
- mov 4(%esp),%edx
- xor %ecx,%ecx
- test %edx,%edx
- jnz 2b
ret
.global fesetround
ret
.global fesetround
+.type fesetround,@function
fesetround:
mov 4(%esp),%ecx
fesetround:
mov 4(%esp),%ecx
+ push %eax
xor %eax,%eax
xor %eax,%eax
- sub $32,%esp
- fnstenv (%esp)
+ fnstcw (%esp)
andb $0xf3,1(%esp)
andb $0xf3,1(%esp)
- or %
ecx,
(%esp)
- fld
env
(%esp)
- add $32,%esp
+ or %
ch,1
(%esp)
+ fld
cw
(%esp)
+ pop %ecx
ret
.global fegetround
ret
.global fegetround
+.type fegetround,@function
fegetround:
fegetround:
- sub $28,%esp
- fnstenv (%esp)
- mov 4(%esp),%eax
- add $28,%esp
- and $0xc,%ah
+ push %eax
+ fnstcw (%esp)
+ pop %eax
+ and $0xc00,%eax
ret
.global fegetenv
ret
.global fegetenv
+.type fegetenv,@function
fegetenv:
mov 4(%esp),%ecx
xor %eax,%eax
fegetenv:
mov 4(%esp),%ecx
xor %eax,%eax
@@
-54,6
+62,7
@@
fegetenv:
ret
.global fesetenv
ret
.global fesetenv
+.type fesetenv,@function
fesetenv:
mov 4(%esp),%ecx
xor %eax,%eax
fesetenv:
mov 4(%esp),%ecx
xor %eax,%eax
@@
-73,6
+82,7
@@
fesetenv:
ret
.global fetestexcept
ret
.global fetestexcept
+.type fetestexcept,@function
fetestexcept:
mov 4(%esp),%ecx
fnstsw %ax
fetestexcept:
mov 4(%esp),%ecx
fnstsw %ax