diff options
| -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 | 
