Page MenuHomeFreeBSD

arch.7: add table of initial FreeBSD version to support each arch
ClosedPublic

Authored by emaste on May 2 2017, 4:16 PM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Apr 24, 6:34 AM
Unknown Object (File)
Dec 22 2023, 10:31 PM
Unknown Object (File)
Nov 23 2023, 1:55 PM
Unknown Object (File)
Nov 8 2023, 5:32 PM
Unknown Object (File)
Nov 8 2023, 4:51 AM
Unknown Object (File)
Nov 6 2023, 7:33 AM
Unknown Object (File)
Oct 31 2023, 11:01 PM
Unknown Object (File)
Oct 14 2023, 12:58 PM

Details

Summary

Based on a comment by kib@ wrt MFCing arch.7 it seems reasonable to include architectures that do not exist in the stable branch, as developers often use stable to develop head.

Right now content is the same on branches/head; eventually we might have cases where we need to report a difference but will deal with that if/when it occurs.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

share/man/man7/arch.7
43–45 ↗(On Diff #27932)

Need to find out where these were added, and probably add a note about EABI change

49 ↗(On Diff #27932)

Initial mips support came in 8.0, but I'm not sure how the ABIs evolved over time

brooks added inline comments.
share/man/man7/arch.7
49 ↗(On Diff #27932)

IIRC it was mips vs mipseb until some time in 10.

CC @imp

58 ↗(On Diff #27932)

powerpcspe?

share/man/man7/arch.7
43–45 ↗(On Diff #27932)

armv6 was 10.0, with a switch to the hf abi in 11.0

EABI was 10.0

emaste added inline comments.
share/man/man7/arch.7
43–45 ↗(On Diff #27932)

Shall we annotate the armv6 float column with something like hard (.Fx 11.0 and later)?

I'm only really interested in supported branches so I suppose we don't need to worry about EABI.

49 ↗(On Diff #27932)

i.e. mips==LE mipseb==BE until sometime in 10?

Anyhow I don't intend this to be a complete historical record of arch changes over time; I just want to provide enough information so that this file makes sense when MFC'd, so the "initial release" column should refer to what we call "mips" and "mipsel" today IMO.

58 ↗(On Diff #27932)

I pinged @jhibbits on IRC to see about adding it -- I will rebase and add it to this new table.

share/man/man7/arch.7
43–44 ↗(On Diff #27932)

Initial arm and armeb ports were in 6.0, although the armeb name didn't appear until 8.0 (it used TARGET_BIG_ENDIAN hack prior to that time).

Move to EABI happend in 9.0.

43–45 ↗(On Diff #27932)

Initial armv6 was in 10.0. It was always EABI.

49 ↗(On Diff #27932)

Originally it was just mips in 8.0. "TARGET_BIG_ENDIAN" was an utter hack that survived far too long, from just after the 7 branch when mips was added to sometime before 9. There was no mipseb during this time.
There were other hacks for 64-bit stuff at the time, but I don't think it worked well enough to qualify as an arch.
For a brief period in -current between 8.0 and 9.0 "mipsel" was little endian and mipseb was big endian and mips meant nothing. However that changed to the current system sometime before 9.0. I'd list all mips as 9.0 except plain mips, which I'd list as 8.0, perhaps with a historical footnote.

62 ↗(On Diff #27932)

Do you want to list the ports that have been removed? alpha, pc98, ia64

share/man/man7/arch.7
43–45 ↗(On Diff #27932)

It was *ALWAYS* hard floating point. It just used the soft-floating ABI between functions (that is, it passed the floating point numbers in integer registers common to all CPUs, even though all CPUs we ran on had floating point units)

share/man/man7/arch.7
43–44 ↗(On Diff #27932)

9.0 was too early, it was released in early 2012, I added the first EABI kernel code in mid 2012.

43–45 ↗(On Diff #27932)

10.0 was the soft ABI, i.e. no fp. In 11-CURRENT we moved to softfp where we could use the fp hardware, but still with the soft calling convention. Later in 11-CURRENT we moved to the hard ABI, where fp arguments are passed in fp registers.

One of the reasons for this is VFP in GCC 4.2.1 with EABI is broken, and was only fixed after the move to GPLv3. This means we needed to move to clang first.

Incorporate review feedback

share/man/man7/arch.7
43–44 ↗(On Diff #27932)

It may have been 9.1 or 9.2. I do know we invoked the 'Not tier 1' card for it. The EABI symbols are on the tip of 9 branch.

43–45 ↗(On Diff #27932)

Ah, right, we had soft abi in current at first because of clang...

share/man/man7/arch.7
176 ↗(On Diff #27936)

I guess this should be changed to softfp ABI based on comments above.

43–44 ↗(On Diff #27932)

OK. I have a note about 10.0 and later now so we do not need to worry about those details.

Rebase after @kib's update and add a "Final Release" column

This revision is now accepted and ready to land.May 5 2017, 3:37 PM
wblock added inline comments.
share/man/man7/arch.7
78 ↗(On Diff #28064)
.Fx
architecture support varies by release.
This table shows the first
.Fx release to support an architecture, and, for discontinued
architectures, the final release.
113 ↗(On Diff #28064)
All
.Fx
architectures use some variant of the ELF (see
176 ↗(On Diff #27936)

The stuff that is not an argument to .Fx needs to be on the next line.

.Fx 11.0 ,
armv6 used the softfp ABI even though it supported only processors
share/man/man7/arch.7
113 ↗(On Diff #28064)

This one should be included in further edits of @kib's recent changes.

This revision was automatically updated to reflect the committed changes.
head/share/man/man7/arch.7
105

pc98 was released by the FreeBSD(98) crowd through FreeBSD 4.11. The port was started out of the tree in the 1.0 time frame, but was merged into the tree in 2.2.