[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

discussion reset! thumb2/thumbee code as on armv7-a

Lets take a step back on the naming.

Let's say for example that we decide to use the fact that ThumbEE is a
required component on the ARMv7-A profile.

My qualm with Thumb code on ARM is that it requires all libraries and
executables to be compiled with a compatible ABI in the first place.
This means that everything gets prepended with the thumb interworking
which is maybe a register move and an extra branch, or a different
kind of branch (bx instead of bl?), and some weird little trampolines
in places to make sure one ISA can call the other.

What I understand with Thumb on the ARMv7-A is that this whole
interworking thing is made redundant as the new Thumb instruction set
includes 32-bit instructions to take care of the "missing" ARM ISA not
available in the original Thumb instruction set, and they're encoded
identically. Mixing Thumb2 and ARM ISAs is therefore transparent as
long as the chip is running on the assumption that it's decoding
"Thumb" code.

In my tests with compiling things here and there and disassembling I
can't see the difference between code compiled for thumb interworking
and code compiled without the interworking on armv7-a - in this sense,
the "major update in the Thumb instruction set" seems to be that
interworking on chips with Thumb2/EE/whatever is irrelevant.

Let's say we said, the new port will be based on the Thumb ISA as in
the ARMv7-A and depdenent on that profile, could we call it "thumb" or
"thumbee" or so and remove the differentiation on arm and armel by the
fact that it's built for this new improved instruction set with
greater code density?

Matt Sealey <matt@genesi-usa.com>
Product Development Analyst, Genesi USA, Inc.

Reply to: