From: Rich Felker Date: Sat, 17 Mar 2012 22:02:20 +0000 (-0400) Subject: fix x86_64 fe[gs]etround, analogous to nsz's x86 changes X-Git-Tag: v0.8.7~3 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9cb6878e747909c7a45dd1c4dd550ac62e1f7690;p=oweals%2Fmusl.git fix x86_64 fe[gs]etround, analogous to nsz's x86 changes --- 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