
Dear Stephen Warren,
In message 4F05D596.6030900@nvidia.com you wrote:
I will accept this only temporarily. Why don't you use a working tool chain instead, or fix the one you are using?
I believe the issue isn't that the toolchain is broken, but due to the mix of multiple CPU types on Tegra, all of which run the same U-Boot binary.
When we can solve this issue with our own version of the libgcc, then we can also solve it by using a tool chain that provides the needed lingcc code.
U-Boot starts execution on the AVP CPU, an ARMv4(?) CPU. U-Boot then inits the main CPUs, ARMv7 Cortex A9s, and arranges for them to continue running U-Boot.
OK, so you have to use a tool chain which provides libgcc code for armv4t systems. What exactly is the problem here?
The libraries included in the toolchain are built for the ARMv7 CPUs,
SO this is not the right tool chain for the job. Ecactly what I said.
and hence fail to operate correctly when used by the portion of U-Boot which runs on the ARMv4 CPU, presumably due to ISA differences. IIRC, there are overrides in the U-Boot build process such that some/all of U-Boot is built so it'll run on ARMv4 OK, which is why using libgcc built by U-Boot solves this.
No, this is NOT a solution, it is a workaround for an inappropriate toolchain. If you want to build code for an armv4t system, you must use a tool chain that supports it.
Best regards,
Wolfgang Denk