• Ezequiel Garcia's avatar
    ARM: 8451/1: v7-M: Set an early stack for __v7m_setup · a4124e72
    Ezequiel Garcia authored
    On ARM v7-M, when PROCINFO_INITFUNC (__v7m_setup) is called,
    a stack is needed before calling the supervisor call (SVC),
    which is used by the supervisor call to save the context.
    
    Currently, __v7m_setup() prepares a temporary stack in the .text.init
    section, which is is broken if the kernel is executing directly from
    read-only memory.
    
    In particular, this is the case for LPC43xx, which allows
    to execute the kernel in-place from a serial flash through its SPIFI
    controller.
    
    This commit fixes the issue by seting an early stack to its usual location.
    
    Also, __v7m_setup() is currently saving and restoring the previous
    stack. That was bogus, because there's no stack previously set,
    so this commit removes it.
    Acked-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: default avatarEzequiel Garcia <ezequiel@vanguardiasur.com.ar>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    a4124e72
proc-v7m.S 3.81 KB