Commit dcdbe33a authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'mn10300' (mn10300 fixes from David Howells)

Merge mn10300 fixes from David Howells.

* emailed patches from David Howells <dhowells@redhat.com>:
  MN10300: Need pci_iomap() and __pci_ioport_map() defining
  MN10300: ASB2305's PCI code needs the definition of XIRQ1
  MN10300: Enable IRQs more in system call exit work path
  MN10300: Fix ret_from_kernel_thread
parents 7b55eab8 1aeeac7a
...@@ -103,4 +103,6 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) ...@@ -103,4 +103,6 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
return channel ? 15 : 14; return channel ? 15 : 14;
} }
#include <asm-generic/pci_iomap.h>
#endif /* _ASM_PCI_H */ #endif /* _ASM_PCI_H */
...@@ -60,6 +60,7 @@ ENTRY(ret_from_kernel_thread) ...@@ -60,6 +60,7 @@ ENTRY(ret_from_kernel_thread)
mov (REG_D0,fp),d0 mov (REG_D0,fp),d0
mov (REG_A0,fp),a0 mov (REG_A0,fp),a0
calls (a0) calls (a0)
GET_THREAD_INFO a2 # A2 must be set on return from sys_exit()
clr d0 clr d0
mov d0,(REG_D0,fp) mov d0,(REG_D0,fp)
jmp syscall_exit jmp syscall_exit
...@@ -107,10 +108,10 @@ syscall_exit_work: ...@@ -107,10 +108,10 @@ syscall_exit_work:
and EPSW_nSL,d0 and EPSW_nSL,d0
beq resume_kernel # returning to supervisor mode beq resume_kernel # returning to supervisor mode
btst _TIF_SYSCALL_TRACE,d2
beq work_pending
LOCAL_IRQ_ENABLE # could let syscall_trace_exit() call LOCAL_IRQ_ENABLE # could let syscall_trace_exit() call
# schedule() instead # schedule() instead
btst _TIF_SYSCALL_TRACE,d2
beq work_pending
mov fp,d0 mov fp,d0
call syscall_trace_exit[],0 # do_syscall_trace(regs) call syscall_trace_exit[],0 # do_syscall_trace(regs)
jmp resume_userspace jmp resume_userspace
...@@ -123,6 +124,7 @@ work_pending: ...@@ -123,6 +124,7 @@ work_pending:
work_resched: work_resched:
call schedule[],0 call schedule[],0
resume_userspace:
# make sure we don't miss an interrupt setting need_resched or # make sure we don't miss an interrupt setting need_resched or
# sigpending between sampling and the rti # sigpending between sampling and the rti
LOCAL_IRQ_DISABLE LOCAL_IRQ_DISABLE
...@@ -131,6 +133,8 @@ work_resched: ...@@ -131,6 +133,8 @@ work_resched:
mov (TI_flags,a2),d2 mov (TI_flags,a2),d2
btst _TIF_WORK_MASK,d2 btst _TIF_WORK_MASK,d2
beq restore_all beq restore_all
LOCAL_IRQ_ENABLE
btst _TIF_NEED_RESCHED,d2 btst _TIF_NEED_RESCHED,d2
bne work_resched bne work_resched
...@@ -169,17 +173,6 @@ ret_from_intr: ...@@ -169,17 +173,6 @@ ret_from_intr:
and EPSW_nSL,d0 and EPSW_nSL,d0
beq resume_kernel # returning to supervisor mode beq resume_kernel # returning to supervisor mode
ENTRY(resume_userspace)
# make sure we don't miss an interrupt setting need_resched or
# sigpending between sampling and the rti
LOCAL_IRQ_DISABLE
# is there any work to be done on int/exception return?
mov (TI_flags,a2),d2
btst _TIF_WORK_MASK,d2
bne work_pending
jmp restore_all
#ifdef CONFIG_PREEMPT #ifdef CONFIG_PREEMPT
ENTRY(resume_kernel) ENTRY(resume_kernel)
LOCAL_IRQ_DISABLE LOCAL_IRQ_DISABLE
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/irq.h>
#include "pci-asb2305.h" #include "pci-asb2305.h"
unsigned int pci_probe = 1; unsigned int pci_probe = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment