diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-03-17 18:02:20 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-03-17 18:02:20 -0400 |
commit | 9cb6878e747909c7a45dd1c4dd550ac62e1f7690 (patch) | |
tree | c98ee43beccfaa6f900df529de01eeee00d48aad /src/fenv/x86_64/fenv.s | |
parent | d5e576c7527c42b376d20ef38669ffc2a78b0a76 (diff) | |
download | musl-9cb6878e747909c7a45dd1c4dd550ac62e1f7690.tar.gz musl-9cb6878e747909c7a45dd1c4dd550ac62e1f7690.tar.xz musl-9cb6878e747909c7a45dd1c4dd550ac62e1f7690.zip |
fix x86_64 fe[gs]etround, analogous to nsz's x86 changes
Diffstat (limited to 'src/fenv/x86_64/fenv.s')
-rw-r--r-- | src/fenv/x86_64/fenv.s | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/fenv/x86_64/fenv.s b/src/fenv/x86_64/fenv.s index 8226b52b..11aa3da2 100644 --- a/src/fenv/x86_64/fenv.s +++ b/src/fenv/x86_64/fenv.s @@ -32,18 +32,19 @@ feraiseexcept: .global fesetround .type fesetround,@function fesetround: + push %rax xor %eax,%eax - sub $32,%rsp - fnstenv (%rsp) + mov %edi,%ecx + fnstcw (%rsp) andb $0xf3,1(%rsp) - or %edi,(%rsp) - fldenv (%rsp) + or %ch,1(%rsp) + fldcw (%rsp) stmxcsr (%rsp) - shl $3,%edi + shl $3,%ch andb $0x9f,1(%rsp) - or %edi,(%rsp) + or %ch,1(%rsp) ldmxcsr (%rsp) - add $32,%rsp + pop %rcx ret .global fegetround @@ -53,7 +54,7 @@ fegetround: stmxcsr (%rsp) pop %rax shr $3,%eax - and $0xc,%ah + and $0xc00,%eax ret .global fegetenv |