--- libffcall-2.2/avcall/avcall-powerpc64.c.old 2018-09-17 16:47:43.000000000 +0000 +++ libffcall-2.2/avcall/avcall-powerpc64.c 2020-05-11 23:06:57.534813743 +0000 @@ -181,111 +181,111 @@ /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */ if (l->rsize > 0 && l->rsize <= 16) { void* raddr = l->raddr; - #if 0 /* Unoptimized */ + #if 1 /* Unoptimized */ if (l->rsize == 1) { ((unsigned char *)raddr)[0] = (unsigned char)(iret); } else if (l->rsize == 2) { - ((unsigned char *)raddr)[0] = (unsigned char)(iret); - ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); + ((unsigned char *)raddr)[1] = (unsigned char)(iret); + ((unsigned char *)raddr)[0] = (unsigned char)(iret>>8); } else if (l->rsize == 3) { - ((unsigned char *)raddr)[0] = (unsigned char)(iret); + ((unsigned char *)raddr)[2] = (unsigned char)(iret); ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); - ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); + ((unsigned char *)raddr)[0] = (unsigned char)(iret>>16); } else if (l->rsize == 4) { - ((unsigned char *)raddr)[0] = (unsigned char)(iret); - ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); - ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); - ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24); + ((unsigned char *)raddr)[3] = (unsigned char)(iret); + ((unsigned char *)raddr)[2] = (unsigned char)(iret>>8); + ((unsigned char *)raddr)[1] = (unsigned char)(iret>>16); + ((unsigned char *)raddr)[0] = (unsigned char)(iret>>24); } else if (l->rsize == 5) { - ((unsigned char *)raddr)[0] = (unsigned char)(iret); - ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); + ((unsigned char *)raddr)[4] = (unsigned char)(iret); + ((unsigned char *)raddr)[3] = (unsigned char)(iret>>8); ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); - ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24); - ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32); + ((unsigned char *)raddr)[1] = (unsigned char)(iret>>24); + ((unsigned char *)raddr)[0] = (unsigned char)(iret>>32); } else if (l->rsize == 6) { - ((unsigned char *)raddr)[0] = (unsigned char)(iret); - ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); - ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); - ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24); - ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32); - ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40); + ((unsigned char *)raddr)[5] = (unsigned char)(iret); + ((unsigned char *)raddr)[4] = (unsigned char)(iret>>8); + ((unsigned char *)raddr)[3] = (unsigned char)(iret>>16); + ((unsigned char *)raddr)[2] = (unsigned char)(iret>>24); + ((unsigned char *)raddr)[1] = (unsigned char)(iret>>32); + ((unsigned char *)raddr)[0] = (unsigned char)(iret>>40); } else if (l->rsize == 7) { - ((unsigned char *)raddr)[0] = (unsigned char)(iret); - ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); - ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); + ((unsigned char *)raddr)[6] = (unsigned char)(iret); + ((unsigned char *)raddr)[5] = (unsigned char)(iret>>8); + ((unsigned char *)raddr)[4] = (unsigned char)(iret>>16); ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24); - ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32); - ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40); - ((unsigned char *)raddr)[6] = (unsigned char)(iret>>48); + ((unsigned char *)raddr)[2] = (unsigned char)(iret>>32); + ((unsigned char *)raddr)[1] = (unsigned char)(iret>>40); + ((unsigned char *)raddr)[0] = (unsigned char)(iret>>48); } else if (l->rsize >= 8 && l->rsize <= 16) { - ((unsigned char *)raddr)[0] = (unsigned char)(iret); - ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8); - ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16); - ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24); - ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32); - ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40); - ((unsigned char *)raddr)[6] = (unsigned char)(iret>>48); - ((unsigned char *)raddr)[7] = (unsigned char)(iret>>56); + ((unsigned char *)raddr)[7] = (unsigned char)(iret); + ((unsigned char *)raddr)[6] = (unsigned char)(iret>>8); + ((unsigned char *)raddr)[5] = (unsigned char)(iret>>16); + ((unsigned char *)raddr)[4] = (unsigned char)(iret>>24); + ((unsigned char *)raddr)[3] = (unsigned char)(iret>>32); + ((unsigned char *)raddr)[2] = (unsigned char)(iret>>40); + ((unsigned char *)raddr)[1] = (unsigned char)(iret>>48); + ((unsigned char *)raddr)[0] = (unsigned char)(iret>>56); if (l->rsize == 8) { } else if (l->rsize == 9) { - ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); + ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); } else if (l->rsize == 10) { - ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); - ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); + ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); + ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); } else if (l->rsize == 11) { - ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); - ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); - ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); + ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); + ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); + ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); } else if (l->rsize == 12) { - ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); - ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); - ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); - ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24); + ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); + ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); + ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); + ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32); } else if (l->rsize == 13) { - ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); - ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); - ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); - ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24); - ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32); + ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); + ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); + ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); + ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32); + ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24); } else if (l->rsize == 14) { - ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); - ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); - ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); - ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24); - ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32); - ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40); + ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); + ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); + ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); + ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32); + ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24); + ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16); } else if (l->rsize == 15) { - ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); - ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); - ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); - ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24); - ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32); - ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40); - ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>48); + ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); + ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); + ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); + ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32); + ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24); + ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16); + ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>8); } else if (l->rsize == 16) { - ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2); - ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8); - ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16); - ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24); - ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32); - ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40); - ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>48); - ((unsigned char *)raddr)[8+7] = (unsigned char)(iret2>>56); + ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56); + ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48); + ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40); + ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32); + ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24); + ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16); + ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>8); + ((unsigned char *)raddr)[8+7] = (unsigned char)(iret2); } } #else /* Optimized: fewer conditional jumps, fewer memory accesses */ --- libffcall-2.2/avcall/avcall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:04.000000000 +0000 +++ libffcall-2.2/avcall/avcall-powerpc64-elfv2-linux.S 2020-05-11 23:07:17.992574561 +0000 @@ -1,44 +1,52 @@ .file "avcall-powerpc64.c" - .machine power4 .abiversion 2 - .section ".toc","aw" .section ".text" .align 2 .p2align 4,,15 .globl avcall_call .type avcall_call, @function avcall_call: -0: addis 2,12,.TOC.-0b@ha - addi 2,2,.TOC.-0b@l +.LFB0: + .cfi_startproc +.LCF0: +0: addis 2,12,.TOC.-.LCF0@ha + addi 2,2,.TOC.-.LCF0@l .localentry avcall_call,.-avcall_call mflr 0 std 30,-16(1) std 31,-8(1) + .cfi_register 65, 0 + .cfi_offset 30, -16 + .cfi_offset 31, -8 mr 30,3 std 0,16(1) - stdu 1,-112(1) - ld 3,48(3) - ld 9,40(30) + stdu 1,-128(1) + .cfi_def_cfa_offset 128 + .cfi_offset 65, 16 mr 31,1 + .cfi_def_cfa_register 31 + ld 3,48(3) ld 10,0(1) + ld 9,-28688(13) + std 9,104(31) + li 9,0 + ld 9,40(30) + stdu 10,-2048(1) subf 9,3,9 - stdu 10,-2064(1) sradi 9,9,3 cmpwi 7,9,8 ble 7,.L6 - addi 10,9,-9 - addi 8,1,96 - addi 9,3,56 - rldicl 10,10,0,32 - addi 8,8,-8 - addi 10,10,8 - sldi 10,10,3 - add 10,3,10 + addi 8,9,-9 + addi 7,1,96 + addi 10,3,56 + rldic 8,8,3,29 + addi 9,7,-8 + add 7,7,8 .p2align 4,,15 .L5: - ldu 7,8(9) - cmpld 7,10,9 - stdu 7,8(8) + ldu 8,8(10) + stdu 8,8(9) + cmpld 7,7,9 bne 7,.L5 .L6: ld 10,64(30) @@ -114,191 +122,210 @@ ld 2,24(1) lwz 9,24(30) cmplwi 7,9,1 - beq 7,.L19 + beq 7,.L20 cmpdi 7,9,0 - beq 7,.L50 + beq 7,.L68 cmplwi 7,9,2 - beq 7,.L45 + beq 7,.L62 cmplwi 7,9,3 - beq 7,.L45 + beq 7,.L62 cmplwi 7,9,4 - beq 7,.L45 + beq 7,.L62 cmplwi 7,9,5 - beq 7,.L46 + beq 7,.L63 cmplwi 7,9,6 - beq 7,.L46 + beq 7,.L63 cmplwi 7,9,7 - beq 7,.L47 + beq 7,.L64 cmplwi 7,9,8 - beq 7,.L47 + beq 7,.L64 cmplwi 7,9,9 - beq 7,.L50 + beq 7,.L68 cmplwi 7,9,10 - beq 7,.L50 + beq 7,.L68 cmplwi 7,9,11 - beq 7,.L50 + beq 7,.L68 cmplwi 7,9,12 - beq 7,.L50 + beq 7,.L68 cmplwi 7,9,13 - beq 7,.L52 + beq 7,.L71 cmplwi 7,9,14 - beq 7,.L53 + beq 7,.L72 cmplwi 7,9,15 - beq 7,.L50 + beq 7,.L68 cmplwi 7,9,16 - bne 7,.L19 + bne 7,.L20 lwz 9,0(30) - rldicl. 10,9,55,63 - beq 0,.L19 + andi. 9,9,0x200 + beq 0,.L20 ld 10,32(30) addi 9,10,-1 cmpldi 7,9,15 - bgt 7,.L19 - ld 8,16(30) - cmpldi 7,10,8 - rldicl 9,8,0,61 - rldicr 8,8,0,60 - add 10,10,9 - bgt 7,.L35 + bgt 7,.L20 + cmpldi 7,10,1 + ld 9,16(30) + rlwinm 8,3,0,0xff + beq 7,.L69 + cmpldi 7,10,2 + beq 7,.L73 + cmpldi 7,10,3 + rldicl 8,3,48,56 + beq 7,.L74 + cmpldi 7,10,4 + beq 7,.L75 + cmpldi 7,10,5 + rldicl 8,3,32,56 + beq 7,.L76 + cmpldi 7,10,6 + rldicl 7,3,24,56 + beq 7,.L77 + cmpldi 7,10,7 + rldicl 6,3,16,56 + beq 7,.L78 + std 3,0(9) + ld 10,32(30) cmpldi 7,10,8 - bgt 7,.L36 - slwi 10,10,3 - li 7,2 - ld 6,0(8) - slwi 9,9,3 - addi 10,10,-1 - sld 10,7,10 - li 7,1 - sld 7,7,9 - sld 9,3,9 - subf 10,7,10 - xor 9,9,6 - and 9,10,9 - xor 9,9,6 - std 9,0(8) -.L19: - addi 1,31,112 + beq 7,.L20 + cmpldi 7,10,9 + beq 7,.L79 + cmpldi 7,10,10 + beq 7,.L80 + cmpldi 7,10,11 + beq 7,.L81 + cmpldi 7,10,12 + beq 7,.L82 + cmpldi 7,10,13 + beq 7,.L83 + cmpldi 7,10,14 + beq 7,.L84 + cmpldi 7,10,15 + beq 7,.L85 + cmpldi 7,10,16 + bne 7,.L20 + std 4,8(9) + .p2align 4,,15 +.L20: + ld 9,104(31) + ld 10,-28688(13) + xor. 9,9,10 + li 10,0 li 3,0 + bne 0,.L86 + addi 1,31,128 + .cfi_remember_state + .cfi_def_cfa 1, 0 ld 0,16(1) ld 30,-16(1) ld 31,-8(1) mtlr 0 + .cfi_restore 65 + .cfi_restore 31 + .cfi_restore 30 blr .p2align 4,,15 -.L50: +.L68: + .cfi_restore_state ld 9,16(30) std 3,0(9) - addi 1,31,112 - li 3,0 - ld 0,16(1) - ld 30,-16(1) - ld 31,-8(1) - mtlr 0 - blr + b .L20 .p2align 4,,15 -.L45: +.L62: ld 9,16(30) stb 3,0(9) - addi 1,31,112 - li 3,0 - ld 0,16(1) - ld 30,-16(1) - ld 31,-8(1) - mtlr 0 - blr -.L46: + b .L20 +.L63: ld 9,16(30) sth 3,0(9) - b .L19 -.L47: + b .L20 +.L64: ld 9,16(30) stw 3,0(9) - b .L19 -.L52: + b .L20 +.L71: ld 9,16(30) stfs 1,0(9) - b .L19 -.L53: + b .L20 +.L72: ld 9,16(30) stfd 1,0(9) - b .L19 -.L36: - rldicl 9,9,0,32 - slwi 10,10,3 - ld 11,0(8) - ld 4,8(8) - li 7,2 - mulli 6,9,-8 - addi 10,10,-65 - slwi 9,9,3 - sld 10,7,10 - sld 5,3,9 - li 7,-1 - addi 6,6,64 - addi 10,10,-1 - sld 7,7,9 - srad 3,3,6 - xor 6,5,11 - xor 9,3,4 - and 7,7,6 - and 9,10,9 - xor 10,7,11 - xor 9,9,4 - std 10,0(8) - std 9,8(8) - b .L19 -.L35: - rldicl 9,9,0,32 - ld 11,0(8) - li 6,-1 - cmpldi 7,10,16 - slwi 5,9,3 - sld 7,3,5 - sld 6,6,5 - xor 7,7,11 - and 7,6,7 - xor 7,7,11 - std 7,0(8) - ble 7,.L54 - mulli 9,9,-8 - ld 11,16(8) - slwi 10,10,3 - li 7,2 - addi 10,10,-129 - addi 9,9,64 - sld 7,7,10 - srad 6,4,9 - srad 3,3,9 - addi 7,7,-1 - sld 9,4,5 - xor 10,6,11 - or 9,3,9 - and 10,7,10 - std 9,8(8) - xor 10,10,11 - std 10,16(8) - b .L19 -.L54: - mulli 9,9,-4 - slwi 10,10,3 - ld 11,8(8) - sld 4,4,5 - addi 10,10,-65 - li 6,2 - addi 9,9,32 - sld 10,6,10 - srad 3,3,9 - srad 9,3,9 - or 7,9,4 - addi 9,10,-1 - xor 10,7,11 - and 9,10,9 - xor 9,9,11 - std 9,8(8) - b .L19 + b .L20 +.L86: + bl __stack_chk_fail + nop +.L74: + sth 3,1(9) +.L69: + stb 8,0(9) + b .L20 +.L85: + srdi 7,4,32 + sradi 8,4,24 + sradi 10,4,16 + sradi 4,4,8 + stw 7,8(9) + stb 8,12(9) + stb 10,13(9) + stb 4,14(9) + b .L20 +.L76: + stw 3,1(9) + stb 8,0(9) + b .L20 +.L75: + stw 3,0(9) + b .L20 +.L73: + sth 3,0(9) + b .L20 +.L84: + srdi 8,4,32 + sradi 10,4,24 + sradi 4,4,16 + stw 8,8(9) + stb 10,12(9) + stb 4,13(9) + b .L20 +.L83: + srdi 10,4,32 + sradi 4,4,24 + stw 10,8(9) + stb 4,12(9) + b .L20 +.L82: + srdi 4,4,32 + stw 4,8(9) + b .L20 +.L81: + srdi 10,4,48 + sradi 4,4,40 + sth 10,8(9) + stb 4,10(9) + b .L20 +.L80: + srdi 4,4,48 + sth 4,8(9) + b .L20 +.L79: + sradi 4,4,56 + stb 4,8(9) + b .L20 +.L78: + stw 3,3(9) + stb 8,2(9) + stb 7,1(9) + stb 6,0(9) + b .L20 +.L77: + stw 3,2(9) + stb 8,1(9) + stb 7,0(9) + b .L20 .long 0 .byte 0,0,0,1,128,2,0,0 + .cfi_endproc +.LFE0: .size avcall_call,.-avcall_call + .gnu_attribute 4, 9 #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ .section .note.GNU-stack,"",@progbits #endif --- libffcall-2.2/vacall/vacall-powerpc64.c.old 2020-05-11 23:11:15.566571148 +0000 +++ libffcall-2.2/vacall/vacall-powerpc64.c 2020-05-11 23:16:52.489693582 +0000 @@ -140,111 +140,111 @@ if (list.flags & __VA_REGISTER_STRUCT_RETURN) { /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */ if (list.rsize > 0 && list.rsize <= 16) { - #if 0 /* Unoptimized */ + #if 1 /* Unoptimized */ if (list.rsize == 1) { iret = (__vaword)((unsigned char *) list.raddr)[0]; } else if (list.rsize == 2) { - iret = ((__vaword)((unsigned char *) list.raddr)[0]) - | ((__vaword)((unsigned char *) list.raddr)[1] << 8); + iret = ((__vaword)((unsigned char *) list.raddr)[1]) + | ((__vaword)((unsigned char *) list.raddr)[0] << 8); } else if (list.rsize == 3) { - iret = ((__vaword)((unsigned char *) list.raddr)[0]) + iret = ((__vaword)((unsigned char *) list.raddr)[2]) | ((__vaword)((unsigned char *) list.raddr)[1] << 8) - | ((__vaword)((unsigned char *) list.raddr)[2] << 16); + | ((__vaword)((unsigned char *) list.raddr)[0] << 16); } else if (list.rsize == 4) { - iret = ((__vaword)((unsigned char *) list.raddr)[0]) - | ((__vaword)((unsigned char *) list.raddr)[1] << 8) - | ((__vaword)((unsigned char *) list.raddr)[2] << 16) - | ((__vaword)((unsigned char *) list.raddr)[3] << 24); + iret = ((__vaword)((unsigned char *) list.raddr)[3]) + | ((__vaword)((unsigned char *) list.raddr)[2] << 8) + | ((__vaword)((unsigned char *) list.raddr)[1] << 16) + | ((__vaword)((unsigned char *) list.raddr)[0] << 24); } else if (list.rsize == 5) { - iret = ((__vaword)((unsigned char *) list.raddr)[0]) - | ((__vaword)((unsigned char *) list.raddr)[1] << 8) + iret = ((__vaword)((unsigned char *) list.raddr)[4]) + | ((__vaword)((unsigned char *) list.raddr)[3] << 8) | ((__vaword)((unsigned char *) list.raddr)[2] << 16) - | ((__vaword)((unsigned char *) list.raddr)[3] << 24) - | ((__vaword)((unsigned char *) list.raddr)[4] << 32); + | ((__vaword)((unsigned char *) list.raddr)[1] << 24) + | ((__vaword)((unsigned char *) list.raddr)[0] << 32); } else if (list.rsize == 6) { - iret = ((__vaword)((unsigned char *) list.raddr)[0]) - | ((__vaword)((unsigned char *) list.raddr)[1] << 8) - | ((__vaword)((unsigned char *) list.raddr)[2] << 16) - | ((__vaword)((unsigned char *) list.raddr)[3] << 24) - | ((__vaword)((unsigned char *) list.raddr)[4] << 32) - | ((__vaword)((unsigned char *) list.raddr)[5] << 40); + iret = ((__vaword)((unsigned char *) list.raddr)[5]) + | ((__vaword)((unsigned char *) list.raddr)[4] << 8) + | ((__vaword)((unsigned char *) list.raddr)[3] << 16) + | ((__vaword)((unsigned char *) list.raddr)[2] << 24) + | ((__vaword)((unsigned char *) list.raddr)[1] << 32) + | ((__vaword)((unsigned char *) list.raddr)[0] << 40); } else if (list.rsize == 7) { - iret = ((__vaword)((unsigned char *) list.raddr)[0]) - | ((__vaword)((unsigned char *) list.raddr)[1] << 8) - | ((__vaword)((unsigned char *) list.raddr)[2] << 16) + iret = ((__vaword)((unsigned char *) list.raddr)[6]) + | ((__vaword)((unsigned char *) list.raddr)[5] << 8) + | ((__vaword)((unsigned char *) list.raddr)[4] << 16) | ((__vaword)((unsigned char *) list.raddr)[3] << 24) - | ((__vaword)((unsigned char *) list.raddr)[4] << 32) - | ((__vaword)((unsigned char *) list.raddr)[5] << 40) - | ((__vaword)((unsigned char *) list.raddr)[6] << 48); + | ((__vaword)((unsigned char *) list.raddr)[2] << 32) + | ((__vaword)((unsigned char *) list.raddr)[1] << 40) + | ((__vaword)((unsigned char *) list.raddr)[0] << 48); } else if (list.rsize >= 8 && list.rsize <= 16) { - iret = ((__vaword)((unsigned char *) list.raddr)[0]) - | ((__vaword)((unsigned char *) list.raddr)[1] << 8) - | ((__vaword)((unsigned char *) list.raddr)[2] << 16) - | ((__vaword)((unsigned char *) list.raddr)[3] << 24) - | ((__vaword)((unsigned char *) list.raddr)[4] << 32) - | ((__vaword)((unsigned char *) list.raddr)[5] << 40) - | ((__vaword)((unsigned char *) list.raddr)[6] << 48) - | ((__vaword)((unsigned char *) list.raddr)[7] << 56); + iret = ((__vaword)((unsigned char *) list.raddr)[7]) + | ((__vaword)((unsigned char *) list.raddr)[6] << 8) + | ((__vaword)((unsigned char *) list.raddr)[5] << 16) + | ((__vaword)((unsigned char *) list.raddr)[4] << 24) + | ((__vaword)((unsigned char *) list.raddr)[3] << 32) + | ((__vaword)((unsigned char *) list.raddr)[2] << 40) + | ((__vaword)((unsigned char *) list.raddr)[1] << 48) + | ((__vaword)((unsigned char *) list.raddr)[0] << 56); if (list.rsize == 8) { } else if (list.rsize == 9) { - iret2 = (__vaword)((unsigned char *) list.raddr)[8]; + iret2 = (__vaword)((unsigned char *) list.raddr)[8] << 56; } else if (list.rsize == 10) { - iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) - | ((__vaword)((unsigned char *) list.raddr)[9] << 8); + iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) + | ((__vaword)((unsigned char *) list.raddr)[9] << 48); } else if (list.rsize == 11) { - iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) - | ((__vaword)((unsigned char *) list.raddr)[9] << 8) - | ((__vaword)((unsigned char *) list.raddr)[10] << 16); + iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) + | ((__vaword)((unsigned char *) list.raddr)[9] << 48) + | ((__vaword)((unsigned char *) list.raddr)[10] << 40); } else if (list.rsize == 12) { - iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) - | ((__vaword)((unsigned char *) list.raddr)[9] << 8) - | ((__vaword)((unsigned char *) list.raddr)[10] << 16) - | ((__vaword)((unsigned char *) list.raddr)[11] << 24); + iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) + | ((__vaword)((unsigned char *) list.raddr)[9] << 48) + | ((__vaword)((unsigned char *) list.raddr)[10] << 40) + | ((__vaword)((unsigned char *) list.raddr)[11] << 32); } else if (list.rsize == 13) { - iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) - | ((__vaword)((unsigned char *) list.raddr)[9] << 8) - | ((__vaword)((unsigned char *) list.raddr)[10] << 16) - | ((__vaword)((unsigned char *) list.raddr)[11] << 24) - | ((__vaword)((unsigned char *) list.raddr)[12] << 32); + iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) + | ((__vaword)((unsigned char *) list.raddr)[9] << 48) + | ((__vaword)((unsigned char *) list.raddr)[10] << 40) + | ((__vaword)((unsigned char *) list.raddr)[11] << 32) + | ((__vaword)((unsigned char *) list.raddr)[12] << 24); } else if (list.rsize == 14) { - iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) - | ((__vaword)((unsigned char *) list.raddr)[9] << 8) - | ((__vaword)((unsigned char *) list.raddr)[10] << 16) - | ((__vaword)((unsigned char *) list.raddr)[11] << 24) - | ((__vaword)((unsigned char *) list.raddr)[12] << 32) - | ((__vaword)((unsigned char *) list.raddr)[13] << 40); + iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) + | ((__vaword)((unsigned char *) list.raddr)[9] << 48) + | ((__vaword)((unsigned char *) list.raddr)[10] << 40) + | ((__vaword)((unsigned char *) list.raddr)[11] << 32) + | ((__vaword)((unsigned char *) list.raddr)[12] << 24) + | ((__vaword)((unsigned char *) list.raddr)[13] << 16); } else if (list.rsize == 15) { - iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) - | ((__vaword)((unsigned char *) list.raddr)[9] << 8) - | ((__vaword)((unsigned char *) list.raddr)[10] << 16) - | ((__vaword)((unsigned char *) list.raddr)[11] << 24) - | ((__vaword)((unsigned char *) list.raddr)[12] << 32) - | ((__vaword)((unsigned char *) list.raddr)[13] << 40) - | ((__vaword)((unsigned char *) list.raddr)[14] << 48); + iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) + | ((__vaword)((unsigned char *) list.raddr)[9] << 48) + | ((__vaword)((unsigned char *) list.raddr)[10] << 40) + | ((__vaword)((unsigned char *) list.raddr)[11] << 32) + | ((__vaword)((unsigned char *) list.raddr)[12] << 24) + | ((__vaword)((unsigned char *) list.raddr)[13] << 16) + | ((__vaword)((unsigned char *) list.raddr)[14] << 8); } else if (list.rsize == 16) { - iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) - | ((__vaword)((unsigned char *) list.raddr)[9] << 8) - | ((__vaword)((unsigned char *) list.raddr)[10] << 16) - | ((__vaword)((unsigned char *) list.raddr)[11] << 24) - | ((__vaword)((unsigned char *) list.raddr)[12] << 32) - | ((__vaword)((unsigned char *) list.raddr)[13] << 40) - | ((__vaword)((unsigned char *) list.raddr)[14] << 48) - | ((__vaword)((unsigned char *) list.raddr)[15] << 56); + iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) + | ((__vaword)((unsigned char *) list.raddr)[9] << 48) + | ((__vaword)((unsigned char *) list.raddr)[10] << 40) + | ((__vaword)((unsigned char *) list.raddr)[11] << 32) + | ((__vaword)((unsigned char *) list.raddr)[12] << 24) + | ((__vaword)((unsigned char *) list.raddr)[13] << 16) + | ((__vaword)((unsigned char *) list.raddr)[14] << 8) + | ((__vaword)((unsigned char *) list.raddr)[15]); } } #else /* Optimized: fewer conditional jumps, fewer memory accesses */ --- libffcall-2.2/vacall/vacall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:06.000000000 +0000 +++ libffcall-2.2/vacall/vacall-powerpc64-elfv2-linux.S 2020-05-11 23:18:00.842212129 +0000 @@ -1,9 +1,8 @@ .file "vacall-powerpc64.c" - .machine power4 .abiversion 2 - .section ".toc","aw" .section ".text" .section ".toc","aw" + .align 3 .LC0: .quad vacall_function .section ".text" @@ -12,40 +11,50 @@ .globl vacall_receiver .type vacall_receiver, @function vacall_receiver: -0: addis 2,12,.TOC.-0b@ha - addi 2,2,.TOC.-0b@l +.LFB0: + .cfi_startproc +.LCF0: +0: addis 2,12,.TOC.-.LCF0@ha + addi 2,2,.TOC.-.LCF0@l .localentry vacall_receiver,.-vacall_receiver mflr 0 std 31,-8(1) + std 30,-16(1) addis 11,2,.LC0@toc@ha - ld 12,.LC0@toc@l(11) - li 11,0 std 0,16(1) stdu 1,-224(1) - mr 31,1 - ld 0,0(12) + .cfi_def_cfa_offset 224 + .cfi_offset 65, 16 + .cfi_offset 31, -8 + .cfi_offset 30, -16 + li 0,0 + ld 12,.LC0@toc@l(11) std 2,24(1) + mr 31,1 + .cfi_def_cfa_register 31 + addi 11,31,256 + ld 30,-28688(13) + std 30,200(31) + li 30,0 + std 6,280(31) + ld 6,0(12) std 9,304(31) li 9,0 std 3,256(31) - addi 3,31,32 std 4,264(31) + stfd 1,96(31) std 5,272(31) - mtctr 0 - stw 9,32(31) - std 6,280(31) std 7,288(31) std 8,296(31) + mtctr 6 std 10,312(31) - stfd 1,96(31) - addi 9,31,256 stfd 2,104(31) stfd 3,112(31) stfd 4,120(31) + mr 12,6 stfd 5,128(31) - mr 12,0 - std 9,56(31) stfd 6,136(31) + addi 3,31,32 stfd 7,144(31) stfd 8,152(31) stfd 9,160(31) @@ -53,173 +62,232 @@ stfd 11,176(31) stfd 12,184(31) stfd 13,192(31) - std 11,64(31) - stw 11,72(31) - stw 11,88(31) + stw 0,32(31) + std 11,56(31) + std 9,64(31) + stw 9,72(31) + stw 9,88(31) bctrl ld 2,24(1) lwz 9,72(31) cmpdi 7,9,0 beq 7,.L1 cmplwi 7,9,1 - beq 7,.L27 + beq 7,.L41 cmplwi 7,9,2 - beq 7,.L30 + beq 7,.L45 cmplwi 7,9,3 - beq 7,.L27 + beq 7,.L41 cmplwi 7,9,4 - beq 7,.L31 + beq 7,.L46 cmplwi 7,9,5 - beq 7,.L32 + beq 7,.L47 cmplwi 7,9,6 - beq 7,.L33 + beq 7,.L48 cmplwi 7,9,7 - beq 7,.L34 + beq 7,.L49 cmplwi 7,9,8 - beq 7,.L28 + beq 7,.L42 cmplwi 7,9,9 - beq 7,.L28 + beq 7,.L42 cmplwi 7,9,10 - beq 7,.L28 + beq 7,.L42 cmplwi 7,9,11 - beq 7,.L28 + beq 7,.L42 cmplwi 7,9,12 - beq 7,.L35 + beq 7,.L50 cmplwi 7,9,13 - beq 7,.L36 + beq 7,.L51 cmplwi 7,9,14 - beq 7,.L28 + beq 7,.L42 cmplwi 7,9,15 bne 7,.L1 lwz 9,32(31) - rldicl. 10,9,54,63 + andi. 9,9,0x400 beq 0,.L1 - ld 9,80(31) - addi 10,9,-1 - cmpldi 7,10,15 + ld 10,80(31) + addi 9,10,-1 + cmpldi 7,9,15 bgt 7,.L1 + cmpldi 7,10,1 ld 8,64(31) - cmpldi 7,9,8 - rldicl 10,8,0,61 - rldicr 8,8,0,60 - add 9,9,10 - bgt 7,.L17 - cmpldi 7,9,8 - slwi 9,9,3 - bgt 7,.L18 - ld 7,0(8) - addi 9,9,-1 - li 8,2 - slwi 10,10,3 - sld 9,8,9 - addi 9,9,-1 - and 9,9,7 - srad 3,9,10 + lbz 9,0(8) + beq 7,.L52 + cmpldi 7,10,2 + beq 7,.L53 + cmpldi 7,10,3 + lbz 7,1(8) + lbz 6,2(8) + beq 7,.L54 + cmpldi 7,10,4 + beq 7,.L55 + cmpldi 7,10,5 + beq 7,.L56 + cmpldi 7,10,6 + beq 7,.L57 + cmpldi 7,10,7 + beq 7,.L58 + cmpldi 7,10,8 + ld 3,0(8) + beq 7,.L1 + cmpldi 7,10,9 + lbz 9,8(8) + sldi 9,9,56 + beq 7,.L59 + lbz 7,9(8) + cmpldi 7,10,10 + sldi 7,7,48 + or 7,7,9 + beq 7,.L60 + cmpldi 7,10,11 + lbz 9,10(8) + sldi 9,9,40 + beq 7,.L43 + cmpldi 7,10,12 + lbz 6,11(8) + sldi 6,6,32 + beq 7,.L61 + cmpldi 7,10,13 + lbz 5,12(8) + sldi 5,5,24 + beq 7,.L62 + cmpldi 7,10,14 + lbz 11,13(8) + sldi 11,11,16 + beq 7,.L63 + cmpldi 7,10,15 + beq 7,.L64 + ld 4,8(8) + .p2align 4,,15 .L1: + ld 9,200(31) + ld 10,-28688(13) + xor. 9,9,10 + li 10,0 + bne 0,.L65 addi 1,31,224 + .cfi_remember_state + .cfi_def_cfa 1, 0 ld 0,16(1) + ld 30,-16(1) ld 31,-8(1) mtlr 0 + .cfi_restore 65 + .cfi_restore 31 + .cfi_restore 30 blr .p2align 4,,15 -.L27: - addi 1,31,224 +.L41: + .cfi_restore_state lbz 3,40(31) - ld 0,16(1) - ld 31,-8(1) - mtlr 0 - blr + b .L1 .p2align 4,,15 -.L30: - lbz 9,40(31) - extsb 3,9 +.L45: + lbz 3,40(31) + extsb 3,3 b .L1 .p2align 4,,15 -.L28: - ld 3,40(31) +.L48: + lwa 3,40(31) b .L1 .p2align 4,,15 -.L31: +.L46: lha 3,40(31) b .L1 .p2align 4,,15 -.L32: +.L47: lhz 3,40(31) b .L1 .p2align 4,,15 -.L33: - lwa 3,40(31) - b .L1 - .p2align 4,,15 -.L35: - lfs 1,40(31) +.L42: + ld 3,40(31) b .L1 .p2align 4,,15 -.L34: +.L49: lwz 3,40(31) b .L1 -.L36: +.L50: + lfs 1,40(31) + b .L1 +.L51: lfd 1,40(31) b .L1 -.L17: - cmpldi 7,9,16 - rldicl 10,10,0,32 - slwi 9,9,3 - ble 7,.L37 - li 7,2 - addi 9,9,-129 - ld 11,16(8) - ld 5,0(8) - mulli 6,10,-8 - sld 9,7,9 - ld 7,8(8) - addi 8,9,-1 - slwi 9,10,3 - addi 6,6,64 - and 10,8,11 - srad 8,5,9 - sld 5,7,6 - srad 9,7,9 - sld 10,10,6 - or 3,8,5 - or 4,10,9 - b .L1 -.L18: - rldicl 10,10,0,32 - li 7,2 - ld 6,8(8) - ld 8,0(8) - addi 9,9,-65 - sld 9,7,9 - mulli 7,10,-8 - slwi 10,10,3 - addi 9,9,-1 - srad 10,8,10 - and 9,9,6 - addi 7,7,64 - sld 9,9,7 - or 3,9,10 - b .L1 -.L37: - li 7,2 - addi 9,9,-65 - ld 5,8(8) - ld 6,0(8) - sld 9,7,9 - mulli 7,10,-4 - addi 9,9,-1 - addi 7,7,32 - and 8,9,5 - slwi 9,10,3 - sld 10,8,7 - srad 6,6,9 - srad 4,8,9 - sld 7,10,7 - or 3,6,7 +.L65: + bl __stack_chk_fail + nop +.L64: + or 4,9,6 + lbz 9,14(8) + or 4,4,5 + sldi 9,9,8 + or 4,4,11 + or 4,4,9 + or 4,4,7 + b .L1 +.L63: + or 4,9,6 + or 4,4,5 + or 4,4,11 + or 4,4,7 + b .L1 +.L55: + lwz 3,0(8) + b .L1 +.L54: + sldi 7,7,8 + sldi 9,9,16 + or 9,7,9 + or 3,9,6 + b .L1 +.L53: + lhz 3,0(8) + b .L1 +.L52: + mr 3,9 + b .L1 +.L62: + or 9,9,6 + or 4,9,5 + or 4,4,7 + b .L1 +.L61: + or 9,9,6 +.L43: + or 4,9,7 + b .L1 +.L60: + mr 4,7 + b .L1 +.L59: + mr 4,9 + b .L1 +.L58: + sldi 6,6,32 + sldi 7,7,40 + lwz 3,3(8) + sldi 9,9,48 + or 7,6,7 + or 3,7,3 + or 3,3,9 + b .L1 +.L57: + sldi 7,7,32 + sldi 9,9,40 + lwz 3,2(8) + or 9,7,9 + or 3,9,3 + b .L1 +.L56: + lwz 3,1(8) + sldi 9,9,32 + or 3,3,9 b .L1 .long 0 - .byte 0,0,0,1,128,1,0,0 + .byte 0,0,0,1,128,2,0,0 + .cfi_endproc +.LFE0: .size vacall_receiver,.-vacall_receiver + .gnu_attribute 4, 9 #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ .section .note.GNU-stack,"",@progbits #endif --- libffcall-2.2/callback/vacall_r/vacall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:08.000000000 +0000 +++ libffcall-2.2/callback/vacall_r/vacall-powerpc64-elfv2-linux.S 2020-05-11 23:26:54.443785997 +0000 @@ -1,45 +1,56 @@ .file "vacall-powerpc64.c" - .machine power4 .abiversion 2 - .section ".toc","aw" .section ".text" .align 2 .p2align 4,,15 .type callback_receiver, @function callback_receiver: -0: addis 2,12,.TOC.-0b@ha - addi 2,2,.TOC.-0b@l +.LFB0: + .cfi_startproc +.LCF0: +0: addis 2,12,.TOC.-.LCF0@ha + addi 2,2,.TOC.-.LCF0@l .localentry callback_receiver,.-callback_receiver mflr 0 - std 30,-16(1) + std 28,-32(1) + std 29,-24(1) std 31,-8(1) + std 30,-16(1) std 0,16(1) - stdu 1,-224(1) - li 0,0 - ld 30,0(11) + stdu 1,-240(1) + .cfi_def_cfa_offset 240 + .cfi_offset 65, 16 + .cfi_offset 28, -32 + .cfi_offset 29, -24 + .cfi_offset 31, -8 + .cfi_offset 30, -16 + li 28,0 + std 2,24(1) mr 31,1 - std 3,256(31) - std 4,264(31) - addi 4,31,32 - ld 3,8(11) - std 9,304(31) - mtctr 30 + .cfi_def_cfa_register 31 + addi 29,31,272 + ld 0,-28688(13) + std 0,200(31) + li 0,0 + ld 0,0(11) + std 9,320(31) li 9,0 - std 5,272(31) - std 6,280(31) - std 7,288(31) - std 8,296(31) - stw 9,32(31) - std 10,312(31) stfd 1,96(31) + std 3,272(31) + std 4,280(31) + std 5,288(31) stfd 2,104(31) - mr 12,30 - addi 9,31,256 + mtctr 0 + std 6,296(31) + std 7,304(31) + std 8,312(31) + std 10,328(31) stfd 3,112(31) stfd 4,120(31) stfd 5,128(31) stfd 6,136(31) - std 9,56(31) + mr 12,0 + addi 4,31,32 stfd 7,144(31) stfd 8,152(31) stfd 9,160(31) @@ -47,195 +58,266 @@ stfd 11,176(31) stfd 12,184(31) stfd 13,192(31) - std 0,64(31) - stw 0,72(31) - stw 0,88(31) - std 2,24(1) + ld 3,8(11) + stw 28,32(31) + std 9,64(31) + stw 9,72(31) + stw 9,88(31) + std 29,56(31) bctrl ld 2,24(1) lwz 9,72(31) cmpdi 7,9,0 beq 7,.L1 cmplwi 7,9,1 - beq 7,.L27 + beq 7,.L41 cmplwi 7,9,2 - beq 7,.L30 + beq 7,.L45 cmplwi 7,9,3 - beq 7,.L27 + beq 7,.L41 cmplwi 7,9,4 - beq 7,.L31 + beq 7,.L46 cmplwi 7,9,5 - beq 7,.L32 + beq 7,.L47 cmplwi 7,9,6 - beq 7,.L33 + beq 7,.L48 cmplwi 7,9,7 - beq 7,.L34 + beq 7,.L49 cmplwi 7,9,8 - beq 7,.L28 + beq 7,.L42 cmplwi 7,9,9 - beq 7,.L28 + beq 7,.L42 cmplwi 7,9,10 - beq 7,.L28 + beq 7,.L42 cmplwi 7,9,11 - beq 7,.L28 + beq 7,.L42 cmplwi 7,9,12 - beq 7,.L35 + beq 7,.L50 cmplwi 7,9,13 - beq 7,.L36 + beq 7,.L51 cmplwi 7,9,14 - beq 7,.L28 + beq 7,.L42 cmplwi 7,9,15 bne 7,.L1 lwz 9,32(31) - rldicl. 10,9,54,63 + andi. 9,9,0x400 beq 0,.L1 - ld 9,80(31) - addi 10,9,-1 - cmpldi 7,10,15 + ld 10,80(31) + addi 9,10,-1 + cmpldi 7,9,15 bgt 7,.L1 + cmpldi 7,10,1 ld 8,64(31) - cmpldi 7,9,8 - rldicl 10,8,0,61 - rldicr 8,8,0,60 - add 9,9,10 - bgt 7,.L17 - cmpldi 7,9,8 - slwi 9,9,3 - bgt 7,.L18 - ld 7,0(8) - addi 9,9,-1 - li 8,2 - slwi 10,10,3 - sld 9,8,9 - addi 9,9,-1 - and 9,9,7 - srad 3,9,10 + lbz 9,0(8) + beq 7,.L52 + cmpldi 7,10,2 + beq 7,.L53 + cmpldi 7,10,3 + lbz 7,1(8) + lbz 6,2(8) + beq 7,.L54 + cmpldi 7,10,4 + beq 7,.L55 + cmpldi 7,10,5 + beq 7,.L56 + cmpldi 7,10,6 + beq 7,.L57 + cmpldi 7,10,7 + beq 7,.L58 + cmpldi 7,10,8 + ld 3,0(8) + beq 7,.L1 + cmpldi 7,10,9 + lbz 9,8(8) + sldi 9,9,56 + beq 7,.L59 + lbz 7,9(8) + cmpldi 7,10,10 + sldi 7,7,48 + or 7,7,9 + beq 7,.L60 + cmpldi 7,10,11 + lbz 9,10(8) + sldi 9,9,40 + beq 7,.L43 + cmpldi 7,10,12 + lbz 6,11(8) + sldi 6,6,32 + beq 7,.L61 + cmpldi 7,10,13 + lbz 5,12(8) + sldi 5,5,24 + beq 7,.L62 + cmpldi 7,10,14 + lbz 0,13(8) + sldi 0,0,16 + beq 7,.L63 + cmpldi 7,10,15 + beq 7,.L64 + ld 4,8(8) + .p2align 4,,15 .L1: - addi 1,31,224 + ld 9,200(31) + ld 10,-28688(13) + xor. 9,9,10 + li 10,0 + bne 0,.L65 + addi 1,31,240 + .cfi_remember_state + .cfi_def_cfa 1, 0 ld 0,16(1) + ld 28,-32(1) + ld 29,-24(1) ld 30,-16(1) ld 31,-8(1) mtlr 0 + .cfi_restore 65 + .cfi_restore 31 + .cfi_restore 30 + .cfi_restore 29 + .cfi_restore 28 blr .p2align 4,,15 -.L27: - addi 1,31,224 +.L41: + .cfi_restore_state lbz 3,40(31) - ld 0,16(1) - ld 30,-16(1) - ld 31,-8(1) - mtlr 0 - blr + b .L1 .p2align 4,,15 -.L30: - lbz 9,40(31) - extsb 3,9 +.L45: + lbz 3,40(31) + extsb 3,3 b .L1 .p2align 4,,15 -.L28: - ld 3,40(31) +.L48: + lwa 3,40(31) b .L1 .p2align 4,,15 -.L31: +.L46: lha 3,40(31) b .L1 .p2align 4,,15 -.L32: +.L47: lhz 3,40(31) b .L1 .p2align 4,,15 -.L33: - lwa 3,40(31) - b .L1 - .p2align 4,,15 -.L35: - lfs 1,40(31) +.L42: + ld 3,40(31) b .L1 .p2align 4,,15 -.L34: +.L49: lwz 3,40(31) b .L1 -.L36: +.L50: + lfs 1,40(31) + b .L1 +.L51: lfd 1,40(31) b .L1 -.L17: - cmpldi 7,9,16 - rldicl 10,10,0,32 - slwi 9,9,3 - ble 7,.L37 - li 7,2 - addi 9,9,-129 - ld 0,16(8) - ld 5,0(8) - mulli 6,10,-8 - sld 9,7,9 - ld 7,8(8) - addi 8,9,-1 - slwi 9,10,3 - addi 6,6,64 - and 10,8,0 - srad 8,5,9 - sld 5,7,6 - srad 9,7,9 - sld 10,10,6 - or 3,8,5 - or 4,10,9 - b .L1 -.L18: - rldicl 10,10,0,32 - li 7,2 - ld 6,8(8) - ld 8,0(8) - addi 9,9,-65 - sld 9,7,9 - mulli 7,10,-8 - slwi 10,10,3 - addi 9,9,-1 - srad 10,8,10 - and 9,9,6 - addi 7,7,64 - sld 9,9,7 - or 3,9,10 - b .L1 -.L37: - li 7,2 - addi 9,9,-65 - ld 5,8(8) - ld 6,0(8) - sld 9,7,9 - mulli 7,10,-4 - addi 9,9,-1 - addi 7,7,32 - and 8,9,5 - slwi 9,10,3 - sld 10,8,7 - srad 6,6,9 - srad 4,8,9 - sld 7,10,7 - or 3,6,7 +.L65: + bl __stack_chk_fail + nop +.L64: + or 4,9,6 + lbz 9,14(8) + or 4,4,5 + sldi 9,9,8 + or 4,4,0 + or 4,4,9 + or 4,4,7 + b .L1 +.L63: + or 4,9,6 + or 4,4,5 + or 4,4,0 + or 4,4,7 + b .L1 +.L55: + lwz 3,0(8) + b .L1 +.L54: + sldi 7,7,8 + sldi 9,9,16 + or 9,7,9 + or 3,9,6 + b .L1 +.L53: + lhz 3,0(8) + b .L1 +.L52: + mr 3,9 + b .L1 +.L62: + or 9,9,6 + or 4,9,5 + or 4,4,7 + b .L1 +.L61: + or 9,9,6 +.L43: + or 4,9,7 + b .L1 +.L60: + mr 4,7 + b .L1 +.L59: + mr 4,9 + b .L1 +.L58: + sldi 6,6,32 + sldi 7,7,40 + lwz 3,3(8) + sldi 9,9,48 + or 7,6,7 + or 3,7,3 + or 3,3,9 + b .L1 +.L57: + sldi 7,7,32 + sldi 9,9,40 + lwz 3,2(8) + or 9,7,9 + or 3,9,3 + b .L1 +.L56: + lwz 3,1(8) + sldi 9,9,32 + or 3,3,9 b .L1 .long 0 - .byte 0,0,0,1,128,2,0,0 + .byte 0,0,0,1,128,4,0,0 + .cfi_endproc +.LFE0: .size callback_receiver,.-callback_receiver .align 2 .p2align 4,,15 .globl callback_get_receiver .type callback_get_receiver, @function callback_get_receiver: -0: addis 2,12,.TOC.-0b@ha - addi 2,2,.TOC.-0b@l +.LFB1: + .cfi_startproc +.LCF1: +0: addis 2,12,.TOC.-.LCF1@ha + addi 2,2,.TOC.-.LCF1@l .localentry callback_get_receiver,.-callback_get_receiver std 31,-8(1) stdu 1,-48(1) + .cfi_def_cfa_offset 48 + .cfi_offset 31, -8 addis 3,2,callback_receiver@toc@ha addi 3,3,callback_receiver@toc@l mr 31,1 + .cfi_def_cfa_register 31 addi 1,31,48 + .cfi_def_cfa 1, 0 ld 31,-8(1) + .cfi_restore 31 blr .long 0 .byte 0,0,0,0,128,1,0,0 + .cfi_endproc +.LFE1: .size callback_get_receiver,.-callback_get_receiver + .gnu_attribute 4, 9 #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ .section .note.GNU-stack,"",@progbits #endif