Blackfin arch: Fix random crash issue found by Michael.
[safe/jmp/linux-2.6] / arch / blackfin / kernel / entry.S
index 5880b27..65f4e67 100644 (file)
@@ -54,14 +54,18 @@ ENTRY(_ret_from_fork)
        [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
-       p0 = reti;
        jump (p0);
+ENDPROC(_ret_from_fork)
 
 ENTRY(_sys_fork)
        r0 = -EINVAL;
        rts;
+ENDPROC(_sys_fork)
 
 ENTRY(_sys_vfork)
        r0 = sp;
@@ -72,6 +76,7 @@ ENTRY(_sys_vfork)
        SP += 12;
        rets = [sp++];
        rts;
+ENDPROC(_sys_vfork)
 
 ENTRY(_sys_clone)
        r0 = sp;
@@ -82,6 +87,7 @@ ENTRY(_sys_clone)
        SP += 12;
        rets = [sp++];
        rts;
+ENDPROC(_sys_clone)
 
 ENTRY(_sys_rt_sigreturn)
        r0 = sp;
@@ -92,3 +98,4 @@ ENTRY(_sys_rt_sigreturn)
        SP += 12;
        rets = [sp++];
        rts;
+ENDPROC(_sys_rt_sigreturn)