GAS LISTING /tmp/cc2yJz4P.s page 1 1 .file "spi_at45d.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.At45dStatus,"ax",@progbits 9 .type At45dStatus, @function 10 At45dStatus: 11 0000 CF92 push r12 12 0002 DF92 push r13 13 0004 EF92 push r14 14 0006 FF92 push r15 15 0008 0F93 push r16 16 000a 1F93 push r17 17 000c CF93 push r28 18 000e DF93 push r29 19 0010 1F92 push __zero_reg__ 20 0012 1F92 push __zero_reg__ 21 0014 CDB7 in r28,__SP_L__ 22 0016 DEB7 in r29,__SP_H__ 23 /* prologue: function */ 24 /* frame size = 2 */ 25 /* stack size = 10 */ 26 .L__stack_usage = 10 27 0018 7C01 movw r14,r24 28 001a 87ED ldi r24,lo8(-41) 29 001c 8983 std Y+1,r24 30 001e 8FEF ldi r24,lo8(-1) 31 0020 8A83 std Y+2,r24 32 0022 D701 movw r26,r14 33 0024 CD90 ld r12,X+ 34 0026 DC90 ld r13,X 35 0028 D601 movw r26,r12 36 002a 1A96 adiw r26,10 37 002c ED91 ld r30,X+ 38 002e FC91 ld r31,X 39 0030 1B97 sbiw r26,10+1 40 0032 48EE ldi r20,lo8(-24) 41 0034 53E0 ldi r21,lo8(3) 42 0036 60E0 ldi r22,0 43 0038 70E0 ldi r23,0 44 003a C701 movw r24,r14 45 003c 1995 eicall 46 003e 8C01 movw r16,r24 47 0040 892B or r24,r25 48 0042 01F4 brne .L2 49 0044 D601 movw r26,r12 50 0046 1E96 adiw r26,14 51 0048 ED91 ld r30,X+ 52 004a FC91 ld r31,X 53 004c 1F97 sbiw r26,14+1 54 004e 22E0 ldi r18,lo8(2) 55 0050 30E0 ldi r19,0 56 0052 AE01 movw r20,r28 57 0054 4F5F subi r20,-1 GAS LISTING /tmp/cc2yJz4P.s page 2 58 0056 5F4F sbci r21,-1 59 0058 BA01 movw r22,r20 60 005a C701 movw r24,r14 61 005c 1995 eicall 62 005e 8C01 movw r16,r24 63 0060 892B or r24,r25 64 0062 01F4 brne .L3 65 0064 D601 movw r26,r12 66 0066 5096 adiw r26,16 67 0068 ED91 ld r30,X+ 68 006a FC91 ld r31,X 69 006c 5197 sbiw r26,16+1 70 006e 40E0 ldi r20,0 71 0070 50E0 ldi r21,0 72 0072 BA01 movw r22,r20 73 0074 C701 movw r24,r14 74 0076 1995 eicall 75 0078 0A81 ldd r16,Y+2 76 .L3: 77 007a D601 movw r26,r12 78 007c 1C96 adiw r26,12 79 007e ED91 ld r30,X+ 80 0080 FC91 ld r31,X 81 0082 1D97 sbiw r26,12+1 82 0084 C701 movw r24,r14 83 0086 1995 eicall 84 .L2: 85 0088 802F mov r24,r16 86 /* epilogue start */ 87 008a 0F90 pop __tmp_reg__ 88 008c 0F90 pop __tmp_reg__ 89 008e DF91 pop r29 90 0090 CF91 pop r28 91 0092 1F91 pop r17 92 0094 0F91 pop r16 93 0096 FF90 pop r15 94 0098 EF90 pop r14 95 009a DF90 pop r13 96 009c CF90 pop r12 97 009e 0895 ret 98 .size At45dStatus, .-At45dStatus 99 .section .text.At45dCommand,"ax",@progbits 100 .type At45dCommand, @function 101 At45dCommand: 102 0000 2F92 push r2 103 0002 3F92 push r3 104 0004 4F92 push r4 105 0006 5F92 push r5 106 0008 6F92 push r6 107 000a 7F92 push r7 108 000c 8F92 push r8 109 000e 9F92 push r9 110 0010 AF92 push r10 111 0012 BF92 push r11 112 0014 CF92 push r12 113 0016 DF92 push r13 114 0018 EF92 push r14 GAS LISTING /tmp/cc2yJz4P.s page 3 115 001a FF92 push r15 116 001c 0F93 push r16 117 001e 1F93 push r17 118 0020 CF93 push r28 119 0022 DF93 push r29 120 0024 CDB7 in r28,__SP_L__ 121 0026 DEB7 in r29,__SP_H__ 122 0028 2997 sbiw r28,9 123 002a 0FB6 in __tmp_reg__,__SREG__ 124 002c F894 cli 125 002e DEBF out __SP_H__,r29 126 0030 0FBE out __SREG__,__tmp_reg__ 127 0032 CDBF out __SP_L__,r28 128 /* prologue: function */ 129 /* frame size = 9 */ 130 /* stack size = 27 */ 131 .L__stack_usage = 27 132 0034 4C01 movw r8,r24 133 0036 6987 std Y+9,r22 134 0038 2901 movw r4,r18 135 003a 3A01 movw r6,r20 136 003c DC01 movw r26,r24 137 003e 2D90 ld r2,X+ 138 0040 3C90 ld r3,X 139 0042 A801 movw r20,r16 140 0044 60E0 ldi r22,0 141 0046 70E0 ldi r23,0 142 0048 CE01 movw r24,r28 143 004a 0196 adiw r24,1 144 004c 0E94 0000 call memset 145 0050 B985 ldd r27,Y+9 146 0052 B983 std Y+1,r27 147 0054 4114 cp r4,__zero_reg__ 148 0056 5104 cpc r5,__zero_reg__ 149 0058 6104 cpc r6,__zero_reg__ 150 005a 7104 cpc r7,__zero_reg__ 151 005c 01F0 breq .L6 152 005e 6A82 std Y+2,r6 153 0060 5B82 std Y+3,r5 154 0062 4C82 std Y+4,r4 155 .L6: 156 0064 D101 movw r26,r2 157 0066 1A96 adiw r26,10 158 0068 ED91 ld r30,X+ 159 006a FC91 ld r31,X 160 006c 1B97 sbiw r26,10+1 161 006e 48EE ldi r20,lo8(-24) 162 0070 53E0 ldi r21,lo8(3) 163 0072 60E0 ldi r22,0 164 0074 70E0 ldi r23,0 165 0076 C401 movw r24,r8 166 0078 1995 eicall 167 007a 3C01 movw r6,r24 168 007c 892B or r24,r25 169 007e 01F4 brne .L7 170 0080 D101 movw r26,r2 171 0082 1E96 adiw r26,14 GAS LISTING /tmp/cc2yJz4P.s page 4 172 0084 ED91 ld r30,X+ 173 0086 FC91 ld r31,X 174 0088 1F97 sbiw r26,14+1 175 008a 9801 movw r18,r16 176 008c 40E0 ldi r20,0 177 008e 50E0 ldi r21,0 178 0090 BE01 movw r22,r28 179 0092 6F5F subi r22,-1 180 0094 7F4F sbci r23,-1 181 0096 C401 movw r24,r8 182 0098 1995 eicall 183 009a 3C01 movw r6,r24 184 009c 892B or r24,r25 185 009e 01F4 brne .L8 186 00a0 A114 cp r10,__zero_reg__ 187 00a2 B104 cpc r11,__zero_reg__ 188 00a4 01F0 breq .L8 189 00a6 D101 movw r26,r2 190 00a8 1E96 adiw r26,14 191 00aa ED91 ld r30,X+ 192 00ac FC91 ld r31,X 193 00ae 1F97 sbiw r26,14+1 194 00b0 9501 movw r18,r10 195 00b2 A601 movw r20,r12 196 00b4 B701 movw r22,r14 197 00b6 C401 movw r24,r8 198 00b8 1995 eicall 199 00ba 3C01 movw r6,r24 200 .L8: 201 00bc D101 movw r26,r2 202 00be 1C96 adiw r26,12 203 00c0 ED91 ld r30,X+ 204 00c2 FC91 ld r31,X 205 00c4 1D97 sbiw r26,12+1 206 00c6 C401 movw r24,r8 207 00c8 1995 eicall 208 .L7: 209 00ca C301 movw r24,r6 210 /* epilogue start */ 211 00cc 2996 adiw r28,9 212 00ce 0FB6 in __tmp_reg__,__SREG__ 213 00d0 F894 cli 214 00d2 DEBF out __SP_H__,r29 215 00d4 0FBE out __SREG__,__tmp_reg__ 216 00d6 CDBF out __SP_L__,r28 217 00d8 DF91 pop r29 218 00da CF91 pop r28 219 00dc 1F91 pop r17 220 00de 0F91 pop r16 221 00e0 FF90 pop r15 222 00e2 EF90 pop r14 223 00e4 DF90 pop r13 224 00e6 CF90 pop r12 225 00e8 BF90 pop r11 226 00ea AF90 pop r10 227 00ec 9F90 pop r9 228 00ee 8F90 pop r8 GAS LISTING /tmp/cc2yJz4P.s page 5 229 00f0 7F90 pop r7 230 00f2 6F90 pop r6 231 00f4 5F90 pop r5 232 00f6 4F90 pop r4 233 00f8 3F90 pop r3 234 00fa 2F90 pop r2 235 00fc 0895 ret 236 .size At45dCommand, .-At45dCommand 237 .section .text.SpiAt45dCommand,"ax",@progbits 238 .global SpiAt45dCommand 239 .type SpiAt45dCommand, @function 240 SpiAt45dCommand: 241 0000 AF92 push r10 242 0002 BF92 push r11 243 0004 CF92 push r12 244 0006 DF92 push r13 245 0008 EF92 push r14 246 000a FF92 push r15 247 000c 0F93 push r16 248 000e 1F93 push r17 249 /* prologue: function */ 250 /* frame size = 0 */ 251 /* stack size = 8 */ 252 .L__stack_usage = 8 253 0010 FC01 movw r30,r24 254 0012 8785 ldd r24,Z+15 255 0014 9089 ldd r25,Z+16 256 0016 0E94 0000 call At45dCommand 257 /* epilogue start */ 258 001a 1F91 pop r17 259 001c 0F91 pop r16 260 001e FF90 pop r15 261 0020 EF90 pop r14 262 0022 DF90 pop r13 263 0024 CF90 pop r12 264 0026 BF90 pop r11 265 0028 AF90 pop r10 266 002a 0895 ret 267 .size SpiAt45dCommand, .-SpiAt45dCommand 268 .section .text.SpiAt45dStatus,"ax",@progbits 269 .global SpiAt45dStatus 270 .type SpiAt45dStatus, @function 271 SpiAt45dStatus: 272 /* prologue: function */ 273 /* frame size = 0 */ 274 /* stack size = 0 */ 275 .L__stack_usage = 0 276 0000 FC01 movw r30,r24 277 0002 8785 ldd r24,Z+15 278 0004 9089 ldd r25,Z+16 279 0006 0C94 0000 jmp At45dStatus 280 .size SpiAt45dStatus, .-SpiAt45dStatus 281 .section .text.SpiAt45dWaitReady,"ax",@progbits 282 .global SpiAt45dWaitReady 283 .type SpiAt45dWaitReady, @function 284 SpiAt45dWaitReady: 285 0000 CF92 push r12 GAS LISTING /tmp/cc2yJz4P.s page 6 286 0002 DF92 push r13 287 0004 EF92 push r14 288 0006 FF92 push r15 289 0008 0F93 push r16 290 000a 1F93 push r17 291 000c CF93 push r28 292 000e DF93 push r29 293 /* prologue: function */ 294 /* frame size = 0 */ 295 /* stack size = 8 */ 296 .L__stack_usage = 8 297 0010 6A01 movw r12,r20 298 0012 7B01 movw r14,r22 299 0014 8901 movw r16,r18 300 0016 FC01 movw r30,r24 301 0018 C785 ldd r28,Z+15 302 001a D089 ldd r29,Z+16 303 .L18: 304 001c CE01 movw r24,r28 305 001e 0E94 0000 call At45dStatus 306 0022 87FD sbrc r24,7 307 0024 00C0 rjmp .L23 308 0026 0115 cp r16,__zero_reg__ 309 0028 1105 cpc r17,__zero_reg__ 310 002a 01F4 brne .L19 311 002c 61E0 ldi r22,lo8(1) 312 002e 70E0 ldi r23,0 313 0030 80E0 ldi r24,0 314 0032 90E0 ldi r25,0 315 0034 0E94 0000 call NutSleep 316 .L19: 317 0038 D701 movw r26,r14 318 003a C601 movw r24,r12 319 003c 0197 sbiw r24,1 320 003e A109 sbc r26,__zero_reg__ 321 0040 B109 sbc r27,__zero_reg__ 322 0042 CD28 or r12,r13 323 0044 CE28 or r12,r14 324 0046 CF28 or r12,r15 325 0048 01F0 breq .L22 326 004a 6C01 movw r12,r24 327 004c 7D01 movw r14,r26 328 004e 00C0 rjmp .L18 329 .L23: 330 0050 80E0 ldi r24,0 331 0052 90E0 ldi r25,0 332 0054 00C0 rjmp .L20 333 .L22: 334 0056 8FEF ldi r24,lo8(-1) 335 0058 9FEF ldi r25,lo8(-1) 336 .L20: 337 /* epilogue start */ 338 005a DF91 pop r29 339 005c CF91 pop r28 340 005e 1F91 pop r17 341 0060 0F91 pop r16 342 0062 FF90 pop r15 GAS LISTING /tmp/cc2yJz4P.s page 7 343 0064 EF90 pop r14 344 0066 DF90 pop r13 345 0068 CF90 pop r12 346 006a 0895 ret 347 .size SpiAt45dWaitReady, .-SpiAt45dWaitReady 348 .section .text.SpiAt45dPageErase,"ax",@progbits 349 .global SpiAt45dPageErase 350 .type SpiAt45dPageErase, @function 351 SpiAt45dPageErase: 352 0000 AF92 push r10 353 0002 BF92 push r11 354 0004 CF92 push r12 355 0006 DF92 push r13 356 0008 EF92 push r14 357 000a FF92 push r15 358 000c 0F93 push r16 359 000e 1F93 push r17 360 /* prologue: function */ 361 /* frame size = 0 */ 362 /* stack size = 8 */ 363 .L__stack_usage = 8 364 0010 DC01 movw r26,r24 365 0012 5196 adiw r26,17 366 0014 ED91 ld r30,X+ 367 0016 FC91 ld r31,X 368 0018 5297 sbiw r26,17+1 369 001a 0190 ld __tmp_reg__,Z+ 370 001c F081 ld r31,Z 371 001e E02D mov r30,__tmp_reg__ 372 0020 0181 ldd r16,Z+1 373 0022 1281 ldd r17,Z+2 374 0024 2381 ldd r18,Z+3 375 0026 3481 ldd r19,Z+4 376 0028 4017 cp r20,r16 377 002a 5107 cpc r21,r17 378 002c 6207 cpc r22,r18 379 002e 7307 cpc r23,r19 380 0030 00F4 brsh .L26 381 0032 9A01 movw r18,r20 382 0034 AB01 movw r20,r22 383 0036 0080 ld r0,Z 384 0038 00C0 rjmp 2f 385 1: 386 003a 220F lsl r18 387 003c 331F rol r19 388 003e 441F rol r20 389 0040 551F rol r21 390 2: 391 0042 0A94 dec r0 392 0044 02F4 brpl 1b 393 0046 A12C mov r10,__zero_reg__ 394 0048 B12C mov r11,__zero_reg__ 395 004a C12C mov r12,__zero_reg__ 396 004c D12C mov r13,__zero_reg__ 397 004e E12C mov r14,__zero_reg__ 398 0050 F12C mov r15,__zero_reg__ 399 0052 04E0 ldi r16,lo8(4) GAS LISTING /tmp/cc2yJz4P.s page 8 400 0054 10E0 ldi r17,0 401 0056 61E8 ldi r22,lo8(-127) 402 0058 1F96 adiw r26,15 403 005a 8D91 ld r24,X+ 404 005c 9C91 ld r25,X 405 005e 5097 sbiw r26,15+1 406 0060 0E94 0000 call At45dCommand 407 0064 00C0 rjmp .L25 408 .L26: 409 0066 8FEF ldi r24,lo8(-1) 410 0068 9FEF ldi r25,lo8(-1) 411 .L25: 412 /* epilogue start */ 413 006a 1F91 pop r17 414 006c 0F91 pop r16 415 006e FF90 pop r15 416 0070 EF90 pop r14 417 0072 DF90 pop r13 418 0074 CF90 pop r12 419 0076 BF90 pop r11 420 0078 AF90 pop r10 421 007a 0895 ret 422 .size SpiAt45dPageErase, .-SpiAt45dPageErase 423 .section .text.SpiAt45dChipErase,"ax",@progbits 424 .global SpiAt45dChipErase 425 .type SpiAt45dChipErase, @function 426 SpiAt45dChipErase: 427 /* prologue: function */ 428 /* frame size = 0 */ 429 /* stack size = 0 */ 430 .L__stack_usage = 0 431 0000 8FEF ldi r24,lo8(-1) 432 0002 9FEF ldi r25,lo8(-1) 433 0004 0895 ret 434 .size SpiAt45dChipErase, .-SpiAt45dChipErase 435 .section .text.SpiAt45dInit,"ax",@progbits 436 .global SpiAt45dInit 437 .type SpiAt45dInit, @function 438 SpiAt45dInit: 439 0000 EF92 push r14 440 0002 FF92 push r15 441 0004 0F93 push r16 442 0006 1F93 push r17 443 0008 CF93 push r28 444 000a DF93 push r29 445 /* prologue: function */ 446 /* frame size = 0 */ 447 /* stack size = 6 */ 448 .L__stack_usage = 6 449 000c FC01 movw r30,r24 450 000e C189 ldd r28,Z+17 451 0010 D289 ldd r29,Z+18 452 0012 E784 ldd r14,Z+15 453 0014 F088 ldd r15,Z+16 454 0016 00E0 ldi r16,0 455 0018 10E0 ldi r17,0 456 .L29: GAS LISTING /tmp/cc2yJz4P.s page 9 457 001a C701 movw r24,r14 458 001c 0E94 0000 call At45dStatus 459 0020 87FD sbrc r24,7 460 0022 00C0 rjmp .L41 461 0024 0F5F subi r16,-1 462 0026 1F4F sbci r17,-1 463 0028 0B30 cpi r16,11 464 002a 1105 cpc r17,__zero_reg__ 465 002c 01F4 brne .L29 466 .L35: 467 002e 8FEF ldi r24,lo8(-1) 468 0030 9FEF ldi r25,lo8(-1) 469 0032 00C0 rjmp .L39 470 .L41: 471 0034 C701 movw r24,r14 472 0036 0E94 0000 call At45dStatus 473 003a 8F3F cpi r24,lo8(-1) 474 003c 01F0 breq .L35 475 003e 8D73 andi r24,lo8(61) 476 0040 9091 0000 lds r25,at45d_known_types 477 .L33: 478 0044 9150 subi r25,lo8(-(-1)) 479 0046 97FD sbrc r25,7 480 0048 00C0 rjmp .L35 481 004a 28E0 ldi r18,lo8(8) 482 004c 9202 muls r25,r18 483 004e F001 movw r30,r0 484 0050 1124 clr __zero_reg__ 485 0052 E050 subi r30,lo8(-(at45d_info)) 486 0054 F040 sbci r31,hi8(-(at45d_info)) 487 0056 2781 ldd r18,Z+7 488 0058 8213 cpse r24,r18 489 005a 00C0 rjmp .L33 490 005c F983 std Y+1,r31 491 005e E883 st Y,r30 492 0060 8181 ldd r24,Z+1 493 0062 9281 ldd r25,Z+2 494 0064 A381 ldd r26,Z+3 495 0066 B481 ldd r27,Z+4 496 0068 8A83 std Y+2,r24 497 006a 9B83 std Y+3,r25 498 006c AC83 std Y+4,r26 499 006e BD83 std Y+5,r27 500 0070 8581 ldd r24,Z+5 501 0072 9681 ldd r25,Z+6 502 0074 A0E0 ldi r26,0 503 0076 B0E0 ldi r27,0 504 0078 8E83 std Y+6,r24 505 007a 9F83 std Y+7,r25 506 007c A887 std Y+8,r26 507 007e B987 std Y+9,r27 508 0080 80E0 ldi r24,0 509 0082 90E0 ldi r25,0 510 .L39: 511 /* epilogue start */ 512 0084 DF91 pop r29 513 0086 CF91 pop r28 GAS LISTING /tmp/cc2yJz4P.s page 10 514 0088 1F91 pop r17 515 008a 0F91 pop r16 516 008c FF90 pop r15 517 008e EF90 pop r14 518 0090 0895 ret 519 .size SpiAt45dInit, .-SpiAt45dInit 520 .section .text.SpiAt45dPageRead,"ax",@progbits 521 .global SpiAt45dPageRead 522 .type SpiAt45dPageRead, @function 523 SpiAt45dPageRead: 524 0000 AF92 push r10 525 0002 BF92 push r11 526 0004 CF92 push r12 527 0006 DF92 push r13 528 0008 EF92 push r14 529 000a FF92 push r15 530 000c 0F93 push r16 531 000e 1F93 push r17 532 0010 CF93 push r28 533 0012 DF93 push r29 534 /* prologue: function */ 535 /* frame size = 0 */ 536 /* stack size = 10 */ 537 .L__stack_usage = 10 538 0014 6901 movw r12,r18 539 0016 D02F mov r29,r16 540 0018 C12F mov r28,r17 541 001a DC01 movw r26,r24 542 001c 5196 adiw r26,17 543 001e ED91 ld r30,X+ 544 0020 FC91 ld r31,X 545 0022 5297 sbiw r26,17+1 546 0024 0190 ld __tmp_reg__,Z+ 547 0026 F081 ld r31,Z 548 0028 E02D mov r30,__tmp_reg__ 549 002a 0181 ldd r16,Z+1 550 002c 1281 ldd r17,Z+2 551 002e 2381 ldd r18,Z+3 552 0030 3481 ldd r19,Z+4 553 0032 4017 cp r20,r16 554 0034 5107 cpc r21,r17 555 0036 6207 cpc r22,r18 556 0038 7307 cpc r23,r19 557 003a 00F0 brlo .L43 558 .L45: 559 003c 8FEF ldi r24,lo8(-1) 560 003e 9FEF ldi r25,lo8(-1) 561 0040 00C0 rjmp .L44 562 .L43: 563 0042 9A01 movw r18,r20 564 0044 AB01 movw r20,r22 565 0046 0080 ld r0,Z 566 0048 00C0 rjmp 2f 567 1: 568 004a 220F lsl r18 569 004c 331F rol r19 570 004e 441F rol r20 GAS LISTING /tmp/cc2yJz4P.s page 11 571 0050 551F rol r21 572 2: 573 0052 0A94 dec r0 574 0054 02F4 brpl 1b 575 0056 AD2E mov r10,r29 576 0058 BC2E mov r11,r28 577 005a E12C mov r14,__zero_reg__ 578 005c F12C mov r15,__zero_reg__ 579 005e 08E0 ldi r16,lo8(8) 580 0060 10E0 ldi r17,0 581 0062 68EE ldi r22,lo8(-24) 582 0064 FC01 movw r30,r24 583 0066 8785 ldd r24,Z+15 584 0068 9089 ldd r25,Z+16 585 006a 0E94 0000 call At45dCommand 586 006e 892B or r24,r25 587 0070 01F4 brne .L45 588 0072 8D2F mov r24,r29 589 0074 9C2F mov r25,r28 590 .L44: 591 /* epilogue start */ 592 0076 DF91 pop r29 593 0078 CF91 pop r28 594 007a 1F91 pop r17 595 007c 0F91 pop r16 596 007e FF90 pop r15 597 0080 EF90 pop r14 598 0082 DF90 pop r13 599 0084 CF90 pop r12 600 0086 BF90 pop r11 601 0088 AF90 pop r10 602 008a 0895 ret 603 .size SpiAt45dPageRead, .-SpiAt45dPageRead 604 .section .text.SpiAt45dPageWrite,"ax",@progbits 605 .global SpiAt45dPageWrite 606 .type SpiAt45dPageWrite, @function 607 SpiAt45dPageWrite: 608 0000 2F92 push r2 609 0002 3F92 push r3 610 0004 4F92 push r4 611 0006 5F92 push r5 612 0008 6F92 push r6 613 000a 7F92 push r7 614 000c 8F92 push r8 615 000e 9F92 push r9 616 0010 AF92 push r10 617 0012 BF92 push r11 618 0014 CF92 push r12 619 0016 DF92 push r13 620 0018 EF92 push r14 621 001a FF92 push r15 622 001c 0F93 push r16 623 001e 1F93 push r17 624 0020 CF93 push r28 625 0022 DF93 push r29 626 0024 CDB7 in r28,__SP_L__ 627 0026 DEB7 in r29,__SP_H__ GAS LISTING /tmp/cc2yJz4P.s page 12 628 0028 2B97 sbiw r28,11 629 002a 0FB6 in __tmp_reg__,__SREG__ 630 002c F894 cli 631 002e DEBF out __SP_H__,r29 632 0030 0FBE out __SREG__,__tmp_reg__ 633 0032 CDBF out __SP_L__,r28 634 /* prologue: function */ 635 /* frame size = 11 */ 636 /* stack size = 29 */ 637 .L__stack_usage = 29 638 0034 2A01 movw r4,r20 639 0036 3B01 movw r6,r22 640 0038 3C83 std Y+4,r19 641 003a 2B83 std Y+3,r18 642 003c 4801 movw r8,r16 643 003e 012B or r16,r17 644 0040 01F4 brne .+2 645 0042 00C0 rjmp .L56 646 0044 DC01 movw r26,r24 647 0046 1F96 adiw r26,15 648 0048 0D90 ld __tmp_reg__,X+ 649 004a BC91 ld r27,X 650 004c A02D mov r26,__tmp_reg__ 651 004e BA83 std Y+2,r27 652 0050 A983 std Y+1,r26 653 0052 DC01 movw r26,r24 654 0054 5196 adiw r26,17 655 0056 ED91 ld r30,X+ 656 0058 FC91 ld r31,X 657 005a 5297 sbiw r26,17+1 658 005c 2081 ld r18,Z 659 005e 3181 ldd r19,Z+1 660 0060 F901 movw r30,r18 661 0062 F081 ld r31,Z 662 0064 FD83 std Y+5,r31 663 0066 D901 movw r26,r18 664 0068 1596 adiw r26,5 665 006a 2D90 ld r2,X+ 666 006c 3C90 ld r3,X 667 006e 1697 sbiw r26,5+1 668 0070 1196 adiw r26,1 669 0072 8D91 ld r24,X+ 670 0074 9D91 ld r25,X+ 671 0076 0D90 ld __tmp_reg__,X+ 672 0078 BC91 ld r27,X 673 007a A02D mov r26,__tmp_reg__ 674 007c 8E83 std Y+6,r24 675 007e 9F83 std Y+7,r25 676 0080 A887 std Y+8,r26 677 0082 B987 std Y+9,r27 678 0084 EFEF ldi r30,lo8(-1) 679 0086 FFEF ldi r31,lo8(-1) 680 0088 FB87 std Y+11,r31 681 008a EA87 std Y+10,r30 682 .L53: 683 008c 8214 cp r8,r2 684 008e 9304 cpc r9,r3 GAS LISTING /tmp/cc2yJz4P.s page 13 685 0090 04F4 brge .L48 686 0092 1401 movw r2,r8 687 .L48: 688 0094 5101 movw r10,r2 689 0096 C12C mov r12,__zero_reg__ 690 0098 D12C mov r13,__zero_reg__ 691 009a EB80 ldd r14,Y+3 692 009c FC80 ldd r15,Y+4 693 009e 04E0 ldi r16,lo8(4) 694 00a0 10E0 ldi r17,0 695 00a2 20E0 ldi r18,0 696 00a4 30E0 ldi r19,0 697 00a6 A901 movw r20,r18 698 00a8 64E8 ldi r22,lo8(-124) 699 00aa 8981 ldd r24,Y+1 700 00ac 9A81 ldd r25,Y+2 701 00ae 0E94 0000 call At45dCommand 702 00b2 892B or r24,r25 703 00b4 01F0 breq .+2 704 00b6 00C0 rjmp .L60 705 00b8 A12C mov r10,__zero_reg__ 706 00ba B12C mov r11,__zero_reg__ 707 00bc E12C mov r14,__zero_reg__ 708 00be F12C mov r15,__zero_reg__ 709 00c0 A301 movw r20,r6 710 00c2 9201 movw r18,r4 711 00c4 0D80 ldd r0,Y+5 712 00c6 00C0 rjmp 2f 713 1: 714 00c8 220F lsl r18 715 00ca 331F rol r19 716 00cc 441F rol r20 717 00ce 551F rol r21 718 2: 719 00d0 0A94 dec r0 720 00d2 02F4 brpl 1b 721 00d4 63E8 ldi r22,lo8(-125) 722 00d6 8981 ldd r24,Y+1 723 00d8 9A81 ldd r25,Y+2 724 00da 0E94 0000 call At45dCommand 725 00de 892B or r24,r25 726 00e0 01F4 brne .L60 727 00e2 00E0 ldi r16,0 728 00e4 10E0 ldi r17,0 729 .L50: 730 00e6 8981 ldd r24,Y+1 731 00e8 9A81 ldd r25,Y+2 732 00ea 0E94 0000 call At45dStatus 733 00ee 87FD sbrc r24,7 734 00f0 00C0 rjmp .L65 735 00f2 0F5F subi r16,-1 736 00f4 1F4F sbci r17,-1 737 00f6 093E cpi r16,-23 738 00f8 F3E0 ldi r31,3 739 00fa 1F07 cpc r17,r31 740 00fc 01F4 brne .L50 741 00fe 00C0 rjmp .L60 GAS LISTING /tmp/cc2yJz4P.s page 14 742 .L56: 743 0100 80E0 ldi r24,0 744 0102 90E0 ldi r25,0 745 0104 00C0 rjmp .L63 746 .L65: 747 0106 8A85 ldd r24,Y+10 748 0108 9B85 ldd r25,Y+11 749 010a 97FF sbrs r25,7 750 010c 00C0 rjmp .L54 751 010e 80E0 ldi r24,0 752 0110 90E0 ldi r25,0 753 .L54: 754 0112 9C01 movw r18,r24 755 0114 220D add r18,r2 756 0116 331D adc r19,r3 757 0118 3B87 std Y+11,r19 758 011a 2A87 std Y+10,r18 759 011c 8B81 ldd r24,Y+3 760 011e 9C81 ldd r25,Y+4 761 0120 820D add r24,r2 762 0122 931D adc r25,r3 763 0124 9C83 std Y+4,r25 764 0126 8B83 std Y+3,r24 765 0128 8218 sub r8,r2 766 012a 9308 sbc r9,r3 767 012c 9FEF ldi r25,-1 768 012e 491A sub r4,r25 769 0130 590A sbc r5,r25 770 0132 690A sbc r6,r25 771 0134 790A sbc r7,r25 772 0136 8E81 ldd r24,Y+6 773 0138 9F81 ldd r25,Y+7 774 013a A885 ldd r26,Y+8 775 013c B985 ldd r27,Y+9 776 013e 4816 cp r4,r24 777 0140 5906 cpc r5,r25 778 0142 6A06 cpc r6,r26 779 0144 7B06 cpc r7,r27 780 0146 00F4 brsh .L60 781 0148 8114 cp r8,__zero_reg__ 782 014a 9104 cpc r9,__zero_reg__ 783 014c 01F0 breq .+2 784 014e 00C0 rjmp .L53 785 .L60: 786 0150 8A85 ldd r24,Y+10 787 0152 9B85 ldd r25,Y+11 788 .L63: 789 /* epilogue start */ 790 0154 2B96 adiw r28,11 791 0156 0FB6 in __tmp_reg__,__SREG__ 792 0158 F894 cli 793 015a DEBF out __SP_H__,r29 794 015c 0FBE out __SREG__,__tmp_reg__ 795 015e CDBF out __SP_L__,r28 796 0160 DF91 pop r29 797 0162 CF91 pop r28 798 0164 1F91 pop r17 GAS LISTING /tmp/cc2yJz4P.s page 15 799 0166 0F91 pop r16 800 0168 FF90 pop r15 801 016a EF90 pop r14 802 016c DF90 pop r13 803 016e CF90 pop r12 804 0170 BF90 pop r11 805 0172 AF90 pop r10 806 0174 9F90 pop r9 807 0176 8F90 pop r8 808 0178 7F90 pop r7 809 017a 6F90 pop r6 810 017c 5F90 pop r5 811 017e 4F90 pop r4 812 0180 3F90 pop r3 813 0182 2F90 pop r2 814 0184 0895 ret 815 .size SpiAt45dPageWrite, .-SpiAt45dPageWrite 816 .section .text.SpiAt45dPageWrite_P,"ax",@progbits 817 .global SpiAt45dPageWrite_P 818 .type SpiAt45dPageWrite_P, @function 819 SpiAt45dPageWrite_P: 820 /* prologue: function */ 821 /* frame size = 0 */ 822 /* stack size = 0 */ 823 .L__stack_usage = 0 824 0000 8FEF ldi r24,lo8(-1) 825 0002 9FEF ldi r25,lo8(-1) 826 0004 0895 ret 827 .size SpiAt45dPageWrite_P, .-SpiAt45dPageWrite_P 828 .section .text.SpiAt45dPages,"ax",@progbits 829 .global SpiAt45dPages 830 .type SpiAt45dPages, @function 831 SpiAt45dPages: 832 /* prologue: function */ 833 /* frame size = 0 */ 834 /* stack size = 0 */ 835 .L__stack_usage = 0 836 0000 DC01 movw r26,r24 837 0002 5196 adiw r26,17 838 0004 ED91 ld r30,X+ 839 0006 FC91 ld r31,X 840 0008 5297 sbiw r26,17+1 841 000a 0190 ld __tmp_reg__,Z+ 842 000c F081 ld r31,Z 843 000e E02D mov r30,__tmp_reg__ 844 0010 6181 ldd r22,Z+1 845 0012 7281 ldd r23,Z+2 846 0014 8381 ldd r24,Z+3 847 0016 9481 ldd r25,Z+4 848 0018 0895 ret 849 .size SpiAt45dPages, .-SpiAt45dPages 850 .section .text.SpiAt45dPageSize,"ax",@progbits 851 .global SpiAt45dPageSize 852 .type SpiAt45dPageSize, @function 853 SpiAt45dPageSize: 854 /* prologue: function */ 855 /* frame size = 0 */ GAS LISTING /tmp/cc2yJz4P.s page 16 856 /* stack size = 0 */ 857 .L__stack_usage = 0 858 0000 DC01 movw r26,r24 859 0002 5196 adiw r26,17 860 0004 ED91 ld r30,X+ 861 0006 FC91 ld r31,X 862 0008 5297 sbiw r26,17+1 863 000a 0190 ld __tmp_reg__,Z+ 864 000c F081 ld r31,Z 865 000e E02D mov r30,__tmp_reg__ 866 0010 8581 ldd r24,Z+5 867 0012 9681 ldd r25,Z+6 868 0014 0895 ret 869 .size SpiAt45dPageSize, .-SpiAt45dPageSize 870 .section .text.SpiAt45dIOCtl,"ax",@progbits 871 .global SpiAt45dIOCtl 872 .type SpiAt45dIOCtl, @function 873 SpiAt45dIOCtl: 874 /* prologue: function */ 875 /* frame size = 0 */ 876 /* stack size = 0 */ 877 .L__stack_usage = 0 878 0000 6115 cp r22,__zero_reg__ 879 0002 82E1 ldi r24,18 880 0004 7807 cpc r23,r24 881 0006 01F0 breq .L71 882 0008 6130 cpi r22,1 883 000a 7241 sbci r23,18 884 000c 01F4 brne .L76 885 000e FA01 movw r30,r20 886 0010 1182 std Z+1,__zero_reg__ 887 0012 1082 st Z,__zero_reg__ 888 0014 00C0 rjmp .L75 889 .L71: 890 0016 81E0 ldi r24,lo8(1) 891 0018 90E0 ldi r25,0 892 001a FA01 movw r30,r20 893 001c 9183 std Z+1,r25 894 001e 8083 st Z,r24 895 .L75: 896 0020 80E0 ldi r24,0 897 0022 90E0 ldi r25,0 898 0024 0895 ret 899 .L76: 900 0026 8FEF ldi r24,lo8(-1) 901 0028 9FEF ldi r25,lo8(-1) 902 002a 0895 ret 903 .size SpiAt45dIOCtl, .-SpiAt45dIOCtl 904 .ident "GCC: (GNU) 5.3.0" GAS LISTING /tmp/cc2yJz4P.s page 17 DEFINED SYMBOLS *ABS*:0000000000000000 spi_at45d.c /tmp/cc2yJz4P.s:2 *ABS*:000000000000003e __SP_H__ /tmp/cc2yJz4P.s:3 *ABS*:000000000000003d __SP_L__ /tmp/cc2yJz4P.s:4 *ABS*:000000000000003f __SREG__ /tmp/cc2yJz4P.s:5 *ABS*:000000000000003b __RAMPZ__ /tmp/cc2yJz4P.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/cc2yJz4P.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/cc2yJz4P.s:10 .text.At45dStatus:0000000000000000 At45dStatus /tmp/cc2yJz4P.s:101 .text.At45dCommand:0000000000000000 At45dCommand /tmp/cc2yJz4P.s:240 .text.SpiAt45dCommand:0000000000000000 SpiAt45dCommand /tmp/cc2yJz4P.s:271 .text.SpiAt45dStatus:0000000000000000 SpiAt45dStatus /tmp/cc2yJz4P.s:284 .text.SpiAt45dWaitReady:0000000000000000 SpiAt45dWaitReady /tmp/cc2yJz4P.s:351 .text.SpiAt45dPageErase:0000000000000000 SpiAt45dPageErase /tmp/cc2yJz4P.s:426 .text.SpiAt45dChipErase:0000000000000000 SpiAt45dChipErase /tmp/cc2yJz4P.s:438 .text.SpiAt45dInit:0000000000000000 SpiAt45dInit /tmp/cc2yJz4P.s:523 .text.SpiAt45dPageRead:0000000000000000 SpiAt45dPageRead /tmp/cc2yJz4P.s:607 .text.SpiAt45dPageWrite:0000000000000000 SpiAt45dPageWrite /tmp/cc2yJz4P.s:819 .text.SpiAt45dPageWrite_P:0000000000000000 SpiAt45dPageWrite_P /tmp/cc2yJz4P.s:831 .text.SpiAt45dPages:0000000000000000 SpiAt45dPages /tmp/cc2yJz4P.s:853 .text.SpiAt45dPageSize:0000000000000000 SpiAt45dPageSize /tmp/cc2yJz4P.s:873 .text.SpiAt45dIOCtl:0000000000000000 SpiAt45dIOCtl UNDEFINED SYMBOLS memset NutSleep at45d_known_types at45d_info