[U-Boot] [PATCH v3 12/26] sunxi: A64: do an RMR switch if started in AArch32 mode

Maxime Ripard maxime.ripard at free-electrons.com
Mon Dec 19 10:43:27 CET 2016


On Mon, Dec 19, 2016 at 01:50:02AM +0000, Andre Przywara wrote:
> The Allwinner A64 SoC starts execution in AArch32 mode, and both
> the boot ROM and Allwinner's boot0 keep running in this mode.
> So U-Boot gets entered in 32-bit, although we want it to run in AArch64.
> 
> By using a "magic" instruction, which happens to be an almost-NOP in
> AArch64 and a branch in AArch32, we differentiate between being
> entered in 64-bit or 32-bit mode.
> If in 64-bit mode, we proceed with the branch to reset, but in 32-bit
> mode we trigger an RMR write to bring the core into AArch64/EL3 and
> re-enter U-Boot at CONFIG_SYS_TEXT_BASE.
> This allows a 64-bit U-Boot to be both entered in 32 and 64-bit mode,
> so we can use the same start code for the SPL and the U-Boot proper.
> 
> We use the existing custom header (boot0.h) functionality, but restrict
> the existing boot0 header reservation to the non-SPL build now. A SPL
> wouldn't need such header anyway. This allows to have both options
> defined and lets us use one for the SPL and the other for U-Boot proper.
> 
> Also add arch/arm/mach-sunxi/rmr_switch.S, which contains the original
> ARM assembly code and instructions how to re-generate the encoded
> version.
> 
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>

Acked-by: Maxime Ripard <maxime.ripard at free-electrons.com>

Thanks,
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161219/6a5310c2/attachment.sig>


More information about the U-Boot mailing list