1#include "asm-arm64.h" 2 .cpu generic+fp+simd 3 .text 4 .align 2 5 .p2align 3,,7 6 DECLARE_FUNCTION(callback_receiver) 7FUNBEGIN(callback_receiver) 8 stp x29, x30, [sp, -256]! 9 add x29, sp, 0 10 ldr x10, [x18] 11 add x11, x29, 256 12 stp s0, s1, [x29, 156] 13 stp s2, s3, [x29, 164] 14 stp x0, x1, [x29, 88] 15 stp s4, s5, [x29, 172] 16 stp x11, xzr, [x29, 40] 17 stp s6, s7, [x29, 180] 18 str x8, [x29, 72] 19 stp d0, d1, [x29, 192] 20 stp x2, x3, [x29, 104] 21 stp d2, d3, [x29, 208] 22 stp x4, x5, [x29, 120] 23 stp d4, d5, [x29, 224] 24 stp x6, x7, [x29, 136] 25 stp d6, d7, [x29, 240] 26 str wzr, [x29, 16] 27 add x1, x29, 16 28 str wzr, [x29, 56] 29 ldr x0, [x18, 8] 30 str wzr, [x29, 80] 31 str wzr, [x29, 152] 32 blr x10 33 ldr w9, [x29, 56] 34 cbz w9, L(1) 35 cmp w9, 1 36 beq L(25) 37 cmp w9, 2 38 beq L(29) 39 cmp w9, 3 40 beq L(25) 41 cmp w9, 4 42 beq L(30) 43 cmp w9, 5 44 beq L(31) 45 cmp w9, 6 46 beq L(32) 47 cmp w9, 7 48 beq L(33) 49 and w10, w9, -3 50 cmp w10, 8 51 beq L(27) 52 cmp w10, 9 53 beq L(27) 54 cmp w9, 12 55 beq L(34) 56 cmp w9, 13 57 beq L(35) 58 cmp w9, 14 59 beq L(27) 60 cmp w9, 15 61 bne L(1) 62 ldr w9, [x29, 16] 63 tbz x9, 10, L(1) 64 ldr x9, [x29, 64] 65 sub x10, x9, $1 66 cmp x10, 15 67 bhi L(1) 68 ldr x11, [x29, 48] 69 cmp x9, 8 70 and x10, x11, 7 71 and x11, x11, -8 72 add x9, x9, x10 73 bhi L(15) 74 cmp x9, 8 75 lsl w9, w9, 3 76 bhi L(16) 77 mov x12, 2 78 sub w9, w9, $1 79 lsl x9, x12, x9 80 ldr x11, [x11] 81 sub x9, x9, $1 82 lsl w10, w10, 3 83 and x9, x9, x11 84 asr x0, x9, x10 85L(1): 86 ldp x29, x30, [sp], 256 87 ret 88 .p2align 3 89L(25): 90 ldrb w0, [x29, 24] 91 ldp x29, x30, [sp], 256 92 ret 93 .p2align 3 94L(27): 95 ldr x0, [x29, 24] 96 b L(1) 97 .p2align 3 98L(29): 99 ldrsb x0, [x29, 24] 100 b L(1) 101 .p2align 3 102L(30): 103 ldrsh x0, [x29, 24] 104 b L(1) 105 .p2align 3 106L(31): 107 ldrh w0, [x29, 24] 108 b L(1) 109 .p2align 3 110L(32): 111 ldrsw x0, [x29, 24] 112 b L(1) 113 .p2align 3 114L(33): 115 ldr w0, [x29, 24] 116 b L(1) 117L(34): 118 ldr s0, [x29, 24] 119 b L(1) 120L(35): 121 ldr d0, [x29, 24] 122 b L(1) 123L(15): 124 cmp x9, 16 125 lsl w9, w9, 3 126 bls L(36) 127 mov x13, 2 128 sub w9, w9, $129 129 ldp x14, x12, [x11, 8] 130 lsl x9, x13, x9 131 lsl w15, w10, 3 132 sub x9, x9, $1 133 neg w10, w10, lsl 3 134 ldr x11, [x11] 135 add w10, w10, 64 136 and x9, x9, x12 137 lsl x16, x14, x10 138 asr x11, x11, x15 139 asr x14, x14, x15 140 lsl x10, x9, x10 141 orr x0, x11, x16 142 orr x1, x10, x14 143 b L(1) 144L(16): 145 mov w13, -8 146 mov x14, 2 147 sub w9, w9, $65 148 lsl w15, w10, 3 149 ldr x12, [x11, 8] 150 lsl x9, x14, x9 151 mul w10, w13, w10 152 sub x9, x9, $1 153 ldr x11, [x11] 154 add w10, w10, 64 155 and x9, x9, x12 156 asr x11, x11, x15 157 lsl x9, x9, x10 158 orr x0, x9, x11 159 b L(1) 160L(36): 161 mov w13, -4 162 mov x14, 2 163 sub w9, w9, $65 164 lsl w15, w10, 3 165 ldr x12, [x11, 8] 166 lsl x9, x14, x9 167 mul w10, w13, w10 168 sub x9, x9, $1 169 ldr x11, [x11] 170 add w10, w10, 32 171 and x9, x9, x12 172 asr x1, x9, x15 173 lsl x9, x9, x10 174 asr x11, x11, x15 175 lsl x9, x9, x10 176 orr x0, x11, x9 177 b L(1) 178 FUNEND(callback_receiver) 179 .align 2 180 .p2align 3,,7 181 .global C(callback_get_receiver) 182 DECLARE_FUNCTION(callback_get_receiver) 183FUNBEGIN(callback_get_receiver) 184 adrp x9, PAGE(C(callback_receiver)) 185 add x0, x9, PAGEOFF(C(callback_receiver)) 186 ret 187 FUNEND(callback_get_receiver) 188#if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ 189 .section .note.GNU-stack,"",%progbits 190#endif 191