Patchwork [U-Boot,v2] powerpc/85xx: select -mcpu=8540 to match -Wa, e500

login
register
mail settings
Submitter Scott Wood
Date Jan. 19, 2013, 1:38 a.m.
Message ID <20130119013816.GA10517@buserror.net>
Download mbox | patch
Permalink /patch/213770/
State Accepted, archived
Delegated to: Andy Fleming
Headers show

Comments

Scott Wood - Jan. 19, 2013, 1:38 a.m.
This allows building with toolchains that by default target e6500.

When targetting e6500, GCC generates a two-operand form of mfcr which gas
normally maps to mfocr.  However, when we tell gas to target e500 rather
than e6500, it rejects two-operand mfcr.  Tell GCC to target a
least-common-denominator e500 to match what we tell the assembler.

-misel and -mno-strict-align are added to keep the code size from growing
(it actually ends up shrinking a bit compared to -mcpu=603e, which was
the default on my old toolchain).

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
v2: add -misel and -mno-strict-align

 arch/powerpc/cpu/mpc85xx/config.mk |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
Andy Fleming - Jan. 24, 2013, 8:07 a.m.
Scott, I reverted this patch, and it fixed some build errors:

20001122-1.c:1:0: error: E500 and FPRs not supported
20010114-2.c:1:0: error: E500 and FPRs not supported
make[2]: ***
[/local/afleming/u-boot/build/P2020DS/post/lib_powerpc/fpu/20001122-1.o]
Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: ***
[/local/afleming/u-boot/build/P2020DS/post/lib_powerpc/fpu/20010114-2.o]
Error 1
make[1]: *** [postdeps] Error 2
make: *** [/local/afleming/u-boot/build/P2020DS/post/libpost.o] Error 2
make: INTERNAL: Exiting with 4 jobserver tokens available; should be 3!

Similar errors were seen on all these boards:

P2041RDB_SRIO_PCIE_BOOT  P5020DS
P3041DS                  P5020DS_NAND
P2020DS               P3041DS_NAND             P5020DS_SDCARD
P2020DS_36BIT         P3041DS_SDCARD           P5020DS_SECURE_BOOT
P2020DS_DDR2          P3041DS_SECURE_BOOT      P5020DS_SPIFLASH
P2020DS_SDCARD        P3041DS_SPIFLASH         P5020DS_SRIO_PCIE_BOOT
P2020DS_SPIFLASH      P3041DS_SRIO_PCIE_BOOT   P5040DS
P2041RDB              P4080DS                  xpedite520x
P2041RDB_NAND         P4080DS_SDCARD           xpedite537x
P2041RDB_SDCARD       P4080DS_SECURE_BOOT      xpedite550x
P2041RDB_SECURE_BOOT  P4080DS_SPIFLASH
P2041RDB_SPIFLASH     P4080DS_SRIO_PCIE_BOOT



On Fri, Jan 18, 2013 at 7:38 PM, Scott Wood <scottwood@freescale.com> wrote:

> This allows building with toolchains that by default target e6500.
>
> When targetting e6500, GCC generates a two-operand form of mfcr which gas
> normally maps to mfocr.  However, when we tell gas to target e500 rather
> than e6500, it rejects two-operand mfcr.  Tell GCC to target a
> least-common-denominator e500 to match what we tell the assembler.
>
> -misel and -mno-strict-align are added to keep the code size from growing
> (it actually ends up shrinking a bit compared to -mcpu=603e, which was
> the default on my old toolchain).
>
> Signed-off-by: Scott Wood <scottwood@freescale.com>
> ---
> v2: add -misel and -mno-strict-align
>
>  arch/powerpc/cpu/mpc85xx/config.mk |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/cpu/mpc85xx/config.mkb/arch/powerpc/cpu/mpc85xx/
> config.mk
> index f36d823..450d511 100644
> --- a/arch/powerpc/cpu/mpc85xx/config.mk
> +++ b/arch/powerpc/cpu/mpc85xx/config.mk
> @@ -23,7 +23,8 @@
>
>  PLATFORM_RELFLAGS += -meabi
>
> -PLATFORM_CPPFLAGS += -ffixed-r2 -Wa,-me500 -msoft-float -mno-string
> +PLATFORM_CPPFLAGS += -ffixed-r2 -mcpu=8540 -misel -mno-strict-align \
> +       -Wa,-me500 -msoft-float -mno-string
>
>  # -mspe=yes is needed to have -mno-spe accepted by a buggy GCC;
>  # see "[PATCH,rs6000] make -mno-spe work as expected" on
> --
> 1.7.9.5
>
>

Patch

diff --git a/arch/powerpc/cpu/mpc85xx/config.mk b/arch/powerpc/cpu/mpc85xx/config.mk
index f36d823..450d511 100644
--- a/arch/powerpc/cpu/mpc85xx/config.mk
+++ b/arch/powerpc/cpu/mpc85xx/config.mk
@@ -23,7 +23,8 @@ 
 
 PLATFORM_RELFLAGS += -meabi
 
-PLATFORM_CPPFLAGS += -ffixed-r2 -Wa,-me500 -msoft-float -mno-string
+PLATFORM_CPPFLAGS += -ffixed-r2 -mcpu=8540 -misel -mno-strict-align \
+	-Wa,-me500 -msoft-float -mno-string
 
 # -mspe=yes is needed to have -mno-spe accepted by a buggy GCC;
 # see "[PATCH,rs6000] make -mno-spe work as expected" on