aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68knommu/kernel/entry.S
diff options
context:
space:
mode:
authorWilson Callan <wcallan@savantav.com>2008-04-30 22:16:28 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-05-01 11:08:35 -0400
commit2d7f16d6d12682c41fb287ea8261df8e4679f638 (patch)
treec9e8bce26b85ec9f4790e0f18baaa24c8f6d8f38 /arch/m68knommu/kernel/entry.S
parent10ed2195bb8aef4358223f07bb00e8cf9b278bf2 (diff)
m68knommu: fix signal handling return path
The return from software signal handling pushes code on the stack that system calls to the kernels cleanup code. This is borrowed directly from the m68k linux signal handler. The rt signal case is not quite right for the restricted instruction set of the ColdFire parts. And neither the normal signal case or rt signal case properly flushes/pushes the appropriate cache lines. Rework the return path to just call back through some code fragments in the kernel proper (with no MMU in the way we can do this). No cache problems, and less code overall. Original patch submitted by Wilson Callan <wcallan@savantav.com> Greg fixed the rt signal return path to use the proper system call Signed-off-by: Greg Ungerer <gerg@uclinux.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/m68knommu/kernel/entry.S')
-rw-r--r--arch/m68knommu/kernel/entry.S9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/m68knommu/kernel/entry.S b/arch/m68knommu/kernel/entry.S
index 1e7ea6a3e1a1..f4782d2dce8f 100644
--- a/arch/m68knommu/kernel/entry.S
+++ b/arch/m68knommu/kernel/entry.S
@@ -32,6 +32,7 @@
32#include <asm/segment.h> 32#include <asm/segment.h>
33#include <asm/asm-offsets.h> 33#include <asm/asm-offsets.h>
34#include <asm/entry.h> 34#include <asm/entry.h>
35#include <asm/unistd.h>
35 36
36.text 37.text
37 38
@@ -140,3 +141,11 @@ ENTRY(sys_rt_sigreturn)
140 RESTORE_SWITCH_STACK 141 RESTORE_SWITCH_STACK
141 rts 142 rts
142 143
144ENTRY(ret_from_user_signal)
145 moveq #__NR_sigreturn,%d0
146 trap #0
147
148ENTRY(ret_from_user_rt_signal)
149 move #__NR_rt_sigreturn,%d0
150 trap #0
151