GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 1 1 .file "main.c" 2 __SREG__ = 0x3f 3 __SP_H__ = 0x3e 4 __SP_L__ = 0x3d 5 __CCP__ = 0x34 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 8 .text 9 .type writeFlashPage, @function 10 writeFlashPage: 11 /* prologue: function */ 12 /* frame size = 0 */ 13 /* stack size = 0 */ 14 .L__stack_usage = 0 15 /* #APP */ 16 ; 124 "main.c" 1 17 0000 F894 cli 18 ; 0 "" 2 19 /* #NOAPP */ 20 0002 E091 0000 lds r30,currentAddress 21 0006 F091 0000 lds r31,currentAddress+1 22 000a 3297 sbiw r30,2 23 000c 85E0 ldi r24,lo8(5) 24 /* #APP */ 25 ; 125 "main.c" 1 26 000e 8093 5700 sts 87, r24 27 0012 E895 spm 28 29 ; 0 "" 2 30 /* #NOAPP */ 31 .L2: 32 0014 07B6 in __tmp_reg__,87-32 33 0016 00FC sbrc __tmp_reg__,0 34 0018 00C0 rjmp .L2 35 /* #APP */ 36 ; 127 "main.c" 1 37 001a 7894 sei 38 ; 0 "" 2 39 /* epilogue start */ 40 /* #NOAPP */ 41 001c 0895 ret 42 .size writeFlashPage, .-writeFlashPage 43 .type writeWordToPageBuffer, @function 44 writeWordToPageBuffer: 45 /* prologue: function */ 46 /* frame size = 0 */ 47 /* stack size = 0 */ 48 .L__stack_usage = 0 49 001e 2091 0000 lds r18,currentAddress 50 0022 3091 0000 lds r19,currentAddress+1 51 0026 2115 cp r18,__zero_reg__ 52 0028 3105 cpc r19,__zero_reg__ 53 002a 01F4 brne .+2 54 002c 00C0 rjmp .L4 55 002e 2430 cpi r18,4 56 0030 3105 cpc r19,__zero_reg__ 57 0032 01F0 breq .L9 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 2 58 0034 44E1 ldi r20,hi8(5372) 59 0036 2C3F cpi r18,lo8(5372) 60 0038 3407 cpc r19,r20 61 003a 01F4 brne .L6 62 003c 8091 0000 lds r24,vectorTemp 63 0040 9091 0000 lds r25,vectorTemp+1 64 0044 8E57 subi r24,lo8(-(1410)) 65 0046 9A4F sbci r25,hi8(-(1410)) 66 0048 00C0 rjmp .L7 67 .L6: 68 004a 44E1 ldi r20,hi8(5374) 69 004c 2E3F cpi r18,lo8(5374) 70 004e 3407 cpc r19,r20 71 0050 01F4 brne .L7 72 0052 8091 0000 lds r24,vectorTemp+2 73 0056 9091 0000 lds r25,vectorTemp+2+1 74 005a 8D57 subi r24,lo8(-(1411)) 75 005c 9A4F sbci r25,hi8(-(1411)) 76 005e 00C0 rjmp .L7 77 .L9: 78 0060 8FE7 ldi r24,lo8(-13697) 79 0062 9AEC ldi r25,hi8(-13697) 80 .L7: 81 /* #APP */ 82 ; 161 "main.c" 1 83 0064 F894 cli 84 ; 0 "" 2 85 /* #NOAPP */ 86 0066 E091 0000 lds r30,currentAddress 87 006a F091 0000 lds r31,currentAddress+1 88 006e 21E0 ldi r18,lo8(1) 89 /* #APP */ 90 ; 162 "main.c" 1 91 0070 0C01 movw r0, r24 92 0072 2093 5700 sts 87, r18 93 0076 E895 spm 94 0078 1124 clr r1 95 96 ; 0 "" 2 97 ; 163 "main.c" 1 98 007a 7894 sei 99 ; 0 "" 2 100 /* #NOAPP */ 101 007c 4091 0000 lds r20,currentAddress 102 0080 5091 0000 lds r21,currentAddress+1 103 0084 FA01 movw r30,r20 104 /* #APP */ 105 ; 168 "main.c" 1 106 0086 2591 lpm r18, Z+ 107 0088 3491 lpm r19, Z 108 109 ; 0 "" 2 110 /* #NOAPP */ 111 008a 2823 and r18,r24 112 008c 3923 and r19,r25 113 008e 2817 cp r18,r24 114 0090 3907 cpc r19,r25 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 3 115 0092 01F0 breq .L8 116 0094 8091 0000 lds r24,events 117 0098 8160 ori r24,lo8(1) 118 009a 8093 0000 sts events,r24 119 .L8: 120 009e 4E5F subi r20,lo8(-(2)) 121 00a0 5F4F sbci r21,hi8(-(2)) 122 00a2 5093 0000 sts currentAddress+1,r21 123 00a6 4093 0000 sts currentAddress,r20 124 /* epilogue start */ 125 00aa 0895 ret 126 .L4: 127 00ac 81E1 ldi r24,lo8(17) 128 /* #APP */ 129 ; 159 "main.c" 1 130 00ae 8093 5700 sts 87, r24 131 00b2 E895 spm 132 133 ; 0 "" 2 134 /* #NOAPP */ 135 00b4 00C0 rjmp .L9 136 .size writeWordToPageBuffer, .-writeWordToPageBuffer 137 .type fillFlashWithVectors, @function 138 fillFlashWithVectors: 139 00b6 CF93 push r28 140 00b8 DF93 push r29 141 /* prologue: function */ 142 /* frame size = 0 */ 143 /* stack size = 2 */ 144 .L__stack_usage = 2 145 00ba C091 0000 lds r28,currentAddress 146 00be D091 0000 lds r29,currentAddress+1 147 00c2 CF73 andi r28,lo8(63) 148 00c4 D070 andi r29,hi8(63) 149 .L11: 150 00c6 8FEF ldi r24,lo8(-1) 151 00c8 9FEF ldi r25,hi8(-1) 152 00ca 00D0 rcall writeWordToPageBuffer 153 00cc 2296 adiw r28,2 154 00ce C034 cpi r28,64 155 00d0 D105 cpc r29,__zero_reg__ 156 00d2 04F0 brlt .L11 157 00d4 00D0 rcall writeFlashPage 158 /* epilogue start */ 159 00d6 DF91 pop r29 160 00d8 CF91 pop r28 161 00da 0895 ret 162 .size fillFlashWithVectors, .-fillFlashWithVectors 163 .section .init3,"ax",@progbits 164 .global PushMagicWord 165 .type PushMagicWord, @function 166 PushMagicWord: 167 /* prologue: naked */ 168 /* frame size = 0 */ 169 /* stack size = 0 */ 170 .L__stack_usage = 0 171 /* #APP */ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 4 172 ; 281 "main.c" 1 173 0000 00EB ldi r16, 0xB0 174 ; 0 "" 2 175 ; 282 "main.c" 1 176 0002 0F93 push r16 177 ; 0 "" 2 178 ; 283 "main.c" 1 179 0004 07E0 ldi r16, 0x07 180 ; 0 "" 2 181 ; 284 "main.c" 1 182 0006 0F93 push r16 183 ; 0 "" 2 184 /* epilogue start */ 185 /* #NOAPP */ 186 .size PushMagicWord, .-PushMagicWord 187 .text 188 .global main 189 .type main, @function 190 main: 191 00dc DF93 push r29 192 00de CF93 push r28 193 00e0 0F92 push __tmp_reg__ 194 00e2 CDB7 in r28,__SP_L__ 195 00e4 DEB7 in r29,__SP_H__ 196 /* prologue: function */ 197 /* frame size = 1 */ 198 /* stack size = 3 */ 199 .L__stack_usage = 3 200 00e6 88E1 ldi r24,lo8(24) 201 /* #APP */ 202 ; 327 "main.c" 1 203 00e8 0FB6 in __tmp_reg__, __SREG__ 204 00ea F894 cli 205 00ec 81BD out 33, r24 206 00ee 11BC out 33, __zero_reg__ 207 00f0 0FBE out __SREG__,__tmp_reg__ 208 209 ; 0 "" 2 210 /* #NOAPP */ 211 00f2 E0E0 ldi r30,lo8(0) 212 00f4 F0E0 ldi r31,hi8(0) 213 /* #APP */ 214 ; 302 "main.c" 1 215 00f6 8591 lpm r24, Z+ 216 00f8 9491 lpm r25, Z 217 218 ; 0 "" 2 219 /* #NOAPP */ 220 00fa 2AEC ldi r18,hi8(-13697) 221 00fc 8F37 cpi r24,lo8(-13697) 222 00fe 9207 cpc r25,r18 223 0100 01F4 brne .L14 224 0102 E4E0 ldi r30,lo8(4) 225 0104 F0E0 ldi r31,hi8(4) 226 /* #APP */ 227 ; 303 "main.c" 1 228 0106 8591 lpm r24, Z+ GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 5 229 0108 9491 lpm r25, Z 230 231 ; 0 "" 2 232 /* #NOAPP */ 233 010a 3AEC ldi r19,hi8(-13697) 234 010c 8F37 cpi r24,lo8(-13697) 235 010e 9307 cpc r25,r19 236 0110 01F0 breq .L15 237 .L14: 238 0112 00D0 rcall fillFlashWithVectors 239 .L15: 240 0114 1092 0000 sts currentAddress+1,__zero_reg__ 241 0118 1092 0000 sts currentAddress,__zero_reg__ 242 011c 87B3 in r24,55-32 243 011e 8360 ori r24,lo8(3) 244 0120 87BB out 55-32,r24 245 0122 C09A sbi 56-32,0 246 0124 C198 cbi 56-32,1 247 0126 AC9A sbi 53-32,4 248 0128 8BB7 in r24,91-32 249 012a 8062 ori r24,lo8(32) 250 012c 8BBF out 91-32,r24 251 012e BB9A sbi 55-32,3 252 0130 8FE4 ldi r24,lo8(1649999) 253 0132 9DE2 ldi r25,hi8(1649999) 254 0134 A9E1 ldi r26,hlo8(1649999) 255 0136 8150 1:subi r24,1 256 0138 9040 sbci r25,0 257 013a A040 sbci r26,0 258 013c 01F4 brne 1b 259 013e 00C0 rjmp . 260 0140 0000 nop 261 0142 BB98 cbi 55-32,3 262 /* #APP */ 263 ; 295 "main.c" 1 264 0144 7894 sei 265 ; 0 "" 2 266 /* #NOAPP */ 267 0146 EE24 clr r14 268 0148 FF24 clr r15 269 .L63: 270 014a 2091 0000 lds r18,usbRxLen 271 014e 2350 subi r18,lo8(-(-3)) 272 0150 27FD sbrc r18,7 273 0152 00C0 rjmp .L16 274 0154 8091 0000 lds r24,usbInputBufOffset 275 0158 ECE0 ldi r30,lo8(12) 276 015a F0E0 ldi r31,hi8(12) 277 015c E81B sub r30,r24 278 015e F109 sbc r31,__zero_reg__ 279 0160 E050 subi r30,lo8(-(usbRxBuf)) 280 0162 F040 sbci r31,hi8(-(usbRxBuf)) 281 0164 8091 0000 lds r24,usbRxToken 282 0168 8D32 cpi r24,lo8(45) 283 016a 01F0 breq .+2 284 016c 00C0 rjmp .L17 285 016e 2830 cpi r18,lo8(8) GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 6 286 0170 01F0 breq .+2 287 0172 00C0 rjmp .L18 288 0174 83EC ldi r24,lo8(-61) 289 0176 8093 0000 sts usbTxBuf,r24 290 017a 8AE5 ldi r24,lo8(90) 291 017c 8093 0000 sts usbTxLen,r24 292 0180 1092 0000 sts usbMsgFlags,__zero_reg__ 293 0184 9081 ld r25,Z 294 0186 9076 andi r25,lo8(96) 295 0188 8181 ldd r24,Z+1 296 018a 9923 tst r25 297 018c 01F0 breq .L19 298 018e 8823 tst r24 299 0190 01F4 brne .L20 300 0192 80E0 ldi r24,lo8(replyBuffer.1756) 301 0194 90E0 ldi r25,hi8(replyBuffer.1756) 302 0196 9093 0000 sts usbMsgPtr+1,r25 303 019a 8093 0000 sts usbMsgPtr,r24 304 019e 25E0 ldi r18,lo8(5) 305 01a0 00C0 rjmp .L25 306 .L20: 307 01a2 8130 cpi r24,lo8(1) 308 01a4 01F4 brne .L22 309 01a6 C098 cbi 56-32,0 310 01a8 8281 ldd r24,Z+2 311 01aa 8093 0000 sts writeLength,r24 312 01ae 8481 ldd r24,Z+4 313 01b0 9581 ldd r25,Z+5 314 01b2 9093 0000 sts currentAddress+1,r25 315 01b6 8093 0000 sts currentAddress,r24 316 01ba 8081 ld r24,Z 317 01bc 87FD sbrc r24,7 318 01be 00C0 rjmp .L23 319 01c0 2FEF ldi r18,lo8(-1) 320 01c2 00C0 rjmp .L24 321 .L22: 322 01c4 8091 0000 lds r24,events 323 01c8 8460 ori r24,lo8(4) 324 01ca 8093 0000 sts events,r24 325 01ce 20E0 ldi r18,lo8(0) 326 01d0 00C0 rjmp .L25 327 .L19: 328 01d2 9281 ldd r25,Z+2 329 01d4 1092 0000 sts usbTxBuf+9,__zero_reg__ 330 01d8 8823 tst r24 331 01da 01F4 brne .L26 332 01dc 1092 0000 sts usbTxBuf+10,__zero_reg__ 333 01e0 80E0 ldi r24,lo8(usbTxBuf+9) 334 01e2 90E0 ldi r25,hi8(usbTxBuf+9) 335 01e4 22E0 ldi r18,lo8(2) 336 01e6 00C0 rjmp .L27 337 .L26: 338 01e8 8530 cpi r24,lo8(5) 339 01ea 01F4 brne .L28 340 01ec 9093 0000 sts usbNewDeviceAddr,r25 341 01f0 00C0 rjmp .L70 342 .L28: GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 7 343 01f2 8630 cpi r24,lo8(6) 344 01f4 01F4 brne .L29 345 01f6 8381 ldd r24,Z+3 346 01f8 8130 cpi r24,lo8(1) 347 01fa 01F4 brne .L30 348 01fc 80E0 ldi r24,lo8(usbDescriptorDevice) 349 01fe 90E0 ldi r25,hi8(usbDescriptorDevice) 350 0200 00C0 rjmp .L69 351 .L30: 352 0202 8230 cpi r24,lo8(2) 353 0204 01F4 brne .L32 354 0206 80E0 ldi r24,lo8(usbDescriptorConfiguration) 355 0208 90E0 ldi r25,hi8(usbDescriptorConfiguration) 356 .L69: 357 020a 9093 0000 sts usbMsgPtr+1,r25 358 020e 8093 0000 sts usbMsgPtr,r24 359 0212 22E1 ldi r18,lo8(18) 360 0214 00C0 rjmp .L31 361 .L32: 362 0216 8330 cpi r24,lo8(3) 363 0218 01F4 brne .L65 364 021a 9923 tst r25 365 021c 01F4 brne .L33 366 021e 80E0 ldi r24,lo8(usbDescriptorString0) 367 0220 90E0 ldi r25,hi8(usbDescriptorString0) 368 0222 9093 0000 sts usbMsgPtr+1,r25 369 0226 8093 0000 sts usbMsgPtr,r24 370 022a 24E0 ldi r18,lo8(4) 371 022c 00C0 rjmp .L31 372 .L33: 373 022e 9130 cpi r25,lo8(1) 374 0230 01F4 brne .L34 375 0232 80E0 ldi r24,lo8(usbDescriptorStringVendor) 376 0234 90E0 ldi r25,hi8(usbDescriptorStringVendor) 377 0236 9093 0000 sts usbMsgPtr+1,r25 378 023a 8093 0000 sts usbMsgPtr,r24 379 023e 22E2 ldi r18,lo8(34) 380 0240 00C0 rjmp .L31 381 .L34: 382 0242 9230 cpi r25,lo8(2) 383 0244 01F4 brne .L65 384 0246 80E0 ldi r24,lo8(usbDescriptorStringDevice) 385 0248 90E0 ldi r25,hi8(usbDescriptorStringDevice) 386 024a 9093 0000 sts usbMsgPtr+1,r25 387 024e 8093 0000 sts usbMsgPtr,r24 388 0252 2CE0 ldi r18,lo8(12) 389 0254 00C0 rjmp .L31 390 .L65: 391 0256 20E0 ldi r18,lo8(0) 392 .L31: 393 0258 80E4 ldi r24,lo8(64) 394 025a 8093 0000 sts usbMsgFlags,r24 395 025e 00C0 rjmp .L25 396 .L29: 397 0260 8830 cpi r24,lo8(8) 398 0262 01F0 breq .L66 399 0264 8930 cpi r24,lo8(9) GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 8 400 0266 01F4 brne .L36 401 0268 9093 0000 sts usbConfiguration,r25 402 026c 00C0 rjmp .L70 403 .L36: 404 026e 8A30 cpi r24,lo8(10) 405 0270 01F0 breq .L67 406 .L70: 407 0272 80E0 ldi r24,lo8(usbTxBuf+9) 408 0274 90E0 ldi r25,hi8(usbTxBuf+9) 409 0276 20E0 ldi r18,lo8(0) 410 0278 00C0 rjmp .L27 411 .L66: 412 027a 80E0 ldi r24,lo8(usbConfiguration) 413 027c 90E0 ldi r25,hi8(usbConfiguration) 414 027e 00C0 rjmp .L71 415 .L67: 416 0280 80E0 ldi r24,lo8(usbTxBuf+9) 417 0282 90E0 ldi r25,hi8(usbTxBuf+9) 418 .L71: 419 0284 21E0 ldi r18,lo8(1) 420 .L27: 421 0286 9093 0000 sts usbMsgPtr+1,r25 422 028a 8093 0000 sts usbMsgPtr,r24 423 028e 00C0 rjmp .L25 424 .L23: 425 0290 2681 ldd r18,Z+6 426 .L24: 427 0292 80E8 ldi r24,lo8(-128) 428 0294 8093 0000 sts usbMsgFlags,r24 429 0298 00C0 rjmp .L37 430 .L25: 431 029a 8781 ldd r24,Z+7 432 029c 8823 tst r24 433 029e 01F4 brne .L37 434 02a0 8681 ldd r24,Z+6 435 02a2 8217 cp r24,r18 436 02a4 00F4 brsh .L37 437 02a6 282F mov r18,r24 438 .L37: 439 02a8 2093 0000 sts usbMsgLen,r18 440 02ac 00C0 rjmp .L18 441 .L17: 442 02ae 8091 0000 lds r24,usbMsgFlags 443 02b2 87FF sbrs r24,7 444 02b4 00C0 rjmp .L18 445 02b6 8091 0000 lds r24,writeLength 446 02ba 821B sub r24,r18 447 02bc 8093 0000 sts writeLength,r24 448 02c0 8F01 movw r16,r30 449 .L42: 450 02c2 8091 0000 lds r24,currentAddress 451 02c6 9091 0000 lds r25,currentAddress+1 452 02ca 0097 sbiw r24,0 453 02cc 01F4 brne .L38 454 02ce D801 movw r26,r16 455 02d0 8D91 ld r24,X+ 456 02d2 9C91 ld r25,X GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 9 457 02d4 1197 sbiw r26,1 458 02d6 9093 0000 sts vectorTemp+1,r25 459 02da 8093 0000 sts vectorTemp,r24 460 02de 00C0 rjmp .L39 461 .L38: 462 02e0 8430 cpi r24,4 463 02e2 9105 cpc r25,__zero_reg__ 464 02e4 01F4 brne .L40 465 02e6 F801 movw r30,r16 466 02e8 8081 ld r24,Z 467 02ea 9181 ldd r25,Z+1 468 02ec 9093 0000 sts vectorTemp+2+1,r25 469 02f0 8093 0000 sts vectorTemp+2,r24 470 02f4 00C0 rjmp .L39 471 .L40: 472 02f6 F4E1 ldi r31,hi8(5370) 473 02f8 8A3F cpi r24,lo8(5370) 474 02fa 9F07 cpc r25,r31 475 02fc 00F0 brlo .L39 476 02fe 81E1 ldi r24,lo8(17) 477 /* #APP */ 478 ; 257 "main.c" 1 479 0300 8093 5700 sts 87, r24 480 0304 E895 spm 481 482 ; 0 "" 2 483 /* #NOAPP */ 484 0306 00C0 rjmp .L41 485 .L39: 486 0308 D801 movw r26,r16 487 030a 8D91 ld r24,X+ 488 030c 9D91 ld r25,X+ 489 030e 8D01 movw r16,r26 490 0310 2983 std Y+1,r18 491 0312 00D0 rcall writeWordToPageBuffer 492 0314 8091 0000 lds r24,currentAddress 493 0318 9091 0000 lds r25,currentAddress+1 494 031c 0296 adiw r24,2 495 031e 9093 0000 sts currentAddress+1,r25 496 0322 8093 0000 sts currentAddress,r24 497 0326 2981 ldd r18,Y+1 498 0328 2250 subi r18,lo8(-(-2)) 499 032a 01F4 brne .L42 500 .L41: 501 032c 8091 0000 lds r24,writeLength 502 0330 8823 tst r24 503 0332 01F4 brne .L18 504 0334 8091 0000 lds r24,events 505 0338 8260 ori r24,lo8(2) 506 033a 8093 0000 sts events,r24 507 033e 1092 0000 sts usbMsgLen,__zero_reg__ 508 .L18: 509 0342 1092 0000 sts usbRxLen,__zero_reg__ 510 .L16: 511 0346 8091 0000 lds r24,usbTxLen 512 034a 84FF sbrs r24,4 513 034c 00C0 rjmp .L43 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 10 514 034e 8091 0000 lds r24,usbMsgLen 515 0352 8F3F cpi r24,lo8(-1) 516 0354 01F4 brne .+2 517 0356 00C0 rjmp .L43 518 0358 082F mov r16,r24 519 035a 8930 cpi r24,lo8(9) 520 035c 00F0 brlo .L44 521 035e 08E0 ldi r16,lo8(8) 522 .L44: 523 0360 801B sub r24,r16 524 0362 8093 0000 sts usbMsgLen,r24 525 0366 8091 0000 lds r24,usbTxBuf 526 036a 98E8 ldi r25,lo8(-120) 527 036c 8927 eor r24,r25 528 036e 8093 0000 sts usbTxBuf,r24 529 0372 0023 tst r16 530 0374 01F0 breq .L45 531 0376 E091 0000 lds r30,usbMsgPtr 532 037a F091 0000 lds r31,usbMsgPtr+1 533 037e 9091 0000 lds r25,usbMsgFlags 534 0382 802F mov r24,r16 535 0384 8150 subi r24,lo8(-(-1)) 536 0386 96FF sbrs r25,6 537 0388 00C0 rjmp .L46 538 038a 90E0 ldi r25,lo8(0) 539 038c 8050 subi r24,lo8(-(usbTxBuf+2)) 540 038e 9040 sbci r25,hi8(-(usbTxBuf+2)) 541 0390 A0E0 ldi r26,lo8(usbTxBuf+1) 542 0392 B0E0 ldi r27,hi8(usbTxBuf+1) 543 .L47: 544 /* #APP */ 545 ; 504 "usbdrv/usbdrv.c" 1 546 0394 2491 lpm r18, Z 547 548 ; 0 "" 2 549 /* #NOAPP */ 550 0396 2D93 st X+,r18 551 0398 3196 adiw r30,1 552 039a A817 cp r26,r24 553 039c B907 cpc r27,r25 554 039e 01F4 brne .L47 555 03a0 00C0 rjmp .L48 556 .L46: 557 03a2 9F01 movw r18,r30 558 03a4 90E0 ldi r25,lo8(0) 559 03a6 8050 subi r24,lo8(-(usbTxBuf+2)) 560 03a8 9040 sbci r25,hi8(-(usbTxBuf+2)) 561 03aa A0E0 ldi r26,lo8(usbTxBuf+1) 562 03ac B0E0 ldi r27,hi8(usbTxBuf+1) 563 .L49: 564 03ae F901 movw r30,r18 565 03b0 4191 ld r20,Z+ 566 03b2 9F01 movw r18,r30 567 03b4 4D93 st X+,r20 568 03b6 A817 cp r26,r24 569 03b8 B907 cpc r27,r25 570 03ba 01F4 brne .L49 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 11 571 .L48: 572 03bc F093 0000 sts usbMsgPtr+1,r31 573 03c0 E093 0000 sts usbMsgPtr,r30 574 .L45: 575 03c4 80E0 ldi r24,lo8(usbTxBuf+1) 576 03c6 90E0 ldi r25,hi8(usbTxBuf+1) 577 03c8 602F mov r22,r16 578 03ca 00D0 rcall usbCrc16Append 579 03cc 0C5F subi r16,lo8(-(4)) 580 03ce 0C30 cpi r16,lo8(12) 581 03d0 01F0 breq .L50 582 03d2 8FEF ldi r24,lo8(-1) 583 03d4 8093 0000 sts usbMsgLen,r24 584 .L50: 585 03d8 0093 0000 sts usbTxLen,r16 586 .L43: 587 03dc 84E1 ldi r24,lo8(20) 588 .L52: 589 03de 96B3 in r25,54-32 590 03e0 9871 andi r25,lo8(24) 591 03e2 01F4 brne .L51 592 03e4 8150 subi r24,lo8(-(-1)) 593 03e6 01F4 brne .L52 594 03e8 1092 0000 sts usbNewDeviceAddr,__zero_reg__ 595 03ec 1092 0000 sts usbDeviceAddr,__zero_reg__ 596 .L51: 597 03f0 01E0 ldi r16,lo8(1) 598 03f2 8111 cpse r24,__zero_reg__ 599 03f4 00E0 ldi r16,lo8(0) 600 .L53: 601 03f6 8091 0000 lds r24,wasReset.1698 602 03fa 8017 cp r24,r16 603 03fc 01F0 breq .L54 604 03fe 0023 tst r16 605 0400 01F4 brne .L55 606 /* #APP */ 607 ; 557 "usbdrv/usbdrv.c" 1 608 0402 F894 cli 609 ; 0 "" 2 610 /* #NOAPP */ 611 0404 00D0 rcall calibrateOscillator 612 /* #APP */ 613 ; 557 "usbdrv/usbdrv.c" 1 614 0406 7894 sei 615 ; 0 "" 2 616 /* #NOAPP */ 617 .L55: 618 0408 0093 0000 sts wasReset.1698,r16 619 .L54: 620 040c 8CE9 ldi r24,lo8(412) 621 040e 91E0 ldi r25,hi8(412) 622 0410 0197 1:sbiw r24,1 623 0412 01F4 brne 1b 624 0414 0000 nop 625 0416 8091 0000 lds r24,events 626 041a 8823 tst r24 627 041c 01F4 brne .L68 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 12 628 041e 0894 sec 629 0420 E11C adc r14,__zero_reg__ 630 0422 F11C adc r15,__zero_reg__ 631 0424 00C0 rjmp .L56 632 .L68: 633 0426 EE24 clr r14 634 0428 FF24 clr r15 635 .L56: 636 042a 80FF sbrs r24,0 637 042c 00C0 rjmp .L57 638 /* #APP */ 639 ; 117 "main.c" 1 640 042e F894 cli 641 ; 0 "" 2 642 /* #NOAPP */ 643 0430 E091 0000 lds r30,currentAddress 644 0434 F091 0000 lds r31,currentAddress+1 645 0438 3297 sbiw r30,2 646 043a 83E0 ldi r24,lo8(3) 647 /* #APP */ 648 ; 118 "main.c" 1 649 043c 8093 5700 sts 87, r24 650 0440 E895 spm 651 652 ; 0 "" 2 653 /* #NOAPP */ 654 .L58: 655 0442 07B6 in __tmp_reg__,87-32 656 0444 00FC sbrc __tmp_reg__,0 657 0446 00C0 rjmp .L58 658 /* #APP */ 659 ; 120 "main.c" 1 660 0448 7894 sei 661 ; 0 "" 2 662 /* #NOAPP */ 663 .L57: 664 044a 8091 0000 lds r24,events 665 044e 81FF sbrs r24,1 666 0450 00C0 rjmp .L59 667 0452 A9E3 ldi r26,lo8(8249) 668 0454 B0E2 ldi r27,hi8(8249) 669 0456 1197 1:sbiw r26,1 670 0458 01F4 brne 1b 671 045a 00C0 rjmp . 672 045c 0000 nop 673 045e 8091 0000 lds r24,currentAddress 674 0462 9091 0000 lds r25,currentAddress+1 675 0466 8F73 andi r24,lo8(63) 676 0468 9070 andi r25,hi8(63) 677 046a 0097 sbiw r24,0 678 046c 01F0 breq .L60 679 046e 00D0 rcall fillFlashWithVectors 680 0470 00C0 rjmp .L59 681 .L60: 682 0472 00D0 rcall writeFlashPage 683 .L59: 684 0474 8091 0000 lds r24,events GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 13 685 0478 82FD sbrc r24,2 686 047a 00C0 rjmp .L61 687 047c B1E5 ldi r27,lo8(-15535) 688 047e EB16 cp r14,r27 689 0480 B3EC ldi r27,hi8(-15535) 690 0482 FB06 cpc r15,r27 691 0484 00F0 brlo .L62 692 .L61: 693 0486 E1E2 ldi r30,lo8(-24287) 694 0488 F1EA ldi r31,hi8(-24287) 695 048a 3197 1:sbiw r30,1 696 048c 01F4 brne 1b 697 048e 00C0 rjmp . 698 0490 0000 nop 699 /* #APP */ 700 ; 190 "main.c" 1 701 0492 F894 cli 702 ; 0 "" 2 703 /* #NOAPP */ 704 0494 1BBE out 91-32,__zero_reg__ 705 0496 15BA out 53-32,__zero_reg__ 706 0498 1092 5F02 sts 607,__zero_reg__ 707 049c 1092 5E02 sts 606,__zero_reg__ 708 /* #APP */ 709 ; 206 "main.c" 1 710 04a0 00C0 rjmp __vectors - 4 711 ; 0 "" 2 712 /* #NOAPP */ 713 .L62: 714 04a2 1092 0000 sts events,__zero_reg__ 715 04a6 00C0 rjmp .L63 716 .size main, .-main 717 .global usbTxLen 718 .data 719 .type usbTxLen, @object 720 .size usbTxLen, 1 721 usbTxLen: 722 0000 5A .byte 90 723 .global usbDescriptorString0 724 .section .progmem.data,"a",@progbits 725 .type usbDescriptorString0, @object 726 .size usbDescriptorString0, 4 727 usbDescriptorString0: 728 0000 04 .byte 4 729 0001 03 .byte 3 730 0002 09 .byte 9 731 0003 04 .byte 4 732 .global usbDescriptorStringVendor 733 .type usbDescriptorStringVendor, @object 734 .size usbDescriptorStringVendor, 34 735 usbDescriptorStringVendor: 736 0004 2203 .word 802 737 0006 6300 .word 99 738 0008 7200 .word 114 739 000a 6500 .word 101 740 000c 6100 .word 97 741 000e 7400 .word 116 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 14 742 0010 6900 .word 105 743 0012 7600 .word 118 744 0014 6500 .word 101 745 0016 7000 .word 112 746 0018 6F00 .word 111 747 001a 6E00 .word 110 748 001c 7900 .word 121 749 001e 2E00 .word 46 750 0020 6300 .word 99 751 0022 6F00 .word 111 752 0024 6D00 .word 109 753 .global usbDescriptorStringDevice 754 .type usbDescriptorStringDevice, @object 755 .size usbDescriptorStringDevice, 12 756 usbDescriptorStringDevice: 757 0026 0C03 .word 780 758 0028 7500 .word 117 759 002a 4200 .word 66 760 002c 6F00 .word 111 761 002e 6F00 .word 111 762 0030 7400 .word 116 763 .global usbDescriptorDevice 764 .type usbDescriptorDevice, @object 765 .size usbDescriptorDevice, 18 766 usbDescriptorDevice: 767 0032 12 .byte 18 768 0033 01 .byte 1 769 0034 10 .byte 16 770 0035 01 .byte 1 771 0036 FF .byte -1 772 0037 00 .byte 0 773 0038 00 .byte 0 774 0039 08 .byte 8 775 003a C0 .byte -64 776 003b 16 .byte 22 777 003c DC .byte -36 778 003d 05 .byte 5 779 003e 01 .byte 1 780 003f 00 .byte 0 781 0040 01 .byte 1 782 0041 02 .byte 2 783 0042 00 .byte 0 784 0043 01 .byte 1 785 .global usbDescriptorConfiguration 786 .type usbDescriptorConfiguration, @object 787 .size usbDescriptorConfiguration, 18 788 usbDescriptorConfiguration: 789 0044 09 .byte 9 790 0045 02 .byte 2 791 0046 12 .byte 18 792 0047 00 .byte 0 793 0048 01 .byte 1 794 0049 01 .byte 1 795 004a 00 .byte 0 796 004b 80 .byte -128 797 004c 32 .byte 50 798 004d 09 .byte 9 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 15 799 004e 04 .byte 4 800 004f 00 .byte 0 801 0050 00 .byte 0 802 0051 00 .byte 0 803 0052 00 .byte 0 804 0053 00 .byte 0 805 0054 00 .byte 0 806 0055 00 .byte 0 807 .comm usbMsgPtr,2,1 808 .comm usbRxToken,1,1 809 .comm usbConfiguration,1,1 810 .comm usbRxBuf,22,1 811 .comm usbInputBufOffset,1,1 812 .comm usbDeviceAddr,1,1 813 .comm usbNewDeviceAddr,1,1 814 .comm usbRxLen,1,1 815 .comm usbCurrentTok,1,1 816 .comm usbTxBuf,11,1 817 .lcomm currentAddress,2 818 .lcomm events,1 819 .lcomm vectorTemp,4 820 .data 821 .type usbMsgLen, @object 822 .size usbMsgLen, 1 823 usbMsgLen: 824 0001 FF .byte -1 825 .lcomm usbMsgFlags,1 826 .lcomm writeLength,1 827 .type replyBuffer.1756, @object 828 .size replyBuffer.1756, 5 829 replyBuffer.1756: 830 0002 01 .byte 1 831 0003 14 .byte 20 832 0004 FA .byte -6 833 0005 40 .byte 64 834 0006 14 .byte 20 835 .lcomm wasReset.1698,1 836 .global __do_copy_data 837 .global __do_clear_bss GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s page 16 DEFINED SYMBOLS *ABS*:00000000 main.c /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:2 *ABS*:0000003f __SREG__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:3 *ABS*:0000003e __SP_H__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:4 *ABS*:0000003d __SP_L__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:5 *ABS*:00000034 __CCP__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:6 *ABS*:00000000 __tmp_reg__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:7 *ABS*:00000001 __zero_reg__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:10 .text:00000000 writeFlashPage .bss:00000000 currentAddress /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:44 .text:0000001e writeWordToPageBuffer /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:818 .bss:00000003 vectorTemp /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:817 .bss:00000002 events /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:138 .text:000000b6 fillFlashWithVectors /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:166 .init3:00000000 PushMagicWord /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:190 .text:000000dc main *COM*:00000001 usbRxLen *COM*:00000001 usbInputBufOffset *COM*:00000016 usbRxBuf *COM*:00000001 usbRxToken *COM*:0000000b usbTxBuf /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:721 .data:00000000 usbTxLen /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:819 .bss:00000007 usbMsgFlags /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:829 .data:00000002 replyBuffer.1756 *COM*:00000002 usbMsgPtr /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:825 .bss:00000008 writeLength *COM*:00000001 usbNewDeviceAddr /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:766 .progmem.data:00000032 usbDescriptorDevice /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:788 .progmem.data:00000044 usbDescriptorConfiguration /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:727 .progmem.data:00000000 usbDescriptorString0 /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:735 .progmem.data:00000004 usbDescriptorStringVendor /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:756 .progmem.data:00000026 usbDescriptorStringDevice *COM*:00000001 usbConfiguration /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:823 .data:00000001 usbMsgLen *COM*:00000001 usbDeviceAddr /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccMGKblz.s:826 .bss:00000009 wasReset.1698 *COM*:00000001 usbCurrentTok UNDEFINED SYMBOLS usbCrc16Append calibrateOscillator __vectors __do_copy_data __do_clear_bss