GAS LISTING /tmp/ccV11xpY.s page 1 1 .file "funopen.c" 2 __SP_H__ = 0x3e 3 __SP_L__ = 0x3d 4 __SREG__ = 0x3f 5 __RAMPZ__ = 0x3b 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 8 .section .text.UserDevRead,"ax",@progbits 9 .type UserDevRead, @function 10 UserDevRead: 11 /* prologue: function */ 12 /* frame size = 0 */ 13 /* stack size = 0 */ 14 .L__stack_usage = 0 15 0000 DC01 movw r26,r24 16 0002 ED91 ld r30,X+ 17 0004 FC91 ld r31,X 18 0006 1197 sbiw r26,1 19 0008 0784 ldd __tmp_reg__,Z+15 20 000a F089 ldd r31,Z+16 21 000c E02D mov r30,__tmp_reg__ 22 000e 0190 ld __tmp_reg__,Z+ 23 0010 F081 ld r31,Z 24 0012 E02D mov r30,__tmp_reg__ 25 0014 1296 adiw r26,2 26 0016 8D91 ld r24,X+ 27 0018 9C91 ld r25,X 28 001a 1397 sbiw r26,2+1 29 001c 1994 eijmp 30 .size UserDevRead, .-UserDevRead 31 .section .text.UserDevWrite,"ax",@progbits 32 .type UserDevWrite, @function 33 UserDevWrite: 34 /* prologue: function */ 35 /* frame size = 0 */ 36 /* stack size = 0 */ 37 .L__stack_usage = 0 38 0000 DC01 movw r26,r24 39 0002 ED91 ld r30,X+ 40 0004 FC91 ld r31,X 41 0006 1197 sbiw r26,1 42 0008 0784 ldd __tmp_reg__,Z+15 43 000a F089 ldd r31,Z+16 44 000c E02D mov r30,__tmp_reg__ 45 000e 0280 ldd __tmp_reg__,Z+2 46 0010 F381 ldd r31,Z+3 47 0012 E02D mov r30,__tmp_reg__ 48 0014 1296 adiw r26,2 49 0016 8D91 ld r24,X+ 50 0018 9C91 ld r25,X 51 001a 1397 sbiw r26,2+1 52 001c 1994 eijmp 53 .size UserDevWrite, .-UserDevWrite 54 .section .text.UserDevClose,"ax",@progbits 55 .type UserDevClose, @function 56 UserDevClose: 57 0000 0F93 push r16 GAS LISTING /tmp/ccV11xpY.s page 2 58 0002 1F93 push r17 59 0004 CF93 push r28 60 0006 DF93 push r29 61 /* prologue: function */ 62 /* frame size = 0 */ 63 /* stack size = 4 */ 64 .L__stack_usage = 4 65 0008 EC01 movw r28,r24 66 000a E881 ld r30,Y 67 000c F981 ldd r31,Y+1 68 000e 0784 ldd __tmp_reg__,Z+15 69 0010 F089 ldd r31,Z+16 70 0012 E02D mov r30,__tmp_reg__ 71 0014 0680 ldd __tmp_reg__,Z+6 72 0016 F781 ldd r31,Z+7 73 0018 E02D mov r30,__tmp_reg__ 74 001a 8A81 ldd r24,Y+2 75 001c 9B81 ldd r25,Y+3 76 001e 1995 eicall 77 0020 8C01 movw r16,r24 78 0022 E881 ld r30,Y 79 0024 F981 ldd r31,Y+1 80 0026 8785 ldd r24,Z+15 81 0028 9089 ldd r25,Z+16 82 002a 0E94 0000 call free 83 002e 8881 ld r24,Y 84 0030 9981 ldd r25,Y+1 85 0032 0E94 0000 call free 86 0036 CE01 movw r24,r28 87 0038 0E94 0000 call free 88 003c C801 movw r24,r16 89 /* epilogue start */ 90 003e DF91 pop r29 91 0040 CF91 pop r28 92 0042 1F91 pop r17 93 0044 0F91 pop r16 94 0046 0895 ret 95 .size UserDevClose, .-UserDevClose 96 .section .text.UserDevIoCtl,"ax",@progbits 97 .type UserDevIoCtl, @function 98 UserDevIoCtl: 99 /* prologue: function */ 100 /* frame size = 0 */ 101 /* stack size = 0 */ 102 .L__stack_usage = 0 103 0000 FA01 movw r30,r20 104 0002 6332 cpi r22,35 105 0004 7141 sbci r23,17 106 0006 01F4 brne .L5 107 0008 A081 ld r26,Z 108 000a B181 ldd r27,Z+1 109 000c 2481 ldd r18,Z+4 110 000e 3581 ldd r19,Z+5 111 0010 0280 ldd __tmp_reg__,Z+2 112 0012 F381 ldd r31,Z+3 113 0014 E02D mov r30,__tmp_reg__ 114 0016 4081 ld r20,Z GAS LISTING /tmp/ccV11xpY.s page 3 115 0018 5181 ldd r21,Z+1 116 001a 6281 ldd r22,Z+2 117 001c 7381 ldd r23,Z+3 118 001e ED91 ld r30,X+ 119 0020 FC91 ld r31,X 120 0022 1197 sbiw r26,1 121 0024 0784 ldd __tmp_reg__,Z+15 122 0026 F089 ldd r31,Z+16 123 0028 E02D mov r30,__tmp_reg__ 124 002a 0480 ldd __tmp_reg__,Z+4 125 002c F581 ldd r31,Z+5 126 002e E02D mov r30,__tmp_reg__ 127 0030 1296 adiw r26,2 128 0032 8D91 ld r24,X+ 129 0034 9C91 ld r25,X 130 0036 1397 sbiw r26,2+1 131 0038 1995 eicall 132 .L5: 133 003a 8FEF ldi r24,lo8(-1) 134 003c 9FEF ldi r25,lo8(-1) 135 003e 0895 ret 136 .size UserDevIoCtl, .-UserDevIoCtl 137 .section .text.funopen,"ax",@progbits 138 .global funopen 139 .type funopen, @function 140 funopen: 141 0000 2F92 push r2 142 0002 3F92 push r3 143 0004 4F92 push r4 144 0006 5F92 push r5 145 0008 6F92 push r6 146 000a 7F92 push r7 147 000c 8F92 push r8 148 000e 9F92 push r9 149 0010 AF92 push r10 150 0012 BF92 push r11 151 0014 CF92 push r12 152 0016 DF92 push r13 153 0018 EF92 push r14 154 001a FF92 push r15 155 001c 0F93 push r16 156 001e 1F93 push r17 157 0020 CF93 push r28 158 0022 DF93 push r29 159 0024 00D0 rcall . 160 0026 00D0 rcall . 161 0028 CDB7 in r28,__SP_L__ 162 002a DEB7 in r29,__SP_H__ 163 /* prologue: function */ 164 /* frame size = 6 */ 165 /* stack size = 24 */ 166 .L__stack_usage = 24 167 002c 5C01 movw r10,r24 168 002e 4B01 movw r8,r22 169 0030 1A01 movw r2,r20 170 0032 E0E0 ldi r30,lo8(__iob) 171 0034 F0E0 ldi r31,hi8(__iob) GAS LISTING /tmp/ccV11xpY.s page 4 172 0036 412C mov r4,__zero_reg__ 173 0038 512C mov r5,__zero_reg__ 174 .L8: 175 003a C190 ld r12,Z+ 176 003c D190 ld r13,Z+ 177 003e C114 cp r12,__zero_reg__ 178 0040 D104 cpc r13,__zero_reg__ 179 0042 01F0 breq .L31 180 0044 8FEF ldi r24,-1 181 0046 481A sub r4,r24 182 0048 580A sbc r5,r24 183 004a 98E0 ldi r25,8 184 004c 4916 cp r4,r25 185 004e 5104 cpc r5,__zero_reg__ 186 0050 01F4 brne .L8 187 0052 87E1 ldi r24,lo8(23) 188 0054 90E0 ldi r25,0 189 0056 9093 0000 sts errno+1,r25 190 005a 8093 0000 sts errno,r24 191 005e C12C mov r12,__zero_reg__ 192 0060 D12C mov r13,__zero_reg__ 193 0062 00C0 rjmp .L9 194 .L31: 195 0064 E0E0 ldi r30,lo8(__fds) 196 0066 F0E0 ldi r31,hi8(__fds) 197 0068 1E82 std Y+6,__zero_reg__ 198 006a 1D82 std Y+5,__zero_reg__ 199 .L12: 200 006c 8191 ld r24,Z+ 201 006e 9191 ld r25,Z+ 202 0070 892B or r24,r25 203 0072 01F0 breq .L32 204 0074 AD81 ldd r26,Y+5 205 0076 BE81 ldd r27,Y+6 206 0078 1196 adiw r26,1 207 007a BE83 std Y+6,r27 208 007c AD83 std Y+5,r26 209 007e 1897 sbiw r26,8 210 0080 01F4 brne .L12 211 0082 88E1 ldi r24,lo8(24) 212 0084 90E0 ldi r25,0 213 0086 00C0 rjmp .L30 214 .L32: 215 0088 67E0 ldi r22,lo8(7) 216 008a 70E0 ldi r23,0 217 008c 81E0 ldi r24,lo8(1) 218 008e 90E0 ldi r25,0 219 0090 2B83 std Y+3,r18 220 0092 3C83 std Y+4,r19 221 0094 0E94 0000 call calloc 222 0098 7C01 movw r14,r24 223 009a 440C lsl r4 224 009c 551C rol r5 225 009e F201 movw r30,r4 226 00a0 E050 subi r30,lo8(-(__iob)) 227 00a2 F040 sbci r31,hi8(-(__iob)) 228 00a4 9183 std Z+1,r25 GAS LISTING /tmp/ccV11xpY.s page 5 229 00a6 8083 st Z,r24 230 00a8 84E0 ldi r24,lo8(4) 231 00aa 90E0 ldi r25,0 232 00ac 0E94 0000 call malloc 233 00b0 3C01 movw r6,r24 234 00b2 65E2 ldi r22,lo8(37) 235 00b4 70E0 ldi r23,0 236 00b6 81E0 ldi r24,lo8(1) 237 00b8 90E0 ldi r25,0 238 00ba 0E94 0000 call calloc 239 00be AC01 movw r20,r24 240 00c0 88E0 ldi r24,lo8(8) 241 00c2 90E0 ldi r25,0 242 00c4 4983 std Y+1,r20 243 00c6 5A83 std Y+2,r21 244 00c8 0E94 0000 call malloc 245 00cc FC01 movw r30,r24 246 00ce 2B81 ldd r18,Y+3 247 00d0 3C81 ldd r19,Y+4 248 00d2 4981 ldd r20,Y+1 249 00d4 5A81 ldd r21,Y+2 250 00d6 E114 cp r14,__zero_reg__ 251 00d8 F104 cpc r15,__zero_reg__ 252 00da 01F4 brne .+2 253 00dc 00C0 rjmp .L14 254 00de 6114 cp r6,__zero_reg__ 255 00e0 7104 cpc r7,__zero_reg__ 256 00e2 01F0 breq .L14 257 00e4 4115 cp r20,__zero_reg__ 258 00e6 5105 cpc r21,__zero_reg__ 259 00e8 01F0 breq .L14 260 00ea 0097 sbiw r24,0 261 00ec 01F0 breq .L14 262 00ee 9182 std Z+1,r9 263 00f0 8082 st Z,r8 264 00f2 3382 std Z+3,r3 265 00f4 2282 std Z+2,r2 266 00f6 3583 std Z+5,r19 267 00f8 2483 std Z+4,r18 268 00fa 1783 std Z+7,r17 269 00fc 0683 std Z+6,r16 270 00fe DA01 movw r26,r20 271 0100 5096 adiw r26,15+1 272 0102 9C93 st X,r25 273 0104 8E93 st -X,r24 274 0106 1F97 sbiw r26,15 275 0108 80E0 ldi r24,lo8(gs(UserDevIoCtl)) 276 010a 90E0 ldi r25,hi8(gs(UserDevIoCtl)) 277 010c 5696 adiw r26,21+1 278 010e 9C93 st X,r25 279 0110 8E93 st -X,r24 280 0112 5597 sbiw r26,21 281 0114 80E0 ldi r24,lo8(gs(UserDevRead)) 282 0116 90E0 ldi r25,hi8(gs(UserDevRead)) 283 0118 5896 adiw r26,23+1 284 011a 9C93 st X,r25 285 011c 8E93 st -X,r24 GAS LISTING /tmp/ccV11xpY.s page 6 286 011e 5797 sbiw r26,23 287 0120 80E0 ldi r24,lo8(gs(UserDevWrite)) 288 0122 90E0 ldi r25,hi8(gs(UserDevWrite)) 289 0124 5A96 adiw r26,25+1 290 0126 9C93 st X,r25 291 0128 8E93 st -X,r24 292 012a 5997 sbiw r26,25 293 012c 80E0 ldi r24,lo8(gs(UserDevClose)) 294 012e 90E0 ldi r25,hi8(gs(UserDevClose)) 295 0130 9096 adiw r26,31+1 296 0132 9C93 st X,r25 297 0134 8E93 st -X,r24 298 0136 5F97 sbiw r26,31 299 0138 F301 movw r30,r6 300 013a 5183 std Z+1,r21 301 013c 4083 st Z,r20 302 013e B382 std Z+3,r11 303 0140 A282 std Z+2,r10 304 0142 D701 movw r26,r14 305 0144 6D92 st X+,r6 306 0146 7C92 st X,r7 307 0148 8D81 ldd r24,Y+5 308 014a 9E81 ldd r25,Y+6 309 014c 880F lsl r24 310 014e 991F rol r25 311 0150 8050 subi r24,lo8(-(__fds)) 312 0152 9040 sbci r25,hi8(-(__fds)) 313 0154 FC01 movw r30,r24 314 0156 7182 std Z+1,r7 315 0158 6082 st Z,r6 316 015a 6701 movw r12,r14 317 015c 00C0 rjmp .L9 318 .L14: 319 015e C701 movw r24,r14 320 0160 0E94 0000 call free 321 0164 F201 movw r30,r4 322 0166 E050 subi r30,lo8(-(__iob)) 323 0168 F040 sbci r31,hi8(-(__iob)) 324 016a 1182 std Z+1,__zero_reg__ 325 016c 1082 st Z,__zero_reg__ 326 016e 8CE0 ldi r24,lo8(12) 327 0170 90E0 ldi r25,0 328 .L30: 329 0172 9093 0000 sts errno+1,r25 330 0176 8093 0000 sts errno,r24 331 .L9: 332 017a C601 movw r24,r12 333 /* epilogue start */ 334 017c 2696 adiw r28,6 335 017e 0FB6 in __tmp_reg__,__SREG__ 336 0180 F894 cli 337 0182 DEBF out __SP_H__,r29 338 0184 0FBE out __SREG__,__tmp_reg__ 339 0186 CDBF out __SP_L__,r28 340 0188 DF91 pop r29 341 018a CF91 pop r28 342 018c 1F91 pop r17 GAS LISTING /tmp/ccV11xpY.s page 7 343 018e 0F91 pop r16 344 0190 FF90 pop r15 345 0192 EF90 pop r14 346 0194 DF90 pop r13 347 0196 CF90 pop r12 348 0198 BF90 pop r11 349 019a AF90 pop r10 350 019c 9F90 pop r9 351 019e 8F90 pop r8 352 01a0 7F90 pop r7 353 01a2 6F90 pop r6 354 01a4 5F90 pop r5 355 01a6 4F90 pop r4 356 01a8 3F90 pop r3 357 01aa 2F90 pop r2 358 01ac 0895 ret 359 .size funopen, .-funopen 360 .ident "GCC: (GNU) 5.3.0" GAS LISTING /tmp/ccV11xpY.s page 8 DEFINED SYMBOLS *ABS*:0000000000000000 funopen.c /tmp/ccV11xpY.s:2 *ABS*:000000000000003e __SP_H__ /tmp/ccV11xpY.s:3 *ABS*:000000000000003d __SP_L__ /tmp/ccV11xpY.s:4 *ABS*:000000000000003f __SREG__ /tmp/ccV11xpY.s:5 *ABS*:000000000000003b __RAMPZ__ /tmp/ccV11xpY.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/ccV11xpY.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/ccV11xpY.s:10 .text.UserDevRead:0000000000000000 UserDevRead /tmp/ccV11xpY.s:33 .text.UserDevWrite:0000000000000000 UserDevWrite /tmp/ccV11xpY.s:56 .text.UserDevClose:0000000000000000 UserDevClose /tmp/ccV11xpY.s:98 .text.UserDevIoCtl:0000000000000000 UserDevIoCtl /tmp/ccV11xpY.s:140 .text.funopen:0000000000000000 funopen UNDEFINED SYMBOLS free __iob errno __fds calloc malloc