diff options
author | Daniel Schwierzeck <daniel.schwierzeck@googlemail.com> | 2012-04-02 02:57:56 +0000 |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2012-04-02 15:54:53 +0200 |
commit | 6cb461b4f1531dbae5c0bae857f649b7943114ec (patch) | |
tree | bd8df91ecc1ebbd2d2cef76bfd1940b74e9920ee | |
parent | 979cfeaf36bf8719d4a1a98f1e8a3e16ef3d1fba (diff) |
MIPS: fix endianess handling
Make endianess of target CPU configurable. Use the new config
option for dbau1550_el and pb1000 boards.
Adapt linking of standalone applications to pass through
endianess options to LD.
Build tested with:
- ELDK 4 mips_4KC- and mips4KCle
- Sourcery CodeBench Lite 2011.03-93
With this patch all 26 MIPS boards can be compiled now in one step by
running "MAKEALL -a mips".
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>
-rw-r--r-- | README | 6 | ||||
-rw-r--r-- | arch/mips/cpu/mips32/config.mk | 21 | ||||
-rw-r--r-- | boards.cfg | 2 | ||||
-rw-r--r-- | include/configs/pb1x00.h | 2 |
4 files changed, 24 insertions, 7 deletions
@@ -374,6 +374,12 @@ The following options need to be configured: Defines the string to utilize when trying to match PCIe device tree nodes for the given platform. +- Generic CPU options: + CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN + + Defines the endianess of the CPU. Implementation of those + values is arch specific. + - Intel Monahans options: CONFIG_SYS_MONAHANS_RUN_MODE_OSC_RATIO diff --git a/arch/mips/cpu/mips32/config.mk b/arch/mips/cpu/mips32/config.mk index 4d1b27379d..a1cd590a00 100644 --- a/arch/mips/cpu/mips32/config.mk +++ b/arch/mips/cpu/mips32/config.mk @@ -27,14 +27,23 @@ # Note: Toolchains with binutils prior to v2.16 # are no longer supported by U-Boot MIPS tree! # -MIPSFLAGS = -march=mips32r2 +MIPSFLAGS := -march=mips32r2 +# Handle special prefix in ELDK 4.0 toolchain ifneq (,$(findstring 4KCle,$(CROSS_COMPILE))) -ENDIANNESS = -EL -else -ENDIANNESS = -EB +ENDIANNESS := -EL endif -MIPSFLAGS += $(ENDIANNESS) +ifdef CONFIG_SYS_LITTLE_ENDIAN +ENDIANNESS := -EL +endif + +ifdef CONFIG_SYS_BIG_ENDIAN +ENDIANNESS := -EB +endif + +# Default to EB if no endianess is configured +ENDIANNESS ?= -EB -PLATFORM_CPPFLAGS += $(MIPSFLAGS) +PLATFORM_CPPFLAGS += $(MIPSFLAGS) $(ENDIANNESS) +PLATFORM_LDFLAGS += $(ENDIANNESS) diff --git a/boards.cfg b/boards.cfg index c6090bab90..3cf75c3151 100644 --- a/boards.cfg +++ b/boards.cfg @@ -360,7 +360,7 @@ dbau1000 mips mips32 dbau1x00 - dbau1100 mips mips32 dbau1x00 - au1x00 dbau1x00:DBAU1100 dbau1500 mips mips32 dbau1x00 - au1x00 dbau1x00:DBAU1500 dbau1550 mips mips32 dbau1x00 - au1x00 dbau1x00:DBAU1550 -dbau1550_el mips mips32 dbau1x00 - au1x00 dbau1x00:DBAU1550 +dbau1550_el mips mips32 dbau1x00 - au1x00 dbau1x00:DBAU1550,SYS_LITTLE_ENDIAN gth2 mips mips32 - - au1x00 pb1000 mips mips32 pb1x00 - au1x00 pb1x00:PB1000 incaip mips mips32 incaip - incaip diff --git a/include/configs/pb1x00.h b/include/configs/pb1x00.h index eea8ed3adb..d056884e7e 100644 --- a/include/configs/pb1x00.h +++ b/include/configs/pb1x00.h @@ -46,6 +46,8 @@ #endif #endif +#define CONFIG_SYS_LITTLE_ENDIAN + #define CONFIG_ETHADDR DE:AD:BE:EF:01:01 /* Ethernet address */ #define CONFIG_BOOTDELAY 2 /* autoboot after 2 seconds */ |