[PATCH] ARM: kernel/sleep.S: fix Thumb2 compilation issues
Dave Martin
dave.martin at linaro.org
Tue Mar 22 08:52:17 EDT 2011
On Fri, Mar 18, 2011 at 11:00:02PM -0400, Nicolas Pitre wrote:
>
> Signed-off-by: Nicolas Pitre <nicolas.pitre at linaro.org>
>
> diff --git a/arch/arm/kernel/sleep.S b/arch/arm/kernel/sleep.S
> index bfad698..6398ead 100644
> --- a/arch/arm/kernel/sleep.S
> +++ b/arch/arm/kernel/sleep.S
> @@ -119,11 +119,19 @@ ENTRY(cpu_resume)
> #else
> ldr r0, sleep_save_sp @ stack phys addr
> #endif
> - msr cpsr_c, #PSR_I_BIT | PSR_F_BIT | SVC_MODE @ set SVC, irqs off
> + setmode PSR_I_BIT | PSR_F_BIT | SVC_MODE, r1 @ set SVC, irqs off
> #ifdef MULTI_CPU
> - ldmia r0!, {r1, sp, lr, pc} @ load v:p, stack, return fn, resume fn
> + @ load v:p, stack, return fn, resume fn
> + ARM( ldmia r0!, {r1, sp, lr, pc} )
> +THUMB( ldmia r0!, {r1, r2, r3, r4} )
> +THUMB( mov sp, r2 )
> +THUMB( mov lr, r3 )
> +THUMB( bx r4 )
> #else
> - ldmia r0!, {r1, sp, lr} @ load v:p, stack, return fn
> + @ load v:p, stack, return fn
> + ARM( ldmia r0!, {r1, sp, lr} )
> +THUMB( ldmia r0!, {r1, r2, lr} )
> +THUMB( mov sp, r2 )
> b cpu_do_resume
> #endif
> ENDPROC(cpu_resume)
As far as I can determine from the context, r1-r4 are not live at
this point, so the suggested change looks sound.
Reviewed-by: Dave Martin <dave.martin at linaro.org>
I haven't watched the generic suspend/resume discussion too
closely; how would I go about testing this?
Cheers
---Dave
More information about the linux-arm-kernel
mailing list