by kmihelich » Thu Jul 14, 2011 8:23 pm
You can add -mno-thumb if that maybe flips a flag that makes it all work. GCC isn't compiled with thumb interworking, so for our toolchain it should be a non-issue. I don't use thumb because it's been shown in multiple cases to inflate binary size and make the application slower. Its best use is in tinier processors like the v5 or Cortex-M3, where with basic filesystem components and custom real-time applications that people use those processor for, you can decrease code size and speak sort of more "natively" to the processor. With A8 and A9 processors, others have found it reverses those effects, especially with the desktop- and server-oriented applications we use on them.
You'll still need to specify -mfloat-abi=hard -mfpu=vfpv3-d16, since this says hard float, and use the lowest common denominator VFP unit for v7, which is the Tegra's vfpv3-d16. vfpv3 implies vfpv3-d32 (16 additional registers), which is available in OMAP. But for OMAP, I'll be going with NEON for those instances anyway, which implies vfpv3.
I'd say try a different optimization level, maybe -O1. I've already run into instances with GCC 4.6 where -O2 breaks builds, mesa being one that I can think of offhand. You could even do just -Os for only size optimization. We're not flashing to NAND, so size isn't a huge consideration. Modularizing stuff that isn't onboard and is more of an accessory or peripheral, you can bring down the final uImage size as well. I did mass modularization with v5 recently, which brought uImage from 2.1MB to 1.5MB.
Arch Linux ARM exists and continues to grow through community support, please
donate today!