diff mbox

[WWWDocs] Deprecate support for non-thumb ARM devices

Message ID 56CDB728.1050300@arm.com
State New
Headers show

Commit Message

Richard Earnshaw (lists) Feb. 24, 2016, 1:59 p.m. UTC
After discussion with the ARM port maintainers we have decided that now
is probably the right time to deprecate support for versions of the ARM
Architecture prior to ARMv4t.  This will allow us to clean up some of
the code base going forwards by being able to assume:
- Presence of half-word data accesses
- Presence of Thumb and therefore of interworking instructions.

This patch records the status change in the GCC-6 release notes.

I propose to commit this patch later this week.

R.

Comments

Richard Earnshaw (lists) Feb. 25, 2016, 9:20 a.m. UTC | #1
On 24/02/16 17:38, Joseph Myers wrote:
> On Wed, 24 Feb 2016, Richard Earnshaw (lists) wrote:

> 

>> After discussion with the ARM port maintainers we have decided that now

>> is probably the right time to deprecate support for versions of the ARM

>> Architecture prior to ARMv4t.  This will allow us to clean up some of

> 

> Should this include -march=armv5 and -march=armv5e (the theoretical 

> no-Thumb versions of v5, which may never have had any corresponding 

> processors)?

> 


It's a fair question, but the answer is no, this isn't necessary.

The point is to permit the compiler to use interworking compatible
sequences of code when generating ARM code, not to force users to use
Thumb code.  The necessary instruction (BX) is available in armv5 and
armv5e, even though Thumb is not supported in those architecture variants.

It might be worth deprecating v5 and v5e at some point in the future: to
the best of my knowledge no v5 class device without Thumb has ever
existed - but it's not a decision that needs to be related to this proposal.

R.
Richard Earnshaw (lists) Feb. 25, 2016, 2:06 p.m. UTC | #2
On 25/02/16 13:32, Stefan Ring wrote:
> On Thu, Feb 25, 2016 at 10:20 AM, Richard Earnshaw (lists)

> <Richard.Earnshaw@arm.com> wrote:

>> The point is to permit the compiler to use interworking compatible

>> sequences of code when generating ARM code, not to force users to use

>> Thumb code.  The necessary instruction (BX) is available in armv5 and

>> armv5e, even though Thumb is not supported in those architecture variants.

>>

>> It might be worth deprecating v5 and v5e at some point in the future: to

>> the best of my knowledge no v5 class device without Thumb has ever

>> existed - but it's not a decision that needs to be related to this proposal.

> 

> Slightly off topic, but related: What does the "e" stand for? Also,

> what does "l" stand for in armv5tel, which is what I usually get --

> little endian?


The 'e' represented some extensions to the original v5 ISA (you can make
your own mind up as to what the 'e' stands for).

The 'l' isn't anything to do with the architecture per-se.  It simply
means in the Linux context a little-endian device, as opposed to a
'b'ig-endian device.  Most ARM based systems are little-endian so you'll
see that far more often than 'b'.


> I have no idea if there is an authoritative source for these host

> specifications and cannot find any. config.guess seems to just rely on

> uname -m.

> 


For the AArch32 it's extremely ad-hoc.  There's a bit more sanity in the
AArch64 world, but it relies on people following some conventions and
not just creating anarchy.

R.
Richard Earnshaw (lists) Feb. 25, 2016, 2:24 p.m. UTC | #3
On 25/02/16 14:15, David Brown wrote:
> On 25/02/16 14:32, Stefan Ring wrote:

>> On Thu, Feb 25, 2016 at 10:20 AM, Richard Earnshaw (lists)

>> <Richard.Earnshaw@arm.com> wrote:

>>> The point is to permit the compiler to use interworking compatible

>>> sequences of code when generating ARM code, not to force users to use

>>> Thumb code.  The necessary instruction (BX) is available in armv5 and

>>> armv5e, even though Thumb is not supported in those architecture variants.

>>>

