1*c9945492SAndroid Build Coastguard Worker/* int clone(fn, stack, flags, arg, ptid, tls, ctid) 2*c9945492SAndroid Build Coastguard Worker * r3 r4 r5 r6 sp+0 sp+4 sp+8 3*c9945492SAndroid Build Coastguard Worker * sys_clone(flags, stack, ptid, ctid, tls) 4*c9945492SAndroid Build Coastguard Worker */ 5*c9945492SAndroid Build Coastguard Worker.global __clone 6*c9945492SAndroid Build Coastguard Worker.hidden __clone 7*c9945492SAndroid Build Coastguard Worker.type __clone,@function 8*c9945492SAndroid Build Coastguard Worker__clone: 9*c9945492SAndroid Build Coastguard Worker l.addi r4, r4, -8 10*c9945492SAndroid Build Coastguard Worker l.sw 0(r4), r3 11*c9945492SAndroid Build Coastguard Worker l.sw 4(r4), r6 12*c9945492SAndroid Build Coastguard Worker /* (fn, st, fl, ar, pt, tl, ct) => (fl, st, pt, ct, tl) */ 13*c9945492SAndroid Build Coastguard Worker l.ori r3, r5, 0 14*c9945492SAndroid Build Coastguard Worker l.lwz r5, 0(r1) 15*c9945492SAndroid Build Coastguard Worker l.lwz r6, 8(r1) 16*c9945492SAndroid Build Coastguard Worker l.lwz r7, 4(r1) 17*c9945492SAndroid Build Coastguard Worker l.ori r11, r0, 220 /* __NR_clone */ 18*c9945492SAndroid Build Coastguard Worker l.sys 1 19*c9945492SAndroid Build Coastguard Worker 20*c9945492SAndroid Build Coastguard Worker l.sfeqi r11, 0 21*c9945492SAndroid Build Coastguard Worker l.bf 1f 22*c9945492SAndroid Build Coastguard Worker l.nop 23*c9945492SAndroid Build Coastguard Worker l.jr r9 24*c9945492SAndroid Build Coastguard Worker l.nop 25*c9945492SAndroid Build Coastguard Worker 26*c9945492SAndroid Build Coastguard Worker1: l.lwz r11, 0(r1) 27*c9945492SAndroid Build Coastguard Worker l.jalr r11 28*c9945492SAndroid Build Coastguard Worker l.lwz r3, 4(r1) 29*c9945492SAndroid Build Coastguard Worker 30*c9945492SAndroid Build Coastguard Worker l.ori r11, r0, 93 /* __NR_exit */ 31*c9945492SAndroid Build Coastguard Worker l.sys 1 32