Message ID | 56CDB728.1050300@arm.com |
---|---|
State | New |
Headers | show |
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.
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.
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.
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. >
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.