
Dear Dirk,
In message 48B5831E.3070002@googlemail.com you wrote: ...
Now, the remaining question is what to do with
+CROSS_COMPILE = arm-none-linux-gnueabi-
+PLATFORM_CPPFLAGS += -march=armv7a
we still have above.
Checking our code, it seems we need -march=armv7a. Else one file wouldn't compile any more. E.g. replacing armv7a with armv4 results in
a lot of warnings "warning: target CPU does not support interworking"
start.S compilation in our patch fails:
start.S: Assembler messages: start.S:466: Error: selected processor does not support `isb' start.S:475: Error: selected processor does not support `clz r5,r4' start.S:500: Error: selected processor does not support `isb'
Is it really necessary to use these instructions, or would it be possible to modify the code to use other (less optimal, but generally available) instructions?
Possible solutions:
a) Post patch without modifying CROSS_COMPILE, resulting in usage of arm-linux-. With this, we would locally overwrite CROSS_COMPILE at command line with toolchain we like. I'm not sure if the standard arm-linux- toolchain used for "make all" supports -march=armv7a, though.
Assume it doesn't. I think U-Boot code should make as little requirements on the toolchain as possible. Of course there emay be situations where it cannot be avoided - but if all we win is a certain level of better optimization in the code, I tend to decide in favour of less restrictive build environments.
b) Introduce something like new
ifeq ($(ARCH),cortex-arm) CROSS_COMPILE = arm-none-linux-gnueabi- endif
I don't know if this would be accepted and how to do it cleanly, though.
This is just another way to express the same problem.
c) More?
Try to modify the code such that any of the many ARM tool chains floating around can build your code.
Best regards,
Wolfgang Denk