summaryrefslogtreecommitdiffstats
path: root/arch/m68k
diff options
context:
space:
mode:
authorGreg Ungerer <gerg@uclinux.org>2012-01-16 16:46:04 +1000
committerGreg Ungerer <gerg@uclinux.org>2012-02-07 11:03:53 +1000
commit8b3262c00d6feccdccd6567d27687ae4b64c54bd (patch)
treea9f0f6aaa948722b6bb5aa121a550e5e6d6bd0b3 /arch/m68k
parent62aa2b537c6f5957afd98e29f96897419ed5ebab (diff)
downloadop-kernel-dev-8b3262c00d6feccdccd6567d27687ae4b64c54bd.zip
op-kernel-dev-8b3262c00d6feccdccd6567d27687ae4b64c54bd.tar.gz
m68knommu: fix syscall tracing stuck process
The return path from an exception was checking too many bits in the thread_info->flags, and getting stuck calling do_signal(). There was no work to do, we should only be checking the low 8 bits (as per comments and definitions in arch/m68k/include/asm/thread_info.h). This fixes the stuck process problem when using strace. Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Diffstat (limited to 'arch/m68k')
-rw-r--r--arch/m68k/platform/coldfire/entry.S4
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/m68k/platform/coldfire/entry.S b/arch/m68k/platform/coldfire/entry.S
index 863889f..281e38c 100644
--- a/arch/m68k/platform/coldfire/entry.S
+++ b/arch/m68k/platform/coldfire/entry.S
@@ -136,7 +136,7 @@ Luser_return:
movel %sp,%d1 /* get thread_info pointer */
andl #-THREAD_SIZE,%d1 /* at base of kernel stack */
movel %d1,%a0
- movel %a0@(TINFO_FLAGS),%d1 /* get thread_info->flags */
+ moveb %a0@(TINFO_FLAGS+3),%d1 /* thread_info->flags (low 8 bits) */
jne Lwork_to_do /* still work to do */
Lreturn:
@@ -148,8 +148,6 @@ Lwork_to_do:
btst #TIF_NEED_RESCHED,%d1
jne reschedule
- /* GERG: do we need something here for TRACEing?? */
-
Lsignal_return:
subql #4,%sp /* dummy return address */
SAVE_SWITCH_STACK
OpenPOWER on IntegriCloud