diff options
| -rw-r--r-- | arch/mn10300/include/asm/pci.h | 2 | ||||
| -rw-r--r-- | arch/mn10300/kernel/entry.S | 19 | ||||
| -rw-r--r-- | arch/mn10300/unit-asb2305/pci.c | 1 |
3 files changed, 9 insertions, 13 deletions
diff --git a/arch/mn10300/include/asm/pci.h b/arch/mn10300/include/asm/pci.h index 8137c25c4e15..6f31cc0f1a87 100644 --- a/arch/mn10300/include/asm/pci.h +++ b/arch/mn10300/include/asm/pci.h | |||
| @@ -103,4 +103,6 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) | |||
| 103 | return channel ? 15 : 14; | 103 | return channel ? 15 : 14; |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | #include <asm-generic/pci_iomap.h> | ||
| 107 | |||
| 106 | #endif /* _ASM_PCI_H */ | 108 | #endif /* _ASM_PCI_H */ |
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S index 68fcab8f8f6f..222152a3f751 100644 --- a/arch/mn10300/kernel/entry.S +++ b/arch/mn10300/kernel/entry.S | |||
| @@ -60,6 +60,7 @@ ENTRY(ret_from_kernel_thread) | |||
| 60 | mov (REG_D0,fp),d0 | 60 | mov (REG_D0,fp),d0 |
| 61 | mov (REG_A0,fp),a0 | 61 | mov (REG_A0,fp),a0 |
| 62 | calls (a0) | 62 | calls (a0) |
| 63 | GET_THREAD_INFO a2 # A2 must be set on return from sys_exit() | ||
| 63 | clr d0 | 64 | clr d0 |
| 64 | mov d0,(REG_D0,fp) | 65 | mov d0,(REG_D0,fp) |
| 65 | jmp syscall_exit | 66 | jmp syscall_exit |
| @@ -107,10 +108,10 @@ syscall_exit_work: | |||
| 107 | and EPSW_nSL,d0 | 108 | and EPSW_nSL,d0 |
| 108 | beq resume_kernel # returning to supervisor mode | 109 | beq resume_kernel # returning to supervisor mode |
| 109 | 110 | ||
| 110 | btst _TIF_SYSCALL_TRACE,d2 | ||
| 111 | beq work_pending | ||
| 112 | LOCAL_IRQ_ENABLE # could let syscall_trace_exit() call | 111 | LOCAL_IRQ_ENABLE # could let syscall_trace_exit() call |
| 113 | # schedule() instead | 112 | # schedule() instead |
| 113 | btst _TIF_SYSCALL_TRACE,d2 | ||
| 114 | beq work_pending | ||
| 114 | mov fp,d0 | 115 | mov fp,d0 |
| 115 | call syscall_trace_exit[],0 # do_syscall_trace(regs) | 116 | call syscall_trace_exit[],0 # do_syscall_trace(regs) |
| 116 | jmp resume_userspace | 117 | jmp resume_userspace |
| @@ -123,6 +124,7 @@ work_pending: | |||
| 123 | work_resched: | 124 | work_resched: |
| 124 | call schedule[],0 | 125 | call schedule[],0 |
| 125 | 126 | ||
| 127 | resume_userspace: | ||
| 126 | # make sure we don't miss an interrupt setting need_resched or | 128 | # make sure we don't miss an interrupt setting need_resched or |
| 127 | # sigpending between sampling and the rti | 129 | # sigpending between sampling and the rti |
| 128 | LOCAL_IRQ_DISABLE | 130 | LOCAL_IRQ_DISABLE |
| @@ -131,6 +133,8 @@ work_resched: | |||
| 131 | mov (TI_flags,a2),d2 | 133 | mov (TI_flags,a2),d2 |
| 132 | btst _TIF_WORK_MASK,d2 | 134 | btst _TIF_WORK_MASK,d2 |
| 133 | beq restore_all | 135 | beq restore_all |
| 136 | |||
| 137 | LOCAL_IRQ_ENABLE | ||
| 134 | btst _TIF_NEED_RESCHED,d2 | 138 | btst _TIF_NEED_RESCHED,d2 |
| 135 | bne work_resched | 139 | bne work_resched |
| 136 | 140 | ||
| @@ -169,17 +173,6 @@ ret_from_intr: | |||
| 169 | and EPSW_nSL,d0 | 173 | and EPSW_nSL,d0 |
| 170 | beq resume_kernel # returning to supervisor mode | 174 | beq resume_kernel # returning to supervisor mode |
| 171 | 175 | ||
| 172 | ENTRY(resume_userspace) | ||
| 173 | # make sure we don't miss an interrupt setting need_resched or | ||
| 174 | # sigpending between sampling and the rti | ||
| 175 | LOCAL_IRQ_DISABLE | ||
| 176 | |||
| 177 | # is there any work to be done on int/exception return? | ||
| 178 | mov (TI_flags,a2),d2 | ||
| 179 | btst _TIF_WORK_MASK,d2 | ||
| 180 | bne work_pending | ||
| 181 | jmp restore_all | ||
| 182 | |||
| 183 | #ifdef CONFIG_PREEMPT | 176 | #ifdef CONFIG_PREEMPT |
| 184 | ENTRY(resume_kernel) | 177 | ENTRY(resume_kernel) |
| 185 | LOCAL_IRQ_DISABLE | 178 | LOCAL_IRQ_DISABLE |
diff --git a/arch/mn10300/unit-asb2305/pci.c b/arch/mn10300/unit-asb2305/pci.c index 1adcf024bb9a..e37fac0461f3 100644 --- a/arch/mn10300/unit-asb2305/pci.c +++ b/arch/mn10300/unit-asb2305/pci.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
| 20 | #include <linux/irq.h> | 20 | #include <linux/irq.h> |
| 21 | #include <asm/io.h> | 21 | #include <asm/io.h> |
| 22 | #include <asm/irq.h> | ||
| 22 | #include "pci-asb2305.h" | 23 | #include "pci-asb2305.h" |
| 23 | 24 | ||
| 24 | unsigned int pci_probe = 1; | 25 | unsigned int pci_probe = 1; |
