Browse Source

ARM: PSCI: save and restore clobbered registers in v7_flush_dcache_all

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>
Chen-Yu Tsai 9 years ago
parent
commit
778dc5f43e
1 changed files with 2 additions and 0 deletions
  1. 2 0
      arch/arm/cpu/armv7/psci.S

+ 2 - 0
arch/arm/cpu/armv7/psci.S

@@ -110,6 +110,7 @@ ENDPROC(psci_get_cpu_id)
 
 
 /* Imported from Linux kernel */
 /* Imported from Linux kernel */
 LENTRY(v7_flush_dcache_all)
 LENTRY(v7_flush_dcache_all)
+	stmfd	sp!, {r4-r5, r7, r9-r11, lr}
 	dmb					@ ensure ordering with previous memory accesses
 	dmb					@ ensure ordering with previous memory accesses
 	mrc	p15, 1, r0, c0, c0, 1		@ read clidr
 	mrc	p15, 1, r0, c0, c0, 1		@ read clidr
 	ands	r3, r0, #0x7000000		@ extract loc from clidr
 	ands	r3, r0, #0x7000000		@ extract loc from clidr
@@ -153,6 +154,7 @@ finished:
 	mcr	p15, 2, r10, c0, c0, 0		@ select current cache level in cssr
 	mcr	p15, 2, r10, c0, c0, 0		@ select current cache level in cssr
 	dsb	st
 	dsb	st
 	isb
 	isb
+	ldmfd	sp!, {r4-r5, r7, r9-r11, lr}
 	bx	lr
 	bx	lr
 ENDPROC(v7_flush_dcache_all)
 ENDPROC(v7_flush_dcache_all)