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
This commit is contained in:
commit
dcdbe33add
|
@ -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)
|
||||||
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:
|
||||||
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:
|
||||||
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:
|
||||||
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:
|
||||||
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 @@
|
||||||
#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;
|
||||||
|
|
Loading…
Reference in a new issue