Specifying BE32 format for -mbig-endian targets

Asked by Benjamin Kamath on 2017-09-13


BE32 vs BE8 refers to whether or not both data AND code are in big endian format. Older ARM processors allowed for BE32 (Big endian data and code), but newer architectures that are "big-endian" tend to use BE8 (big endian data, little-endian code).

ARM v7 processors can be configured to run in be32 mode if the IE bit is set in the CP15 register 1. One such target is the TMS570LCxx chip from Texas instruments, which uses the armv7r architecture (cortex-r5 big endian device).

The compiler does not recognize the -mbe32 or -mbe8 options, and the linker only understands the --be8 option (which is the default for newer architectures). Am I just missing something?

Question information

English Edit question
GNU Arm Embedded Toolchain Edit question
No assignee Edit question
Last query:
Last reply:
Tejas Belagod (belagod-tejas) said : #1

Hi Benjamin,

Apologies, I don't understand what exactly your question is about. Please could you be a bit more specific?


Benjamin Kamath (kamath-ben) said : #2

Sure, I'll try.

Does this toolchain support big endian targets? If so, does it support BE32 (word invariant addressing) targets? If so, through which flags?


One thing I just noticed is that that -mbe32 option seems to be present in the GCC compiler version 8.0.0 docs, but not in the 7.2.0 docs.

Tejas Belagod (belagod-tejas) said : #4

> Ah, relevant commit. It is more recent then I thought: https://github.com/gcc-mirror/gcc/commit/8afe1a14d48aa23a67f9ed85b763fe697cbd2c0a#diff-3d23a3e94e2043893461454f8f3df06c

I think you have answered your own question :-)

Please feel free to let us know if you still have more questions.

Can you help with this problem?

Provide an answer of your own, or ask Benjamin Kamath for more information if necessary.

To post a message you must log in.