18a8edbf0e
* There is now a 'busses' folder, and the extant USB/SDHCI/Bluetooth/etc. docs now live in it, instead of various other places. * kernel/ports is now kernel/arch, like it is in src/system. SPARC documentation is now in there, too. * VM files (these are rather outdated) are now in kernel/vm. * SCSI ASC info removed, this is easily available online and it doesn't seem to be very relevant.
13 lines
739 B
Plaintext
13 lines
739 B
Plaintext
The SPARC instruction set specifies instruction for handling long double
|
|
values, however, no hardware implementation actually provides them. They
|
|
generate a trap, which is expected to be handled by the softfloat library.
|
|
|
|
Since traps are slow, and gcc knows better, it will never generate those
|
|
instructions. Instead it directly calls into the C library, to functions
|
|
specified in the ABI and used to do long double math using softfloats.
|
|
|
|
The support code for this is, in our case, compiled into both the kernel and
|
|
libroot. It lives in src/system/libroot/os/arch/sparc/softfloat.c (and other
|
|
support files). This code was extracted from FreeBSD, rather than the glibc,
|
|
because that made it much easier to get it building in the kernel.
|