[U-Boot] [PATCH 6/9] sunxi: allow 32-bit builds for 64-bit SoCs
Andre Przywara
andre.przywara at arm.com
Mon Feb 25 23:32:36 UTC 2019
Hi Alex,
On 2/22/19 2:13 AM, Alexander Graf wrote:
>
>
> On 21.02.19 02:30, Andre Przywara wrote:
>> At the moment we build the SPL and U-Boot proper for the 64-bit AArch64
>> instruction set. But since the cores provide an AArch32 compatibility mode
>> and in fact the BootROM runs in 32-bit mode, it can be useful to have at
>> least the SPL run in AArch32 as well. This has two advantages:
>> - As AArch32 features the compact Thumb2 instruction encoding, we can
>> get a much smaller image size, which is a relief for our SPL.
>> - Staying in AArch32, with the MMU turned off, allows an easy return to
>> the BootROM and its FEL mode. This enables FEL booting on those SoCs.
>>
>> Introduce a Kconfig option which toggles between CONFIG_ARM64 and
>> CONFIG_CPU_V7A, to allow easy switching between the two modes. This can
>> be manually selected in menuconfig, but follow-up patches will introduce
>> a separate defconfig for that purpose.
>>
>> Signed-off-by: Andre Przywara <andre.przywara at arm.com>
>> ---
>> arch/arm/mach-sunxi/Kconfig | 13 ++++++++++---
>> 1 file changed, 10 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
>> index 74e234cded..347d737fd0 100644
>> --- a/arch/arm/mach-sunxi/Kconfig
>> +++ b/arch/arm/mach-sunxi/Kconfig
>> @@ -146,6 +146,10 @@ config SUNXI_DRAM_MAX_SIZE
>> default 0xC0000000 if MACH_SUN50I || MACH_SUN50I_H5 || MACH_SUN50I_H6
>> default 0x80000000
>>
>> +config SUNXI_ARMV8_32BIT_BUILD
>> + bool "Build 32-bit binaries for ARMv8 SoCs"
>> + default n
>> +
>> choice
>> prompt "Sunxi SoC Variant"
>> optional
>> @@ -275,7 +279,8 @@ config MACH_SUN9I
>>
>> config MACH_SUN50I
>> bool "sun50i (Allwinner A64)"
>> - select ARM64
>> + select ARM64 if !SUNXI_ARMV8_32BIT_BUILD
>
> Can't you make this "imply ARM64" instead and then just set
> ARM64=n;CPU_V7A=y in the defconfig?
Ha, that indeed sounds tempting, and actually I tried this before, but
it doesn't work. The kernel doc says that an "imply" setting can be
overwritten by a direct dependency or a visible prompt. ARM64 is not
visible (empty bool), so I figured that introducing this simple symbol
is the smallest pain to tackle this issue.
Cheers,
Andre.
>
> Alex
>
>> + select CPU_V7A if SUNXI_ARMV8_32BIT_BUILD
>> select DM_I2C
>> select PHY_SUN4I_USB
>> select SUN6I_PRCM
>> @@ -291,14 +296,16 @@ config MACH_SUN50I
>>
>> config MACH_SUN50I_H5
>> bool "sun50i (Allwinner H5)"
>> - select ARM64
>> + select ARM64 if !SUNXI_ARMV8_32BIT_BUILD
>> + select CPU_V7A if SUNXI_ARMV8_32BIT_BUILD
>> select MACH_SUNXI_H3_H5
>> select FIT
>> select SPL_LOAD_FIT
>>
>> config MACH_SUN50I_H6
>> bool "sun50i (Allwinner H6)"
>> - select ARM64
>> + select ARM64 if !SUNXI_ARMV8_32BIT_BUILD
>> + select CPU_V7A if SUNXI_ARMV8_32BIT_BUILD
>> select SUPPORT_SPL
>> select FIT
>> select SPL_LOAD_FIT
>>
More information about the U-Boot
mailing list