aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/entry.S
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-10-13 03:22:53 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-10-14 23:06:52 -0400
commitee1e17c69eb3c843d283eb3fbed1616ed9a122eb (patch)
tree18c4beae1331663fadec51f914f2ef50ed1be7fb /arch/blackfin/kernel/entry.S
parentLinux 3.7-rc1 (diff)
downloadlinux-dev-ee1e17c69eb3c843d283eb3fbed1616ed9a122eb.tar.xz
linux-dev-ee1e17c69eb3c843d283eb3fbed1616ed9a122eb.zip
blackfin: convert kernel_thread() and kernel_execve() to generic ones
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to '')
-rw-r--r--arch/blackfin/kernel/entry.S22
1 files changed, 8 insertions, 14 deletions
diff --git a/arch/blackfin/kernel/entry.S b/arch/blackfin/kernel/entry.S
index f33792cc1a0d..78f4f637e155 100644
--- a/arch/blackfin/kernel/entry.S
+++ b/arch/blackfin/kernel/entry.S
@@ -46,22 +46,16 @@ ENTRY(_ret_from_fork)
SP += -12;
pseudo_long_call _schedule_tail, p5;
SP += 12;
- r0 = [sp + PT_IPEND];
- cc = bittst(r0,1);
- if cc jump .Lin_kernel;
+ p1 = [sp++];
+ r0 = [sp++];
+ cc = p1 == 0;
+ if cc jump .Lfork;
+ sp += -12;
+ call (p1);
+ sp += 12;
+.Lfork:
RESTORE_CONTEXT
rti;
-.Lin_kernel:
- bitclr(r0,1);
- [sp + PT_IPEND] = r0;
- /* do a 'fake' RTI by jumping to [RETI]
- * to avoid clearing supervisor mode in child
- */
- r0 = [sp + PT_PC];
- [sp + PT_P0] = r0;
-
- RESTORE_ALL_SYS
- jump (p0);
ENDPROC(_ret_from_fork)
ENTRY(_sys_vfork)