ARM: PSCI: use only r0 and r3 in psci_get_cpu_stack_top()
authorChen-Yu Tsai <wens@csie.org>
Tue, 7 Jun 2016 02:54:24 +0000 (10:54 +0800)
committerHans de Goede <hdegoede@redhat.com>
Mon, 20 Jun 2016 20:43:59 +0000 (22:43 +0200)
For psci_get_cpu_stack_top() to be usable in C code, it must adhere to
the ARM calling conventions. Since it could be called when the stack
is still unavailable, and the entry code to linux also expects r1 and
r2 to remain unchanged, stick to r0 and r3.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
arch/arm/cpu/armv7/psci.S

index 87c0c0b..cdd001f 100644 (file)
@@ -196,15 +196,15 @@ ENDPROC(psci_cpu_off_common)
 
 @ expects CPU ID in r0 and returns stack top in r0
 ENTRY(psci_get_cpu_stack_top)
-       mov     r5, #0x400                      @ 1kB of stack per CPU
-       mul     r0, r0, r5
-
-       ldr     r5, =psci_text_end              @ end of monitor text
-       add     r5, r5, #0x2000                 @ Skip two pages
-       lsr     r5, r5, #12                     @ Align to start of page
-       lsl     r5, r5, #12
-       sub     r5, r5, #4                      @ reserve 1 word for target PC
-       sub     r0, r5, r0                      @ here's our stack!
+       mov     r3, #0x400                      @ 1kB of stack per CPU
+       mul     r0, r0, r3
+
+       ldr     r3, =psci_text_end              @ end of monitor text
+       add     r3, r3, #0x2000                 @ Skip two pages
+       lsr     r3, r3, #12                     @ Align to start of page
+       lsl     r3, r3, #12
+       sub     r3, r3, #4                      @ reserve 1 word for target PC
+       sub     r0, r3, r0                      @ here's our stack!
 
        bx      lr
 ENDPROC(psci_get_cpu_stack_top)