summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2014-06-09 21:35:36 +0000
committerjilles <jilles@FreeBSD.org>2014-06-09 21:35:36 +0000
commitfe13779dda3878ced9ebc571bcac78c79b1fc19b (patch)
tree6b964251625d0c6c34eef8893f0b237dd311c015 /lib
parent17863b4bce26877f2514e7e6fc8157ed57011028 (diff)
downloadFreeBSD-src-fe13779dda3878ced9ebc571bcac78c79b1fc19b.zip
FreeBSD-src-fe13779dda3878ced9ebc571bcac78c79b1fc19b.tar.gz
siglongjmp(): Preserve floating point exception flags on i386 and amd64.
Per POSIX, siglongjmp() shall be equivalent to longjmp() except that it must match sigsetjmp() instead of setjmp() and except for the effect on the signal mask. Therefore, it should preserve the floating point exception flags. This was fixed for longjmp() and _longjmp() in r180080 and r180081 for amd64 and i386 respectively.
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/amd64/gen/sigsetjmp.S1
-rw-r--r--lib/libc/i386/gen/sigsetjmp.S1
2 files changed, 0 insertions, 2 deletions
diff --git a/lib/libc/amd64/gen/sigsetjmp.S b/lib/libc/amd64/gen/sigsetjmp.S
index 02b154c..9a20556 100644
--- a/lib/libc/amd64/gen/sigsetjmp.S
+++ b/lib/libc/amd64/gen/sigsetjmp.S
@@ -105,7 +105,6 @@ ENTRY(__siglongjmp)
movq 40(%rdx),%r13
movq 48(%rdx),%r14
movq 56(%rdx),%r15
- fninit
fldcw 64(%rdx)
testq %rax,%rax
jnz 1f
diff --git a/lib/libc/i386/gen/sigsetjmp.S b/lib/libc/i386/gen/sigsetjmp.S
index 0920b6d..1c63649 100644
--- a/lib/libc/i386/gen/sigsetjmp.S
+++ b/lib/libc/i386/gen/sigsetjmp.S
@@ -115,7 +115,6 @@ ENTRY(__siglongjmp)
movl 12(%edx),%ebp
movl 16(%edx),%esi
movl 20(%edx),%edi
- fninit
fldcw 24(%edx)
testl %eax,%eax
jnz 1f
OpenPOWER on IntegriCloud