Fix BL2U entrypoint possible parameter corruption
authorDouglas Raillard <douglas.raillard@arm.com>
Wed, 26 Jul 2017 18:23:16 +0000 (19:23 +0100)
committerDouglas Raillard <douglas.raillard@arm.com>
Wed, 2 Aug 2017 16:16:09 +0000 (17:16 +0100)
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

index 1fa669eb6647495562525b3993794e659f96c9b4..7fb64f3e4e68728e92c9c66aad1615e5862b216e 100644 (file)
@@ -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