1*c9945492SAndroid Build Coastguard Worker.text 2*c9945492SAndroid Build Coastguard Worker.global __clone 3*c9945492SAndroid Build Coastguard Worker.hidden __clone 4*c9945492SAndroid Build Coastguard Worker.type __clone, @function 5*c9945492SAndroid Build Coastguard Worker__clone: 6*c9945492SAndroid Build Coastguard Worker! incoming: fn stack flags arg ptid tls ctid 7*c9945492SAndroid Build Coastguard Worker! r4 r5 r6 r7 @r15 @(4,r15) @(8,r15) 8*c9945492SAndroid Build Coastguard Worker 9*c9945492SAndroid Build Coastguard Worker mov #-16, r0 10*c9945492SAndroid Build Coastguard Worker and r0, r5 11*c9945492SAndroid Build Coastguard Worker 12*c9945492SAndroid Build Coastguard Worker mov r4, r1 ! r1 = fn 13*c9945492SAndroid Build Coastguard Worker mov r7, r2 ! r2 = arg 14*c9945492SAndroid Build Coastguard Worker 15*c9945492SAndroid Build Coastguard Worker mov #120, r3 ! r3 = __NR_clone 16*c9945492SAndroid Build Coastguard Worker mov r6, r4 ! r4 = flags 17*c9945492SAndroid Build Coastguard Worker !mov r5, r5 ! r5 = stack 18*c9945492SAndroid Build Coastguard Worker mov.l @r15, r6 ! r6 = ptid 19*c9945492SAndroid Build Coastguard Worker mov.l @(8,r15), r7 ! r7 = ctid 20*c9945492SAndroid Build Coastguard Worker mov.l @(4,r15), r0 ! r0 = tls 21*c9945492SAndroid Build Coastguard Worker trapa #31 22*c9945492SAndroid Build Coastguard Worker 23*c9945492SAndroid Build Coastguard Worker or r0, r0 24*c9945492SAndroid Build Coastguard Worker or r0, r0 25*c9945492SAndroid Build Coastguard Worker or r0, r0 26*c9945492SAndroid Build Coastguard Worker or r0, r0 27*c9945492SAndroid Build Coastguard Worker or r0, r0 28*c9945492SAndroid Build Coastguard Worker 29*c9945492SAndroid Build Coastguard Worker cmp/eq #0, r0 30*c9945492SAndroid Build Coastguard Worker bt 1f 31*c9945492SAndroid Build Coastguard Worker 32*c9945492SAndroid Build Coastguard Worker ! we are the parent, return 33*c9945492SAndroid Build Coastguard Worker rts 34*c9945492SAndroid Build Coastguard Worker nop 35*c9945492SAndroid Build Coastguard Worker 36*c9945492SAndroid Build Coastguard Worker1: ! we are the child, call fn(arg) 37*c9945492SAndroid Build Coastguard Worker mov.l 1f, r0 38*c9945492SAndroid Build Coastguard Worker mov r1, r5 39*c9945492SAndroid Build Coastguard Worker bsrf r0 40*c9945492SAndroid Build Coastguard Worker mov r2, r4 41*c9945492SAndroid Build Coastguard Worker 42*c9945492SAndroid Build Coastguard Worker2: mov #1, r3 ! __NR_exit 43*c9945492SAndroid Build Coastguard Worker mov r0, r4 44*c9945492SAndroid Build Coastguard Worker trapa #31 45*c9945492SAndroid Build Coastguard Worker 46*c9945492SAndroid Build Coastguard Worker or r0, r0 47*c9945492SAndroid Build Coastguard Worker or r0, r0 48*c9945492SAndroid Build Coastguard Worker or r0, r0 49*c9945492SAndroid Build Coastguard Worker or r0, r0 50*c9945492SAndroid Build Coastguard Worker or r0, r0 51*c9945492SAndroid Build Coastguard Worker 52*c9945492SAndroid Build Coastguard Worker.align 2 53*c9945492SAndroid Build Coastguard Worker.hidden __shcall 54*c9945492SAndroid Build Coastguard Worker1: .long __shcall@PCREL+(.-2b) 55