diff options
author | Akira Takeuchi <takeuchi.akr@jp.panasonic.com> | 2013-09-10 17:20:05 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-10 14:54:59 -0700 |
commit | 3da06ed7366f6749ac333d1c051131c1a550755f (patch) | |
tree | 03fe3b9a13322bdb82a12e057244bedf84083b9e /arch/mn10300/kernel | |
parent | 31f7c3a688f75bceaf2fd009efc489659ad6aa61 (diff) | |
download | linux-stable-3da06ed7366f6749ac333d1c051131c1a550755f.tar.gz linux-stable-3da06ed7366f6749ac333d1c051131c1a550755f.tar.bz2 linux-stable-3da06ed7366f6749ac333d1c051131c1a550755f.zip |
mn10300: Fix crash just after starting userspace on !CONFIG_PREEMPT
The mn10300 kernel crashes just after starting userspace programs, if
CONFIG_PREEMPT is disabled:
Freeing unused kernel memory: 96K (90286000 - 9029e000)
MISALIGN: 97c33ff9: unsupported instruction f
MISALIGN: 97c33ff9: unsupported instruction f
MISALIGN: 97c33ff9: unsupported instruction f
:
This fixes the problem that was introduced by commit d17fc238ac14
("MN10300: Enable IRQs more in system call exit work path").
Signed-off-by: Akira Takeuchi <takeuchi.akr@jp.panasonic.com>
Signed-off-by: Kiyoshi Owada <owada.kiyoshi@jp.panasonic.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/mn10300/kernel')
-rw-r--r-- | arch/mn10300/kernel/entry.S | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S index 222152a3f751..177d61de51c9 100644 --- a/arch/mn10300/kernel/entry.S +++ b/arch/mn10300/kernel/entry.S @@ -171,10 +171,10 @@ ret_from_intr: mov (REG_EPSW,fp),d0 # need to deliver signals before # returning to userspace and EPSW_nSL,d0 - beq resume_kernel # returning to supervisor mode + bne resume_userspace # returning to userspace #ifdef CONFIG_PREEMPT -ENTRY(resume_kernel) +resume_kernel: LOCAL_IRQ_DISABLE mov (TI_preempt_count,a2),d0 # non-zero preempt_count ? cmp 0,d0 @@ -189,6 +189,8 @@ need_resched: bne restore_all call preempt_schedule_irq[],0 jmp need_resched +#else + jmp resume_kernel #endif |