m68knommu: fix syscall tracing
Fix the system call code for handling syscall tracing, so strace and gdbserver work properly. This fix originally developed by Philippe De Muyter and Stuart Hughes. Signed-off-by: Greg Ungerer <gerg@uclinux.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f909b1ef8c
commit
151941a800
|
@ -74,7 +74,8 @@ ENTRY(system_call)
|
||||||
movel %sp,%d2 /* get thread_info pointer */
|
movel %sp,%d2 /* get thread_info pointer */
|
||||||
andl #-THREAD_SIZE,%d2 /* at start of kernel stack */
|
andl #-THREAD_SIZE,%d2 /* at start of kernel stack */
|
||||||
movel %d2,%a0
|
movel %d2,%a0
|
||||||
movel %sp,%a0@(THREAD_ESP0) /* save top of frame */
|
movel %a0@,%a1 /* save top of frame */
|
||||||
|
movel %sp,%a1@(TASK_THREAD+THREAD_ESP0)
|
||||||
btst #(TIF_SYSCALL_TRACE%8),%a0@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8)
|
btst #(TIF_SYSCALL_TRACE%8),%a0@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8)
|
||||||
bnes 1f
|
bnes 1f
|
||||||
|
|
||||||
|
@ -83,6 +84,8 @@ ENTRY(system_call)
|
||||||
movel %d0,%sp@(PT_D0) /* save the return value */
|
movel %d0,%sp@(PT_D0) /* save the return value */
|
||||||
jra ret_from_exception
|
jra ret_from_exception
|
||||||
1:
|
1:
|
||||||
|
movel #-ENOSYS,%d2 /* strace needs -ENOSYS in PT_D0 */
|
||||||
|
movel %d2,PT_D0(%sp) /* on syscall entry */
|
||||||
subql #4,%sp
|
subql #4,%sp
|
||||||
SAVE_SWITCH_STACK
|
SAVE_SWITCH_STACK
|
||||||
jbsr syscall_trace
|
jbsr syscall_trace
|
||||||
|
|
Loading…
Reference in a new issue