aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/sys/unix
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2010-08-20 14:30:31 +0200
committerBjörn Gustavsson <[email protected]>2010-08-20 14:30:31 +0200
commitcafb4c1df8a76031f992a019b6d6ada5dbadbf53 (patch)
treeb6872d2ea825918b495e4e5007a55274ae46bd40 /erts/emulator/sys/unix
parent2d8c9cdba0109971fe8ae7341385beecda8de7b0 (diff)
parent0f4b1294f51983f834dbca750b3ad271d72f740a (diff)
downloadotp-cafb4c1df8a76031f992a019b6d6ada5dbadbf53.tar.gz
otp-cafb4c1df8a76031f992a019b6d6ada5dbadbf53.tar.bz2
otp-cafb4c1df8a76031f992a019b6d6ada5dbadbf53.zip
Merge branch 'bjorn/solaris-fp-exception' into dev
* bjorn/solaris-fp-exception: Solaris/x86: Handle floating point exceptions properly in driver threads
Diffstat (limited to 'erts/emulator/sys/unix')
-rw-r--r--erts/emulator/sys/unix/sys_float.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/erts/emulator/sys/unix/sys_float.c b/erts/emulator/sys/unix/sys_float.c
index c59c99f65e..d6d06d0036 100644
--- a/erts/emulator/sys/unix/sys_float.c
+++ b/erts/emulator/sys/unix/sys_float.c
@@ -810,7 +810,9 @@ int
matherr(struct exception *exc)
{
#if !defined(NO_FPE_SIGNALS)
- set_current_fp_exception((unsigned long)__builtin_return_address(0));
+ volatile unsigned long *fpexnp = erts_get_current_fp_exception();
+ if (fpexnp != NULL)
+ *fpexnp = (unsigned long)__builtin_return_address(0);
#endif
return 1;
}