Skip to contentSkip to conversation

add missing ARM boards to MAKEALL

PATCH New David Brownell 4 participants 7 messages Jan 18, 2008 – Mar 30, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/3 add missing ARM boards to MAKEALL

Add some missing ARM boards to MAKEALL. These build correctly, unlike several of the boards already listed.

MAKEALL +3 -0
@@ -455,6 +455,8 @@ LIST_ARM9="			\
 	cp926ejs		\
 	cp946es			\
 	cp966			\
+	csb637			\
+	kb9202			\
 	lpd7a400		\
 	mp2usb			\
 	mx1ads			\
@@ -463,6 +465,7 @@ LIST_ARM9="			\
 	omap1510inn		\
 	omap1610h2		\
 	omap1610inn		\
+	omap5912osk		\
 	omap730p2		\
 	sbc2410x		\
 	scb9328			\
#2 lore raw

PATCH 2/3 better ARM9 compiler options

Update some ARM9 builds to pass the exact CPU to GCC, when the compiler supports that specification. This stops pessimizing codegen, and removes voluminous warnings about (no) interworking support from EABI compilers. (Like CodeSourcery's ARM 2007q3 release.)

cpu/arm920t/config.mk +1 -1
@@ -24,11 +24,11 @@
 PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 \
 	-msoft-float
 
-PLATFORM_CPPFLAGS += -march=armv4
 # =========================================================================
 #
 # Supply options according to compiler version
 #
 # =========================================================================
+PLATFORM_CPPFLAGS +=$(call cc-option,-mcpu=arm920t,-march=armv4)
 PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
 PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
cpu/arm926ejs/config.mk +1 -1
@@ -24,11 +24,11 @@
 PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 \
 	-msoft-float
 
-PLATFORM_CPPFLAGS += -march=armv4
 # =========================================================================
 #
 # Supply options according to compiler version
 #
 # =========================================================================
+PLATFORM_CPPFLAGS +=$(call cc-option,-mcpu=arm926ej-s,-march=armv4)
 PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
 PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
#3 lore raw

PATCH 2/3 better ARM9 compiler options

cpu/arm920t/config.mk 2008-01-13 11:05:02.000000000 -0800 line 25

Quoted 12 lines

Update some ARM9 builds to pass the exact CPU to GCC, when the compiler supports that specification. This stops pessimizing codegen, and removes voluminous warnings about (no) interworking support from EABI compilers. (Like CodeSourcery's ARM 2007q3 release.)

cpu/arm920t/config.mk 2008-01-13 11:05:02.000000000 -0800 renamed from cpu/arm920t/config.mk 2008-01-13 10:42:55.000000000 -0800 +0 -0
@@ -24,11 +24,11 @@
 PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 \
 -msoft-float

Why not remove the "-msoft-float" as well.
U-Boot does not use soft float and why then the requirement to use a compiler which supports soft-float???

Quoted 16 lines
cpu/arm920t/config.mk 2008-01-13 11:05:02.000000000 -0800 renamed from cpu/arm920t/config.mk 2008-01-13 10:42:55.000000000 -0800 +1 -1
-PLATFORM_CPPFLAGS += -march=armv4
 # =========================================================================
 #
 # Supply options according to compiler version
 #
 # =========================================================================
+PLATFORM_CPPFLAGS +=$(call cc-option,-mcpu=arm920t,-march=armv4)
 PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
 PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
cpu/arm926ejs/config.mk 2008-01-13 11:04:56.000000000 -0800 renamed from cpu/arm926ejs/config.mk 2008-01-13 10:42:55.000000000 -0800 +0 -0
@@ -24,11 +24,11 @@
 PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 \
 -msoft-float

cpu/arm926ejs/config.mk 2008-01-13 11:04:56.000000000 -0800 line 34

Quoted 10 lines
cpu/arm926ejs/config.mk 2008-01-13 11:04:56.000000000 -0800 renamed from cpu/arm926ejs/config.mk 2008-01-13 10:42:55.000000000 -0800 +1 -1
 
-PLATFORM_CPPFLAGS += -march=armv4
 # =========================================================================
 #
 # Supply options according to compiler version
 #
 # =========================================================================
+PLATFORM_CPPFLAGS +=$(call cc-option,-mcpu=arm926ej-s,-march=armv4)
 PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
 PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))

