diff options
Diffstat (limited to 'arch/sh/kernel/entry-common.S')
-rw-r--r-- | arch/sh/kernel/entry-common.S | 27 |
1 files changed, 6 insertions, 21 deletions
diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S index e0317ed080c3..926b2e7b11c1 100644 --- a/arch/sh/kernel/entry-common.S +++ b/arch/sh/kernel/entry-common.S | |||
@@ -176,25 +176,6 @@ work_notifysig: | |||
176 | jmp @r1 | 176 | jmp @r1 |
177 | lds r0, pr | 177 | lds r0, pr |
178 | work_resched: | 178 | work_resched: |
179 | #if defined(CONFIG_GUSA) && !defined(CONFIG_PREEMPT) | ||
180 | ! gUSA handling | ||
181 | mov.l @(OFF_SP,r15), r0 ! get user space stack pointer | ||
182 | mov r0, r1 | ||
183 | shll r0 | ||
184 | bf/s 1f | ||
185 | shll r0 | ||
186 | bf/s 1f | ||
187 | mov #OFF_PC, r0 | ||
188 | ! SP >= 0xc0000000 : gUSA mark | ||
189 | mov.l @(r0,r15), r2 ! get user space PC (program counter) | ||
190 | mov.l @(OFF_R0,r15), r3 ! end point | ||
191 | cmp/hs r3, r2 ! r2 >= r3? | ||
192 | bt 1f | ||
193 | add r3, r1 ! rewind point #2 | ||
194 | mov.l r1, @(r0,r15) ! reset PC to rewind point #2 | ||
195 | ! | ||
196 | 1: | ||
197 | #endif | ||
198 | mov.l 1f, r1 | 179 | mov.l 1f, r1 |
199 | jsr @r1 ! schedule | 180 | jsr @r1 ! schedule |
200 | nop | 181 | nop |
@@ -224,7 +205,7 @@ work_resched: | |||
224 | syscall_exit_work: | 205 | syscall_exit_work: |
225 | ! r0: current_thread_info->flags | 206 | ! r0: current_thread_info->flags |
226 | ! r8: current_thread_info | 207 | ! r8: current_thread_info |
227 | tst #_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP, r0 | 208 | tst #_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP | _TIF_SYSCALL_AUDIT, r0 |
228 | bt/s work_pending | 209 | bt/s work_pending |
229 | tst #_TIF_NEED_RESCHED, r0 | 210 | tst #_TIF_NEED_RESCHED, r0 |
230 | #ifdef CONFIG_TRACE_IRQFLAGS | 211 | #ifdef CONFIG_TRACE_IRQFLAGS |
@@ -234,6 +215,8 @@ syscall_exit_work: | |||
234 | #endif | 215 | #endif |
235 | sti | 216 | sti |
236 | ! XXX setup arguments... | 217 | ! XXX setup arguments... |
218 | mov r15, r4 | ||
219 | mov #1, r5 | ||
237 | mov.l 4f, r0 ! do_syscall_trace | 220 | mov.l 4f, r0 ! do_syscall_trace |
238 | jsr @r0 | 221 | jsr @r0 |
239 | nop | 222 | nop |
@@ -244,6 +227,8 @@ syscall_exit_work: | |||
244 | syscall_trace_entry: | 227 | syscall_trace_entry: |
245 | ! Yes it is traced. | 228 | ! Yes it is traced. |
246 | ! XXX setup arguments... | 229 | ! XXX setup arguments... |
230 | mov r15, r4 | ||
231 | mov #0, r5 | ||
247 | mov.l 4f, r11 ! Call do_syscall_trace which notifies | 232 | mov.l 4f, r11 ! Call do_syscall_trace which notifies |
248 | jsr @r11 ! superior (will chomp R[0-7]) | 233 | jsr @r11 ! superior (will chomp R[0-7]) |
249 | nop | 234 | nop |
@@ -366,7 +351,7 @@ ENTRY(system_call) | |||
366 | ! | 351 | ! |
367 | get_current_thread_info r8, r10 | 352 | get_current_thread_info r8, r10 |
368 | mov.l @(TI_FLAGS,r8), r8 | 353 | mov.l @(TI_FLAGS,r8), r8 |
369 | mov #_TIF_SYSCALL_TRACE, r10 | 354 | mov #(_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT), r10 |
370 | tst r10, r8 | 355 | tst r10, r8 |
371 | bf syscall_trace_entry | 356 | bf syscall_trace_entry |
372 | ! | 357 | ! |