History log of /src/lib/libc/softfloat/softfloat-specialize
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.14 17-Sep-2025 nat

Fix logic pertaining to NaN for floatx80.

The previous was wrong in that low and high were mixed up.

The only exisiting consumer on floatx80 types and softfloat is m68k.


# 1.13 17-Sep-2025 nat

Shift the high word of floatx80 accordingly on m68k.

This is because gcc will store floatx80 as signbit(1)exponent(15) padding(32)
as opposed to sign and exponent in a short(16 bit) word.


# 1.12 10-Sep-2025 nat

Switch over m68k soffloat build to libc/softfloat.

m68k would previously use softfloat functions contained in libgcc_s.

This change aligns m68k with other platforms built with softfloat.

It is still possible to build the gcc_s softfloat impementation by setting
MKSOFFTFLOAT=yes MKLIBCSOFTFLOAT=no

Addresses PR/59393.


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
# 1.11 06-May-2025 riastradh

libc: Sprinkle #ifdef _REENTRANT around thr_sigsetmask.

Workaround -- temporary, I hope -- for:

PR lib/59401: libc: thr_sigsetmask definition is incoherent


# 1.10 27-Apr-2025 riastradh

libc softfloat: Make SIGFPE for trapped fp exceptions non-ignorable.

In hardfloat, when the kernel delivers SIGFPE for a floating-point
exception trap, if SIGFPE is masked or ignored, it is handled _as if_
SIGFPE were unmasked and had the default signal disposition:

964 /*
965 * If the signal is masked or ignored, then unmask it and
966 * reset it to the default action so that the process or
967 * its tracer will be notified.
968 */
969 const bool ignored = action == SIG_IGN;
970 if (masked || ignored) {
971 mutex_enter(&ps->sa_mutex);
972 sigdelset(mask, signo);
973 sigdelset(&p->p_sigctx.ps_sigcatch, signo);
974 sigdelset(&p->p_sigctx.ps_sigignore, signo);
975 sigdelset(&SIGACTION_PS(ps, signo).sa_mask, signo);
976 SIGACTION_PS(ps, signo).sa_handler = SIG_DFL;
977 mutex_exit(&ps->sa_mutex);
978 }

https://nxr.netbsd.org/xref/src/sys/kern/kern_sig.c?r=1.410#964

In other words, if you have asked for floating-point exception traps
via fpsetmask(3) or feeenableexcept(3), then you can't simply defer
or ignore them at the signal level any more than you can defer or
ignore SIGBUS or SIGSEGV. And if the signal handler returns, it will
restart the instruction and -- if nothing has changed in the set of
trapped floating-point exceptions -- trap again, delivering the same
signal again.

Since we can't lock access to signal dispositions, I don't think we
can guarantee the same effect from userland atomically, but we can
get a close approximation (should be good enough for single-threaded
programs, at least) by mimicking this logic and calling sigqueueinfo
in a loop.

PR misc/56820: Many FPE related tests fail on softfloat machines


Revision tags: netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base netbsd-9-3-RELEASE cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base netbsd-9-1-RELEASE phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-maxphys-base
# 1.9 10-Aug-2014 matt

branches: 1.9.36;
Changes to existing files to enable building AARCH64 userland.
evbarm64-el
This is clang only. While gcc4.8 supports aarch64, no netbsd support has
been written for aarch64 with gcc4.8.


Revision tags: yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8
# 1.8 10-Jan-2013 matt

Add hooks to softfloat to support per-lwp exception state.


Revision tags: yamt-pagecache-base7 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4
# 1.7 21-Mar-2012 christos

branches: 1.7.2;
cast to appropriate types.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base
# 1.6 06-Mar-2011 martin

branches: 1.6.4;
Apply local namespace protection equivalent to the weak alias done
in softfloat-for-gcc.h, which we can't include here, to move
"float_exception_mask" into implementation namespace.


Revision tags: bouyer-quota2-nbase
# 1.5 04-Mar-2011 martin

Use sigqueueinfo() instead of raise() to generate exceptions. Provide
minimalistic siginfo data.


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE bouyer-quota2-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-3-base
# 1.4 26-Sep-2004 jmmv

branches: 1.4.46;
Add support to build the mac68k port with soft-float enabled (i.e., setting
MKSOFTFLOAT=yes). The main purpose of this feature is to let NetBSD work
in machines with the 68040LC chip (those that have the FPU bug).

All the work has been done by Bruce O'Neel <edoneel AT sdf.lonestar.org>,
with some very minor changes by me; the patches were being posted to the
port-mac68k mailing list. It has been tested for a long time by several
users, including me.

I have just verified that regular releases, as well as soft-float ones,
continue to build.

There have been no objections to this patch since I asked for them in July
in the port-mac68k list.


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.3 12-May-2002 bjh21

Add SIGFPE support to SoftFloat, so fpsetmask/fpgetmask now work. A new
variable, float_exception_mask (#defined to _softfloat_float_exception_mask)
contains the current exception mask.
Also make the argument to float_raise into an fp_except.
Also synchronise file header comments between files.


# 1.2 23-Apr-2002 agc

branches: 1.2.2;
After the grand unification of softfloat-specialize, let sparc64 builds
work properly again.


# 1.1 21-Apr-2002 bjh21

All the versions of softfloat-specialize were practically identical, so replace
them with a single one.