Santosh Shilimkar <[email protected]> writes:
> OMAP4 sleep entry code even though itself don't use many CPU registers
> makes call to the v7_flush_dcache_all() which uses them. Since
> v7_flush_dcache_all() doesn't make use of stack, the caller must take
> care of the stack frame. Otherwise it will lead to corrupted stack frame.
>
> Fix it by saving used registers.
>
> Reported-by: Grygorii Strashko <[email protected]>
> Signed-off-by: Santosh Shilimkar <[email protected]>
> Cc: Kevin Hilman <[email protected]>
Please add a brief comment in the code as well explaining why the
additional registers are saved/restored.
After that, I'll add to my PM fixes queue for v3.6-rc.
Thanks for the fix.
Kevin
> ---
> arch/arm/mach-omap2/sleep44xx.S | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/sleep44xx.S b/arch/arm/mach-omap2/sleep44xx.S
> index 9f6b83d..b5823e9 100644
> --- a/arch/arm/mach-omap2/sleep44xx.S
> +++ b/arch/arm/mach-omap2/sleep44xx.S
> @@ -58,7 +58,7 @@ ppa_por_params:
> * CPU failed to transition to targeted OFF/DORMANT state.
> */
> ENTRY(omap4_finish_suspend)
> - stmfd sp!, {lr}
> + stmfd sp!, {r4-r12, lr}
> cmp r0, #0x0
> beq do_WFI @ No lowpower state, jump to WFI
>
> @@ -226,7 +226,7 @@ scu_gp_clear:
> skip_scu_gp_clear:
> isb
> dsb
> - ldmfd sp!, {pc}
> + ldmfd sp!, {r4-r12, pc}
> ENDPROC(omap4_finish_suspend)
>
> /*
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html