Add Warner Losh <imp@FreeBSD.org>'s soft float to hard float report.
This commit is contained in:
parent
fecc07d2c5
commit
06855d0a7e
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=47024
1 changed files with 84 additions and 0 deletions
|
@ -2760,4 +2760,88 @@
|
|||
</task>
|
||||
</help>
|
||||
</project>
|
||||
|
||||
<project cat='kern'>
|
||||
<title>Warner's ARMv6 Hard Float Experiment</title>
|
||||
|
||||
<contact>
|
||||
<person>
|
||||
<name>
|
||||
<given>Warner</given>
|
||||
<common>Losh</common>
|
||||
</name>
|
||||
<email>imp@FreeBSD.org</email>
|
||||
</person>
|
||||
</contact>
|
||||
|
||||
<links>
|
||||
<url href="https://wiki.freebsd.org/armv6tohardfloat">Moving
|
||||
armv6 from Soft Float to Hard Float</url>
|
||||
</links>
|
||||
|
||||
<body>
|
||||
<p>The plan for the transition to hard float on ARMv6 involved
|
||||
having a new <tt>MACHINE_ARCH</tt>. That seemed expedient,
|
||||
but inelegant to me. The kernel can easily run both soft and
|
||||
hard floating point binaries, assuming that the proper
|
||||
libraries are available.</p>
|
||||
|
||||
<p>As an experiment, I have been investigating how hard it would
|
||||
be to just start generating hard float binaries starting with
|
||||
&os; 11.0 and what issues this causes. I am most interested
|
||||
in the source, the effects on ports, and any binary/package
|
||||
upgrade issues from &os; 10.X to 11.</p>
|
||||
|
||||
<p>If successful, this will allow the project to move more
|
||||
quickly away from a soft-floating point default. Users
|
||||
upgrading from &os; 10 will automatically be upgraded to hard
|
||||
float. All supported ARMv6 and ARMv7 processors have hardware
|
||||
floating point, so this will not be a problem for the vast
|
||||
majority of users. In addition, many of the build scripts
|
||||
know about all values of <tt>MACHINE_ARCH</tt>, and not
|
||||
changing the <tt>MACHINE_ARCH</tt> will allow those scripts to
|
||||
continue to function without additional changes.</p>
|
||||
|
||||
<p>I am about three fourths of the way through investigating
|
||||
this possibility and coding up solutions to the problems
|
||||
encountered so far.</p>
|
||||
|
||||
<p>The risks from this experiment are that it will encounter
|
||||
unforseen dependencies. This could force us to go with the
|
||||
original plan for migration to hard floating point.</p>
|
||||
|
||||
<p>The hope for this experiment is to pave the way for using the
|
||||
superior hard floating point in &os; 11 with minimal impact to
|
||||
our users and their current build scripts and processes.
|
||||
Backwards compatibility will be ensured with the libsoft tasks
|
||||
if users need to run &os; 10.X ARMv6 softfloat binaries on
|
||||
&os; 11.0 with its new hardfloat libraries. Packages should
|
||||
automatically update once the new hardfloat packages are put
|
||||
into place.</p>
|
||||
</body>
|
||||
|
||||
<help>
|
||||
<task>
|
||||
<p>Building seat belts into <tt>ld.so</tt> to not cross-thread
|
||||
libraries of differing floating point implementations.</p>
|
||||
</task>
|
||||
|
||||
<task>
|
||||
<p>Clang should properly mark hard versus soft floating point
|
||||
<tt>.o</tt>s. This is a minor issue, since <tt>ld</tt>
|
||||
handles things correctly.</p>
|
||||
</task>
|
||||
|
||||
<task>
|
||||
<p><tt>libsoft</tt>, the analog of <tt>lib32</tt>, needs to be
|
||||
completed.</p>
|
||||
</task>
|
||||
|
||||
<task>
|
||||
<p>Patches to flip the switch from soft to hard for builds for
|
||||
<tt>armv6</tt>. Some additional code needed to build soft
|
||||
float may be needed for the prior task.</p>
|
||||
</task>
|
||||
</help>
|
||||
</project>
|
||||
</report>
|
||||
|
|
Loading…
Reference in a new issue