From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Date: Mon, 19 Dec 2016 10:43:27 +0100 Subject: [U-Boot] [PATCH v3 12/26] sunxi: A64: do an RMR switch if started in AArch32 mode In-Reply-To: <1482112216-12983-13-git-send-email-andre.przywara@arm.com> References: <1482112216-12983-1-git-send-email-andre.przywara@arm.com> <1482112216-12983-13-git-send-email-andre.przywara@arm.com> Message-ID: <20161219094327.il37k5ag3rd55l73@lukather> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 Acked-by: Maxime Ripard 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: