From 5c2c88b558a9dfcf5203057fa39d7a702d1bc433 Mon Sep 17 00:00:00 2001
From: Douglas Raillard <douglas.raillard@arm.com>
Date: Wed, 26 Jul 2017 19:23:16 +0100
Subject: [PATCH] Fix BL2U entrypoint possible parameter corruption

Replace the use of r12 by r10 to save the value of a parameter of
bl2u_entrypoint to pass it to bl2u_early_platform_setup at the end of
the function. r10 is a callee saved register so it will not become
corrupted by C code, whereas r12 is the The Intra-Procedure-call scratch
register potentially used by veneers. See the ARM AAPCS document (ARM
IHI 0042F).

Change-Id: I4f37e54a6b550719edb40bb24cd8f498827e2749
Signed-off-by: Douglas Raillard <douglas.raillard@arm.com>
---
 bl2u/aarch32/bl2u_entrypoint.S | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/bl2u/aarch32/bl2u_entrypoint.S b/bl2u/aarch32/bl2u_entrypoint.S
index 1fa669eb6..7fb64f3e4 100644
--- a/bl2u/aarch32/bl2u_entrypoint.S
+++ b/bl2u/aarch32/bl2u_entrypoint.S
@@ -32,7 +32,7 @@ func bl2u_entrypoint
 	 * ---------------------------------------------
 	 */
 	mov	r11, r1
-	mov	r12, r2
+	mov	r10, r2
 
 	/* ---------------------------------------------
 	 * Set the exception vector to something sane.
@@ -107,7 +107,7 @@ func bl2u_entrypoint
 	 * ---------------------------------------------
 	 */
 	mov	r0, r11
-	mov	r1, r12
+	mov	r1, r10
 	bl	bl2u_early_platform_setup
 	bl	bl2u_plat_arch_setup
 
-- 
GitLab