[PATCH] ARM: V7M: Do not corrupt vector table around v7m_invalidate_l1 call
Vladimir Murzin
vladimir.murzin at arm.com
Tue Apr 18 08:53:30 EDT 2017
On 30/03/17 09:09, Vladimir Murzin wrote:
> 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: 6a8146f420be ("ARM: 8609/1: V7M: Add support for the Cortex-M7 processor")
> Signed-off-by: Vladimir Murzin <vladimir.murzin at arm.com>
> ---
> arch/arm/mm/proc-v7m.S | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mm/proc-v7m.S b/arch/arm/mm/proc-v7m.S
> index 8dea616..5049777 100644
> --- a/arch/arm/mm/proc-v7m.S
> +++ b/arch/arm/mm/proc-v7m.S
> @@ -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.
>
Ok for patch tracker?
Vladimir
More information about the linux-arm-kernel
mailing list