From 1f0d6ad924aff27ecc80b50f62ee891fdc982540 Mon Sep 17 00:00:00 2001 From: Nicolas Pitre Date: Tue, 22 Mar 2011 19:09:14 +0100 Subject: [PATCH] --- yaml --- r: 243437 b: refs/heads/master c: fb4fe87d79511398a68000d2100c825f54b51652 h: refs/heads/master i: 243435: 5646674a2f7b2083e4a02dc63b8945d89e0c53ec v: v3 --- [refs] | 2 +- trunk/arch/arm/kernel/sleep.S | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 5018f1b3607a..29882584474f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0efc48ecaf0f84430524a1759ab9c60aad8eab1e +refs/heads/master: fb4fe87d79511398a68000d2100c825f54b51652 diff --git a/trunk/arch/arm/kernel/sleep.S b/trunk/arch/arm/kernel/sleep.S index bfad698a02e7..6398ead9d1c0 100644 --- a/trunk/arch/arm/kernel/sleep.S +++ b/trunk/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)