aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJilles Tjoelker <jilles@FreeBSD.org>2014-06-09 21:35:36 +0000
committerJilles Tjoelker <jilles@FreeBSD.org>2014-06-09 21:35:36 +0000
commit078cb49070aa97ec6c8e872c64dd035c9f438974 (patch)
tree6b964251625d0c6c34eef8893f0b237dd311c015 /lib
parent1c0155935362b2db1f5f5960765587738f5b401c (diff)
downloadsrc-078cb49070aa97ec6c8e872c64dd035c9f438974.tar.gz
src-078cb49070aa97ec6c8e872c64dd035c9f438974.zip
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.
Notes
Notes: svn path=/head/; revision=267307
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 02b154ce5fa2..9a205567c3b7 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 0920b6da9956..1c636493c507 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