Is this correct?
ARM926EJ-S is ARMV5 architecture, not ARMV4.

Best Regards
Ulf Samuelsson

#4 lore raw

PATCH 2/3 better ARM9 compileroptions

Quoted 3 lines

Is this correct?
ARM926EJ-S is ARMV5 architecture, not ARMV4.

Yes, 926EJ-S is ARMv5.

#5 lore raw

PATCH 2/3 better ARM9 compiler options

In reply to Ulf Samuelsson
Quoted 8 lines · Ulf Samuelsson

cpu/arm920t/config.mk 2008-01-13 11:05:02.000000000 -0800 line 25

Quoted 5 lines
cpu/arm920t/config.mk 2008-01-13 11:05:02.000000000 -0800 renamed from cpu/arm920t/config.mk 2008-01-13 10:42:55.000000000 -0800 +0 -0
@@ -24,11 +24,11 @@
 PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 \
 -msoft-float

Why not remove the "-msoft-float" as well.
U-Boot does not use soft float

It shouldn't use floating point of any flavor, in fact. But when some accident makes it try to do so, "soft" is the only potentially safe approach.

Quoted 2 lines

and why then the requirement to
use a compiler which supports soft-float???

That change would be orthogonal. And potentially troublesome; I have seen build breakage in U-Boot that was fixed by disabling even the accidental use of hard-float code.

Quoted 6 lines
Quoted 6 lines
cpu/arm926ejs/config.mk 2008-01-13 11:04:56.000000000 -0800 renamed from cpu/arm926ejs/config.mk 2008-01-13 10:42:55.000000000 -0800 +0 -0
@@ -24,11 +24,11 @@
 PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 \
 -msoft-float
 
Quoted 13 lines

cpu/arm926ejs/config.mk 2008-01-13 11:04:56.000000000 -0800 line 34

Quoted 10 lines
cpu/arm926ejs/config.mk 2008-01-13 11:04:56.000000000 -0800 renamed from cpu/arm926ejs/config.mk 2008-01-13 10:42:55.000000000 -0800 +1 -1
-PLATFORM_CPPFLAGS += -march=armv4
 # =========================================================================
 #
 # Supply options according to compiler version
 #
 # =========================================================================
+PLATFORM_CPPFLAGS +=$(call cc-option,-mcpu=arm926ej-s,-march=armv4)
 PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
 PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))

Is this correct?

Sure. If that fallback is used, it's just a fallback to sub-optimal code generation. No CLZ, probably the wrong guesses about pipelines, and so on. But probably still safe on ancient compilers.

Quoted 1 line

ARM926EJ-S is ARMV5 architecture, not ARMV4.

In fact it's ARMv5tej ... an ARMv4 superset.

The specific compiler warnings that annoyed me would vanish by passing an "armv4t" option ... that'd be OK on most CPUs that U-Boot supports. But I don't see much reason not to specify the actual CPU, and thus to get the benefit of smarter scheduling on newer compilers.

- Dave

#6 lore raw

PATCH 2/3 better ARM9 compiler options

In reply to David Brownell
Quoted 7 lines · David Brownell

Update some ARM9 builds to pass the exact CPU to GCC, when the compiler supports that specification. This stops pessimizing codegen, and removes voluminous warnings about (no) interworking support from EABI compilers. (Like CodeSourcery's ARM 2007q3 release.)

NOK

I've the following warning when I'm using it

nfs.c:1: warning: switch -mcpu=arm926ej-s conflicts with -march= switch sntp.c:1: warning: switch -mcpu=arm926ej-s conflicts with -march= switch part.c:0: warning: switch -mcpu=arm926ej-s conflicts with -march= switch

My toolchains

Using built-in specs.
Target: arm-elf
Configured with: ../configure --prefix=/opt/arm --target=arm-elf --enable-interwork --enable-multilib --enable-languages=c,c++ --with-newlib --with-headers=/opt/arm/src/newlib-1.14.0/newlib/libc/include Thread model: single
gcc version 4.1.1

Best Regards,
J.