aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/entry-common.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/kernel/entry-common.S')
-rw-r--r--arch/sh/kernel/entry-common.S27
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
869:
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
97ENTRY(resume_kernel) 88ENTRY(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
2181:
219 TRACE_IRQS_OFF
2202:
221 mov.l 3f, r0
217 jmp @r0 222 jmp @r0
218 nop 223 nop
219 224
220 .align 2 225 .align 2
2211: .long restore_all 2263: .long restore_all
222 227
223 .align 2 228 .align 2
224syscall_badsys: ! Bad syscall number 229syscall_badsys: ! Bad syscall number