diff options
author | David Howells <dhowells@redhat.com> | 2012-11-02 09:20:42 -0400 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2012-11-02 09:20:42 -0400 |
commit | 1ee6f5669a7eaba0e2f4e0dd0599b56eb8a9a090 (patch) | |
tree | 89436eb93201d47f625b92bb36a9f9763fae0b7e /arch/frv | |
parent | eded09ccf58ab00474ccde547dd525c75dbc28fd (diff) |
FRV: Fix the preemption handling
Fix the preemption handling in FRV code where the PREEMPT_ACTIVE value is
incorrectly loaded into the threadinfo flags rather than the threadinfo
preemption count.
Unfortunately, the code cannot be simply converted to use
preempt_schedule_irq() as is because FRV uses virtual interrupt disablement to
cut down on the cost of actually disabling interrupts and thus
local_irq_enable() doesn't actually enable interrupts.
Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Al Viro <viro@ZenIV.linux.org.uk>
Diffstat (limited to 'arch/frv')
-rw-r--r-- | arch/frv/kernel/entry.S | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/frv/kernel/entry.S b/arch/frv/kernel/entry.S index ee0beb354e4d..d64c52627961 100644 --- a/arch/frv/kernel/entry.S +++ b/arch/frv/kernel/entry.S | |||
@@ -1086,7 +1086,7 @@ __entry_preempt_need_resched: | |||
1086 | beq icc0,#1,__entry_return_direct | 1086 | beq icc0,#1,__entry_return_direct |
1087 | 1087 | ||
1088 | setlos #PREEMPT_ACTIVE,gr5 | 1088 | setlos #PREEMPT_ACTIVE,gr5 |
1089 | sti gr5,@(gr15,#TI_FLAGS) | 1089 | sti gr5,@(gr15,#TI_PRE_COUNT) |
1090 | 1090 | ||
1091 | andi gr23,#~PSR_PIL,gr23 | 1091 | andi gr23,#~PSR_PIL,gr23 |
1092 | movgs gr23,psr | 1092 | movgs gr23,psr |