Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d805949 authored by Vladimir Murzin's avatar Vladimir Murzin Committed by Russell King
Browse files

ARM: 8670/1: V7M: Do not corrupt vector table around v7m_invalidate_l1 call



We save/restore registers around v7m_invalidate_l1 to address pointed
by r12, which is vector table, so the first eight entries are
overwritten with a garbage. We already have stack setup at that stage,
so use it to save/restore register.

Fixes: 6a8146f4 ("ARM: 8609/1: V7M: Add support for the Cortex-M7 processor")
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarVladimir Murzin <vladimir.murzin@arm.com>
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
parent 3872fe83
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -147,10 +147,10 @@ __v7m_setup_cont:

	@ Configure caches (if implemented)
	teq     r8, #0
	stmneia	r12, {r0-r6, lr}	@ v7m_invalidate_l1 touches r0-r6
	stmneia	sp, {r0-r6, lr}		@ v7m_invalidate_l1 touches r0-r6
	blne	v7m_invalidate_l1
	teq     r8, #0			@ re-evalutae condition
	ldmneia	r12, {r0-r6, lr}
	ldmneia	sp, {r0-r6, lr}

	@ Configure the System Control Register to ensure 8-byte stack alignment
	@ Note the STKALIGN bit is either RW or RAO.