Hexagon: fix up int enable/disable at ret_from_fork
authorRichard Kuo <rkuo@codeaurora.org>
Tue, 23 Oct 2012 23:26:01 +0000 (18:26 -0500)
committerRichard Kuo <rkuo@codeaurora.org>
Wed, 1 May 2013 00:40:26 +0000 (19:40 -0500)
Check return coming out of check_work_pending, and if copy_thread
passed us a function in r24, call it.  Based on feedback from Al
Viro.

Signed-off-by: Richard Kuo <rkuo@codeaurora.org>
arch/hexagon/kernel/vm_entry.S

index 9add73ab57d873be21cd261c6f70aa3d2cb7466d..34470911d4a7098a5d30fa70f4fb3d99d0af0c68 100644 (file)
@@ -374,11 +374,20 @@ _K_enter_debug:
        .globl ret_from_fork
 ret_from_fork:
        {
-               call schedule_tail;
+               call schedule_tail
                R16.H = #HI(do_work_pending);
        }
        {
+               P0 = cmp.eq(R24, #0);
                R16.L = #LO(do_work_pending);
                R0 = #VM_INT_DISABLE;
-               jump check_work_pending;
+       }
+       if P0 jump check_work_pending
+       {
+               R0 = R25;
+               callr R24
+       }
+       {
+               jump check_work_pending
+               R0 = #VM_INT_DISABLE;
        }