1#include "asm-arm.h" 2 .arch armv6 3 .eabi_attribute 28, 1 4 .eabi_attribute 20, 1 5 .eabi_attribute 21, 1 6 .eabi_attribute 23, 3 7 .eabi_attribute 24, 1 8 .eabi_attribute 25, 1 9 .eabi_attribute 26, 1 10 .eabi_attribute 30, 2 11 .eabi_attribute 34, 1 12 .eabi_attribute 18, 4 13 .text 14 .align 2 15 .global C(callback_receiver) 16 .syntax unified 17 .arm 18 .fpu vfpv3-d16 19 .type callback_receiver, %function 20FUNBEGIN(callback_receiver) 21 // args = 28, pretend = 0, frame = 176 22 // frame_needed = 1, uses_anonymous_args = 0 23 push {fp, lr} 24 add fp, sp, $4 25 sub sp, sp, $176 26 ldr r2, [fp, $4] 27 mov r3, $0 28 add lr, fp, $28 29 add ip, fp, $44 30 vstr.32 s0, [fp, $-136] 31 vstr.32 s1, [fp, $-132] 32 vstr.32 s2, [fp, $-128] 33 vstr.32 s3, [fp, $-124] 34 vstr.32 s4, [fp, $-120] 35 vstr.32 s5, [fp, $-116] 36 vstr.32 s6, [fp, $-112] 37 vstr.32 s7, [fp, $-108] 38 vstr.32 s8, [fp, $-104] 39 vstr.32 s9, [fp, $-100] 40 vstr.32 s10, [fp, $-96] 41 vstr.32 s11, [fp, $-92] 42 vstr.32 s12, [fp, $-88] 43 vstr.32 s13, [fp, $-84] 44 vstr.32 s14, [fp, $-80] 45 vstr.32 s15, [fp, $-76] 46 vstr.64 d0, [fp, $-68] 47 vstr.64 d1, [fp, $-60] 48 vstr.64 d2, [fp, $-52] 49 vstr.64 d3, [fp, $-44] 50 vstr.64 d4, [fp, $-36] 51 vstr.64 d5, [fp, $-28] 52 vstr.64 d6, [fp, $-20] 53 vstr.64 d7, [fp, $-12] 54 str r3, [fp, $-180] 55 str r3, [fp, $-144] 56 str r3, [fp, $-140] 57 str r3, [fp, $-160] 58 strb r3, [fp, $-156] 59 sub r1, fp, $180 60 str lr, [fp, $-148] 61 ldr r3, [r2] 62 str ip, [fp, $-164] 63 ldr r0, [r2, $4] 64 blx r3 65 ldrb r3, [fp, $-156] // zero_extendqisi2 66 cmp r3, $0 67 beq L(1) 68 cmp r3, $1 69 beq L(25) 70 cmp r3, $2 71 ldrsbeq r0, [fp, $-172] 72 beq L(1) 73 cmp r3, $3 74 beq L(25) 75 cmp r3, $4 76 ldrsheq r0, [fp, $-172] 77 beq L(1) 78 cmp r3, $5 79 ldrheq r0, [fp, $-172] 80 beq L(1) 81 cmp r3, $6 82 beq L(27) 83 cmp r3, $7 84 beq L(27) 85 cmp r3, $8 86 beq L(27) 87 cmp r3, $9 88 beq L(27) 89 sub r2, r3, $10 90 cmp r2, $1 91 bls L(29) 92 cmp r3, $12 93 vldreq.32 s0, [fp, $-172] 94 beq L(1) 95 cmp r3, $13 96 beq L(30) 97 cmp r3, $14 98 beq L(27) 99 cmp r3, $15 100 bne L(1) 101 ldr r3, [fp, $-180] 102 tst r3, $1024 103 beq L(1) 104 ldr r3, [fp, $-152] 105 cmp r3, $1 106 beq L(31) 107 cmp r3, $2 108 ldr r3, [fp, $-160] 109 ldrheq r0, [r3] 110 ldrne r0, [r3] 111L(1): 112 sub sp, fp, $4 113 // sp needed 114 pop {fp, pc} 115L(25): 116 ldrb r0, [fp, $-172] // zero_extendqisi2 117 sub sp, fp, $4 118 // sp needed 119 pop {fp, pc} 120L(27): 121 ldr r0, [fp, $-172] 122 sub sp, fp, $4 123 // sp needed 124 pop {fp, pc} 125L(30): 126 vldr.64 d0, [fp, $-172] 127 b L(1) 128L(29): 129 ldr r0, [fp, $-172] 130 ldr r1, [fp, $-168] 131 b L(1) 132L(31): 133 ldr r3, [fp, $-160] 134 ldrb r0, [r3] // zero_extendqisi2 135 b L(1) 136 FUNEND(callback_receiver) 137 .align 2 138 .global C(callback_get_receiver) 139 .syntax unified 140 .arm 141 .fpu vfpv3-d16 142 .type callback_get_receiver, %function 143FUNBEGIN(callback_get_receiver) 144 // args = 0, pretend = 0, frame = 0 145 // frame_needed = 1, uses_anonymous_args = 0 146 // link register save eliminated. 147 ldr r3, L(34) 148 ldr r2, L(34)+4 149L(PIC0): 150 add r3, pc, r3 151 str fp, [sp, $-4]! 152 add fp, sp, $0 153 ldr r3, [r3, r2] 154 mov r0, r3 155 add sp, fp, $0 156 // sp needed 157 ldr fp, [sp], $4 158 bx lr 159L(35): 160 .align 2 161L(34): 162 .word _GLOBAL_OFFSET_TABLE_-(L(PIC0)+8) 163 .word callback_receiver(GOT) 164 FUNEND(callback_get_receiver) 165#if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ 166 .section .note.GNU-stack,"",%progbits 167#endif 168