1570af302Sopenharmony_ci .global __cp_begin 2570af302Sopenharmony_ci .hidden __cp_begin 3570af302Sopenharmony_ci .global __cp_end 4570af302Sopenharmony_ci .hidden __cp_end 5570af302Sopenharmony_ci .global __cp_cancel 6570af302Sopenharmony_ci .hidden __cp_cancel 7570af302Sopenharmony_ci .hidden __cancel 8570af302Sopenharmony_ci .global __syscall_cp_asm 9570af302Sopenharmony_ci .hidden __syscall_cp_asm 10570af302Sopenharmony_ci .text 11570af302Sopenharmony_ci .type __syscall_cp_asm,%function 12570af302Sopenharmony_ci__syscall_cp_asm: 13570af302Sopenharmony_ci # at enter: r3 = pointer to self->cancel, r4: syscall no, r5: first arg, r6: 2nd, r7: 3rd, r8: 4th, r9: 5th, r10: 6th 14570af302Sopenharmony_ci__cp_begin: 15570af302Sopenharmony_ci # if (self->cancel) goto __cp_cancel 16570af302Sopenharmony_ci lwz 0, 0(3) 17570af302Sopenharmony_ci cmpwi cr7, 0, 0 18570af302Sopenharmony_ci bne- cr7, __cp_cancel 19570af302Sopenharmony_ci 20570af302Sopenharmony_ci # make syscall 21570af302Sopenharmony_ci mr 0, 4 22570af302Sopenharmony_ci mr 3, 5 23570af302Sopenharmony_ci mr 4, 6 24570af302Sopenharmony_ci mr 5, 7 25570af302Sopenharmony_ci mr 6, 8 26570af302Sopenharmony_ci mr 7, 9 27570af302Sopenharmony_ci mr 8, 10 28570af302Sopenharmony_ci sc 29570af302Sopenharmony_ci 30570af302Sopenharmony_ci__cp_end: 31570af302Sopenharmony_ci # return error ? -r3 : r3 32570af302Sopenharmony_ci bnslr+ 33570af302Sopenharmony_ci neg 3, 3 34570af302Sopenharmony_ci blr 35570af302Sopenharmony_ci 36570af302Sopenharmony_ci__cp_cancel: 37570af302Sopenharmony_ci mflr 0 38570af302Sopenharmony_ci bl 1f 39570af302Sopenharmony_ci .long .TOC.-. 40570af302Sopenharmony_ci1: mflr 3 41570af302Sopenharmony_ci lwa 2, 0(3) 42570af302Sopenharmony_ci add 2, 2, 3 43570af302Sopenharmony_ci mtlr 0 44570af302Sopenharmony_ci b __cancel 45