diff options
author | Scott Wood <scottwood@freescale.com> | 2013-04-05 22:43:55 (GMT) |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2013-04-05 22:43:55 (GMT) |
commit | 392aeab578c624bb00787b21d7a0b27f31785f23 (patch) | |
tree | 56d38ed817345321aa2d24add000d2f147298e92 /arch/powerpc/kernel/entry_64.S | |
parent | ca1eff3e439fa5597da8cdf3f5b83ce962a0d912 (diff) | |
parent | 4d72f19861e95cf911e0336882f0958f39f5cad0 (diff) | |
download | linux-fsl-qoriq-392aeab578c624bb00787b21d7a0b27f31785f23.tar.xz |
Merge tag 'v3.8.4-rt2'
Diffstat (limited to 'arch/powerpc/kernel/entry_64.S')
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 1ae4d8d..1b1c8ae 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S @@ -592,7 +592,7 @@ _GLOBAL(ret_from_except_lite) andi. r0,r4,_TIF_USER_WORK_MASK beq restore - andi. r0,r4,_TIF_NEED_RESCHED + andi. r0,r4,_TIF_NEED_RESCHED_MASK beq 1f bl .restore_interrupts bl .schedule @@ -642,10 +642,16 @@ resume_kernel: #ifdef CONFIG_PREEMPT /* Check if we need to preempt */ + lwz r8,TI_PREEMPT(r9) andi. r0,r4,_TIF_NEED_RESCHED + bne+ check_count + + andi. r0,r4,_TIF_NEED_RESCHED_LAZY beq+ restore + lwz r8,TI_PREEMPT_LAZY(r9) + /* Check that preempt_count() == 0 and interrupts are enabled */ - lwz r8,TI_PREEMPT(r9) +check_count: cmpwi cr1,r8,0 ld r0,SOFTE(r1) cmpdi r0,0 @@ -662,7 +668,7 @@ resume_kernel: /* Re-test flags and eventually loop */ CURRENT_THREAD_INFO(r9, r1) ld r4,TI_FLAGS(r9) - andi. r0,r4,_TIF_NEED_RESCHED + andi. r0,r4,_TIF_NEED_RESCHED_MASK bne 1b /* |