diff options
Diffstat (limited to 'arch/sh/kernel/entry-common.S')
-rw-r--r-- | arch/sh/kernel/entry-common.S | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S index e63178fefb9b..700477601c6f 100644 --- a/arch/sh/kernel/entry-common.S +++ b/arch/sh/kernel/entry-common.S | |||
@@ -77,15 +77,6 @@ ENTRY(ret_from_irq) | |||
77 | ! | 77 | ! |
78 | mov #OFF_SR, r0 | 78 | mov #OFF_SR, r0 |
79 | mov.l @(r0,r15), r0 ! get status register | 79 | mov.l @(r0,r15), r0 ! get status register |
80 | |||
81 | shlr2 r0 | ||
82 | and #0x3c, r0 | ||
83 | cmp/eq #0x3c, r0 | ||
84 | bt 9f | ||
85 | TRACE_IRQS_ON | ||
86 | 9: | ||
87 | mov #OFF_SR, r0 | ||
88 | mov.l @(r0,r15), r0 ! get status register | ||
89 | shll r0 | 80 | shll r0 |
90 | shll r0 ! kernel space? | 81 | shll r0 ! kernel space? |
91 | get_current_thread_info r8, r0 | 82 | get_current_thread_info r8, r0 |
@@ -96,6 +87,7 @@ ENTRY(ret_from_irq) | |||
96 | nop | 87 | nop |
97 | ENTRY(resume_kernel) | 88 | ENTRY(resume_kernel) |
98 | cli | 89 | cli |
90 | TRACE_IRQS_OFF | ||
99 | mov.l @(TI_PRE_COUNT,r8), r0 ! current_thread_info->preempt_count | 91 | mov.l @(TI_PRE_COUNT,r8), r0 ! current_thread_info->preempt_count |
100 | tst r0, r0 | 92 | tst r0, r0 |
101 | bf noresched | 93 | bf noresched |
@@ -213,12 +205,25 @@ syscall_trace_entry: | |||
213 | mov.l r0, @(OFF_R0,r15) ! Return value | 205 | mov.l r0, @(OFF_R0,r15) ! Return value |
214 | 206 | ||
215 | __restore_all: | 207 | __restore_all: |
216 | mov.l 1f, r0 | 208 | mov #OFF_SR, r0 |
209 | mov.l @(r0,r15), r0 ! get status register | ||
210 | |||
211 | shlr2 r0 | ||
212 | and #0x3c, r0 | ||
213 | cmp/eq #0x3c, r0 | ||
214 | bt 1f | ||
215 | TRACE_IRQS_ON | ||
216 | bra 2f | ||
217 | nop | ||
218 | 1: | ||
219 | TRACE_IRQS_OFF | ||
220 | 2: | ||
221 | mov.l 3f, r0 | ||
217 | jmp @r0 | 222 | jmp @r0 |
218 | nop | 223 | nop |
219 | 224 | ||
220 | .align 2 | 225 | .align 2 |
221 | 1: .long restore_all | 226 | 3: .long restore_all |
222 | 227 | ||
223 | .align 2 | 228 | .align 2 |
224 | syscall_badsys: ! Bad syscall number | 229 | syscall_badsys: ! Bad syscall number |