
Hi,
On 13/01/17 02:19, Simon Glass wrote:
Hi Andre,
On 2 January 2017 at 04:48, Andre Przywara andre.przywara@arm.com wrote:
When compiling the SPL for the Allwinner A64 in AArch64 mode, we can't use the more compact Thumb2 encoding, which only exists for AArch32 code. This makes the SPL rather big, up to a point where any code additions or even a different compiler may easily exceed the 32KB limit that the Allwinner BROM imposes. Introduce a separate, mostly generic sun50i-a64 configuration, which defines the CPU_V7 symbol and thus will create a 32-bit binary using the memory-saving Thumb2 encoding. This should only be used for the SPL, the U-Boot proper should still be using the existing 64-bit configuration. The SPL code can switch to AArch64 if needed, so a 32-bit SPL can be combined with a 64-bit U-Boot proper to eventually launch arm64 kernels.
Signed-off-by: Andre Przywara andre.przywara@arm.com
board/sunxi/Kconfig | 14 ++++++++++++-- configs/pine64_plus_defconfig | 2 +- configs/sun50i_spl32_defconfig | 10 ++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 configs/sun50i_spl32_defconfig
Following up on the previous discussion, I take it that one on problem is that U-Boot does not support building SPL with one toolchain and U-Boot proper with another?
Yes. For the time being I have a script [1] that first configures and compiles everything with an ARM cross compiler, then repeats this with an aarch64 cross compiler. Then I combine the 32-bit SPL and the 64-bit U-Boot proper.
While we are at it: I didn't find a Makefile target to just compile the SPL (or just U-Boot proper), is that worth looking at? Or can we somehow influence Kconfig options on the command line to achieve that on that level?
Re wanting to build SPL either as 32-bit or 64-bit, could this be a Kconfig option perhaps?
Sounds like a direction worth to investigate. In the moment we have two separate defconfig files, because CPU_V7 and ARM64 are actually mutually exclusive, which is really a pain and the main reason that part wasn't merged.
Anyway, if this is what we have for now, fine. But I'd like to see at least a TODO suggesting a better solution.
So yes, the series was now merged omitting the 32-bit SPL part, which is really optional. For the time being we seem to get away with only 64-bit, but I will definitely revisit this after having handled the higher priority patches in my queue.
Cheers, Andre.