>>> It might be worth deprecating v5 and v5e at some point in the future: to

>>> the best of my knowledge no v5 class device without Thumb has ever

>>> existed - but it's not a decision that needs to be related to this proposal.

>>

>> Slightly off topic, but related: What does the "e" stand for? Also,

>> what does "l" stand for in armv5tel, which is what I usually get --

>> little endian?

> 

> <https://community.arm.com/groups/processors/blog/2011/11/02/arm-fundamentals-introduction-to-understanding-arm-processors>

> 

> <https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures>

> 

> The "t" is thumb, 

Correct.

"e" means "DSP-like extensions",
Correct.  But there were other bits as well.

 and I suspect the "l"
> is a misprint for "j", meaning the Jazelle (Java) acceleration instructions.


No.  As I said earlier, it's nothing to do with the architecture, but
means the system is running little-endian.

R.
Richard Earnshaw (lists) Feb. 26, 2016, 2:03 p.m. UTC | #4
On 24/02/16 13:59, Richard Earnshaw (lists) wrote:
> After discussion with the ARM port maintainers we have decided that now

> is probably the right time to deprecate support for versions of the ARM

> Architecture prior to ARMv4t.  This will allow us to clean up some of

> the code base going forwards by being able to assume:

> - Presence of half-word data accesses

> - Presence of Thumb and therefore of interworking instructions.

> 

> This patch records the status change in the GCC-6 release notes.

> 

> I propose to commit this patch later this week.

> 


Now done.

R.

> R.

> 

> 

> deprecate.patch

> 

> 

> Index: htdocs/gcc-6/changes.html

> ===================================================================

> RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-6/changes.html,v

> retrieving revision 1.61

> diff -u -r1.61 changes.html

> --- htdocs/gcc-6/changes.html	19 Feb 2016 05:00:54 -0000	1.61

> +++ htdocs/gcc-6/changes.html	19 Feb 2016 14:47:31 -0000

> @@ -340,7 +340,14 @@

>  <h3 id="arm">ARM</h3>

>     <ul>

>       <li>

> -       The arm port now supports target attributes and pragmas.  Please

> +       Support for revisions of the ARM architecture prior to ARMv4t has

> +       been deprecated and will be removed in a future GCC release.

> +       This affects ARM6, ARM7 (but not ARM7TDMI), ARM8, StrongARM, and

> +       Faraday fa526 and fa626 devices, which do not have support for

> +       the Thumb execution state.

> +     </li>

> +     <li>

> +       The ARM port now supports target attributes and pragmas.  Please

>         refer to the <a href="https://gcc.gnu.org/onlinedocs/gcc/ARM-Function-Attributes.html#ARM-Function-Attributes">

>         documentation</a> for details of available attributes and

>         pragmas as well as usage instructions.

>
diff mbox

Patch

Index: htdocs/gcc-6/changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-6/changes.html,v
retrieving revision 1.61
diff -u -r1.61 changes.html
--- htdocs/gcc-6/changes.html	19 Feb 2016 05:00:54 -0000	1.61
+++ htdocs/gcc-6/changes.html	19 Feb 2016 14:47:31 -0000
@@ -340,7 +340,14 @@ 
 <h3 id="arm">ARM</h3>
    <ul>
      <li>
-       The arm port now supports target attributes and pragmas.  Please
+       Support for revisions of the ARM architecture prior to ARMv4t has
+       been deprecated and will be removed in a future GCC release.
+       This affects ARM6, ARM7 (but not ARM7TDMI), ARM8, StrongARM, and
+       Faraday fa526 and fa626 devices, which do not have support for
+       the Thumb execution state.
+     </li>
+     <li>
+       The ARM port now supports target attributes and pragmas.  Please
        refer to the <a href="https://gcc.gnu.org/onlinedocs/gcc/ARM-Function-Attributes.html#ARM-Function-Attributes">
        documentation</a> for details of available attributes and
        pragmas as well as usage instructions.