ia64: enable HAVE_COPY_THREAD_TLS, switch to kernel_clone_args
[sfrench/cifs-2.6.git] / arch / ia64 / kernel / entry.S
index c5efac285bc34adb9b378c930becc6f81ef499d5..e98e3dafffd8a34b32fd3e644fdb340760873302 100644 (file)
@@ -112,19 +112,16 @@ GLOBAL_ENTRY(sys_clone2)
        .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(8)
        alloc r16=ar.pfs,8,2,6,0
        DO_SAVE_SWITCH_STACK
-       adds r2=PT(R16)+IA64_SWITCH_STACK_SIZE+16,sp
        mov loc0=rp
-       mov loc1=r16                            // save ar.pfs across do_fork
+       mov loc1=r16                             // save ar.pfs across ia64_clone
        .body
+       mov out0=in0
        mov out1=in1
        mov out2=in2
-       tbit.nz p6,p0=in0,CLONE_SETTLS_BIT
-       mov out3=in3    // parent_tidptr: valid only w/CLONE_PARENT_SETTID
-       ;;
-(p6)   st8 [r2]=in5                            // store TLS in r16 for copy_thread()
-       mov out4=in4    // child_tidptr:  valid only w/CLONE_CHILD_SETTID or CLONE_CHILD_CLEARTID
-       mov out0=in0                            // out0 = clone_flags
-       br.call.sptk.many rp=do_fork
+       mov out3=in3
+       mov out4=in4
+       mov out5=in5
+       br.call.sptk.many rp=ia64_clone
 .ret1: .restore sp
        adds sp=IA64_SWITCH_STACK_SIZE,sp       // pop the switch stack
        mov ar.pfs=loc1
@@ -143,19 +140,16 @@ GLOBAL_ENTRY(sys_clone)
        .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(8)
        alloc r16=ar.pfs,8,2,6,0
        DO_SAVE_SWITCH_STACK
-       adds r2=PT(R16)+IA64_SWITCH_STACK_SIZE+16,sp
        mov loc0=rp
-       mov loc1=r16                            // save ar.pfs across do_fork
+       mov loc1=r16                             // save ar.pfs across ia64_clone
        .body
+       mov out0=in0
        mov out1=in1
        mov out2=16                             // stacksize (compensates for 16-byte scratch area)
-       tbit.nz p6,p0=in0,CLONE_SETTLS_BIT
-       mov out3=in2    // parent_tidptr: valid only w/CLONE_PARENT_SETTID
-       ;;
-(p6)   st8 [r2]=in4                            // store TLS in r13 (tp)
-       mov out4=in3    // child_tidptr:  valid only w/CLONE_CHILD_SETTID or CLONE_CHILD_CLEARTID
-       mov out0=in0                            // out0 = clone_flags
-       br.call.sptk.many rp=do_fork
+       mov out3=in3
+       mov out4=in4
+       mov out5=in5
+       br.call.sptk.many rp=ia64_clone
 .ret2: .restore sp
        adds sp=IA64_SWITCH_STACK_SIZE,sp       // pop the switch stack
        mov ar.pfs=loc1
@@ -590,7 +584,7 @@ GLOBAL_ENTRY(ia64_ret_from_clone)
        nop.i 0
        /*
         * We need to call schedule_tail() to complete the scheduling process.
-        * Called by ia64_switch_to() after do_fork()->copy_thread().  r8 contains the
+        * Called by ia64_switch_to() after ia64_clone()->copy_thread().  r8 contains the
         * address of the previously executing task.
         */
        br.call.sptk.many rp=ia64_invoke_schedule_tail