Loic, On Monday 14 March 2011 09:41 PM, Loïc Minier wrote: > On Mon, Mar 14, 2011, Aneesh V wrote: >> +- ARM Options: >> + CONFIG_SYS_THUMB_BUILD >> + >> + Use this flag to build U-Boot using the Thumb instruction >> + set for ARM architectures. Thumb instruction set provides >> + better code density. For ARM architectures that support >> + Thumb2 this flag will result in Thumb2 code generated by >> + GCC. >> + >> - Linux Kernel Interface: >> CONFIG_CLOCKS_IN_MHZ >> > > The above README changes suggest that "Thumb-1" would also be possible > but you patch an armv7 file: > >> --- a/arch/arm/cpu/armv7/config.mk >> +++ b/arch/arm/cpu/armv7/config.mk > > so I suspect only armv7 CPUs would be affected? Consider patching > arch/arm/config.mk instead which is where -marm is currently set: > # Explicitly specifiy 32-bit ARM ISA since toolchain default can be > -mthumb: > PLATFORM_CPPFLAGS += $(call cc-option,-marm,) > In fact, I would find it less confusing if the flags were -mthumb or > -marm and never -marm -mthumb, so you probably want to patch the code > setting -marm above to be in your "else" clause.
I will do that. Thank you. > >> @@ -31,3 +31,8 @@ PLATFORM_CPPFLAGS += -march=armv5 > > This suggests that u-boot is actually built in ARMv5 mode, which means > we're missing out actual Thumb-2 instructions (v6+). > > Perhaps arch/arm/cpu/armv7/config.mk should also $(call > cc-option,-march=armv7). (I've never used -march=armv7 but it seems to > exist and is probably more correct than -march=armv7-a). > Please note that I am enabling armv7-a in the second patch in omap4 config.mk file. The reason I didn't do this here was some ARMv7 SoCs do not want to use -march=armv7-a even if the compiler supports it. Tegra2 is an example. Please see the below from Tegra2 config.mk: # Use ARMv4 for Tegra2 - initial code runs on the AVP, which is an ARM7TDI. PLATFORM_CPPFLAGS += -march=armv4 This being the case I would have had to define another CONFIG flag if I had to add -march=armv7-a in arch/arm/cpu/armv7/config.mk. I thought it un-necessary and instead put it in the SoC specific file. So, Tegra2 can continue to use -march=armv4 and will get Thumb-1 if they enable CONFIG_SYS_THUMB_BUILD. Or do you think we should define something like CONFIG_SYS_MARCH_ARMV7 I will try -march=armv7, but I vaguely remember it had some issues. >> # ========================================================================= >> PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,\ >> $(call cc-option,-malignment-traps,)) >> + >> +ifeq ($(CONFIG_SYS_THUMB_BUILD),y) >> +# Enable Thumb mode build if compiler supports it >> +PLATFORM_CPPFLAGS += $(call cc-option,-mthumb -mthumb-interwork) >> +endif >> -- >> 1.7.0.4 >> > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot