From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shinya Kuribayashi Date: Sun, 24 May 2009 00:24:41 +0900 Subject: [U-Boot] [PATCH 1/2 V2] mips: add endianness support In-Reply-To: <1243078501-27652-1-git-send-email-plagnioj@jcrosoft.com> References: <4A0E3A20.5010900@pobox.com> <1243078501-27652-1-git-send-email-plagnioj@jcrosoft.com> Message-ID: <4A181539.8090004@pobox.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, Jean-Christophe PLAGNIOL-VILLARD wrote: > curently we need to specify the endian of each board in the LDS > > in order to unify all of them add full endianness support > > by default the mips platforms will be compiled as big-endian > to compile it as little-endian define CONFIG_CPU_LITTLE_ENDIAN > > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD > --- > Makefile | 2 ++ > board/dbau1x00/u-boot.lds | 5 +---- > board/gth2/u-boot.lds | 5 +---- > board/incaip/u-boot.lds | 5 +---- > board/pb1x00/u-boot.lds | 5 +---- > board/purple/u-boot.lds | 5 +---- > board/qemu-mips/u-boot.lds | 5 +---- > board/tb0229/u-boot.lds | 3 +-- > cpu/mips/config.mk | 9 --------- > examples/Makefile | 1 + > examples/mips.lds | 5 +---- > mips_config.mk | 25 +++++++++++++++++++++++++ > 12 files changed, 36 insertions(+), 39 deletions(-) [snip] > diff --git a/cpu/mips/config.mk b/cpu/mips/config.mk > index a173c54..928b7d8 100644 > --- a/cpu/mips/config.mk > +++ b/cpu/mips/config.mk > @@ -28,12 +28,3 @@ else \ > echo "-march=4kc -mtune=4kc"; \ > fi) > > -ifneq (,$(findstring 4KCle,$(CROSS_COMPILE))) > -ENDIANNESS = -EL > -else > -ENDIANNESS = -EB > -endif > - > -MIPSFLAGS += $(ENDIANNESS) This is ok, but > - > -PLATFORM_CPPFLAGS += $(MIPSFLAGS) I think this wrongly removes -march=4kc -mtune=4kc. > diff --git a/mips_config.mk b/mips_config.mk > index 05eb05d..423e216 100644 > --- a/mips_config.mk > +++ b/mips_config.mk > @@ -46,3 +46,28 @@ PLATFORM_CPPFLAGS += -DCONFIG_MIPS -D__MIPS__ > PLATFORM_CPPFLAGS += -G 0 -mabicalls -fpic > PLATFORM_CPPFLAGS += -msoft-float > PLATFORM_LDFLAGS += -G 0 -static -n -nostdlib > + > +# > +# We explicitly add the endianness specifier if needed, this allows > +# to compile kernels with a toolchain for the other endianness. We > +# carefully avoid to add it redundantly because gcc 3.3/3.4 complains > +# when fed the toolchain default! > +# > +# Certain gcc versions upto gcc 4.1.1 (probably 4.2-subversion as of > +# 2006-10-10 don't properly change the predefined symbols if -EB / -EL > +# are used, so we kludge that here. A bug has been filed at > +# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29413. > +# > + > +UNDEF_ALL += -UMIPSEB -U_MIPSEB -U__MIPSEB -U__MIPSEB__ > +UNDEF_ALL += -UMIPSEL -U_MIPSEL -U__MIPSEL -U__MIPSEL__ > +PREDEF_BE += -DMIPSEB -D_MIPSEB -D__MIPSEB -D__MIPSEB__ > +PREDEF_LE += -DMIPSEL -D_MIPSEL -D__MIPSEL -D__MIPSEL__ > + > +ifdef CONFIG_CPU_LITTLE_ENDIAN > +PLATFORM_CPPFLAGS += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL $(UNDEF_ALL) $(PREDEF_LE)) > +PLATFORM_LDFLAGS += -EL > +else > +PLATFORM_CPPFLAGS += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB $(UNDEF_ALL) $(PREDEF_BE)) > +PLATFORM_LDFLAGS += -EB > +endif Thanks for resubmitting, but there's one thing I'm warried about. when I gave it a try last time, with almost the same patch you did, I had a GNU make problem. I'll look closely into it, so please wait for some time. Shinya