Home | History | Annotate | Download | only in softfloat
History log of /src/lib/libc/softfloat/softfloat-specialize
RevisionDateAuthorComments
 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.
 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
 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.
 1.8  10-Jan-2013  matt Add hooks to softfloat to support per-lwp exception state.
 1.7  21-Mar-2012  christos branches: 1.7.2;
cast to appropriate types.
 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.
 1.5  04-Mar-2011  martin Use sigqueueinfo() instead of raise() to generate exceptions. Provide
minimalistic siginfo data.
 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.
 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.
 1.2.2.3  21-Jun-2002  nathanw Catch up to -current.
 1.2.2.2  25-Apr-2002  nathanw Catch up to -current.
 1.2.2.1  23-Apr-2002  nathanw file softfloat-specialize was added on branch nathanw_sa on 2002-04-25 04:01:45 +0000
 1.4.46.1  05-Mar-2011  bouyer Sync with HEAD
 1.6.4.2  23-Jan-2013  yamt sync with head
 1.6.4.1  17-Apr-2012  yamt sync with head
 1.7.2.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.2.1  25-Feb-2013  tls resync with head
 1.9.36.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed