Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Jul 2024 12:23:48 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Ed Maste <emaste@freebsd.org>
Cc:        Warner Losh <imp@freebsd.org>, src-committers@freebsd.org,  dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
Subject:   Re: git: 60f098f84119 - main - arch: Update to remove armv6
Message-ID:  <CANCZdfr-9YS_T%2Bby_LP4yXx-8gyHAEBJ68mqbUbLmhKWuNZzUw@mail.gmail.com>
In-Reply-To: <CAPyFy2DF%2BASTGRrVsLh2vS7MzgE=jP5duUeT7i57_AgEM8rx%2Bg@mail.gmail.com>
References:  <202407140600.46E60JKl047510@gitrepo.freebsd.org> <CAPyFy2DF%2BASTGRrVsLh2vS7MzgE=jP5duUeT7i57_AgEM8rx%2Bg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--0000000000003bde24061d4d550a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Jul 15, 2024 at 7:03=E2=80=AFAM Ed Maste <emaste@freebsd.org> wrote=
:

> On Sun, 14 Jul 2024 at 02:00, Warner Losh <imp@freebsd.org> wrote:
> >
> >  .Dv aarch64
> >  will support execution of
> > -.Dv armv6
> > -or
> >  .Dv armv7
> >  binaries if the CPU implements
> >  .Dv AArch32
> > -execution state, however older arm binaries aren't supported.
> > +execution state, however older arm binaries are not supported by
> > +.Fx .
>
> Do older 32-bit Arm userland binaries actually not work? Would
> "support execution of 32-bit Arm binaries if the CPU implements the
> AArch32 execution state" be accurate?
>

armv7 works.

armv6 likely works since they are quite similar to armv7. The only
difference is in userland APIs.

armv4 and v5 do not work if they used RAS (atomics). We don't implement the
kernel part of RAS anymore, so those cannot work today. So nothing threaded
will work. Some non-threaded things might work, but I don't think anybody
has tested it, or seen if there's other, currently unknown, issues.

So if you want to run an armv7 binary AND the CPU implements aarch32
execution states, then you will succeed. if armv6 and aarch64 it may work,
but isn't supported. Otherwise, it won't work (though some trivial examples
of armv4/armv5 might work).

So I omitted the edge case details: armv6 likely will work, but is
unsupported. armv4 and armv5 binaries generally won't work, though some
restricted cases might work. In both of these cases, if they don't work or
break in the future, we don't care (as a project).

Clear as mud, eh?

Warner

--0000000000003bde24061d4d550a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Mon, Jul 15, 2024 at 7:03=E2=80=AF=
AM Ed Maste &lt;<a href=3D"mailto:emaste@freebsd.org">emaste@freebsd.org</a=
>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px=
 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On =
Sun, 14 Jul 2024 at 02:00, Warner Losh &lt;<a href=3D"mailto:imp@freebsd.or=
g" target=3D"_blank">imp@freebsd.org</a>&gt; wrote:<br>
&gt;<br>
&gt;=C2=A0 .Dv aarch64<br>
&gt;=C2=A0 will support execution of<br>
&gt; -.Dv armv6<br>
&gt; -or<br>
&gt;=C2=A0 .Dv armv7<br>
&gt;=C2=A0 binaries if the CPU implements<br>
&gt;=C2=A0 .Dv AArch32<br>
&gt; -execution state, however older arm binaries aren&#39;t supported.<br>
&gt; +execution state, however older arm binaries are not supported by<br>
&gt; +.Fx .<br>
<br>
Do older 32-bit Arm userland binaries actually not work? Would<br>
&quot;support execution of 32-bit Arm binaries if the CPU implements the<br=
>
AArch32 execution state&quot; be accurate?<br></blockquote><div><br></div><=
div>armv7 works.</div><div><br></div><div>armv6 likely works since they are=
 quite similar to armv7. The only difference is in userland APIs.</div><div=
><br></div><div>armv4 and v5 do not work if they used RAS (atomics). We don=
&#39;t implement the kernel part of RAS anymore, so those cannot work today=
. So nothing threaded will work. Some non-threaded things might work, but I=
 don&#39;t think anybody has tested it, or seen if there&#39;s other, curre=
ntly unknown, issues.</div><div><br></div><div>So if you want to run an arm=
v7 binary AND the CPU implements aarch32 execution states, then you will su=
cceed. if armv6 and aarch64 it may work, but isn&#39;t supported. Otherwise=
, it won&#39;t work (though some trivial examples of armv4/armv5 might work=
).</div><div><br></div><div>So I omitted the edge case details: armv6 likel=
y will work, but is unsupported. armv4 and armv5 binaries generally won&#39=
;t work, though some restricted cases might work. In both of these cases, i=
f they don&#39;t work or break in the future, we don&#39;t care (as a proje=
ct).</div><div><br></div><div>Clear as mud, eh?</div><div><br></div><div>Wa=
rner</div></div></div>

--0000000000003bde24061d4d550a--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfr-9YS_T%2Bby_LP4yXx-8gyHAEBJ68mqbUbLmhKWuNZzUw>