GAS LISTING /tmp/ccH8SUYI.s page 1 1 .file "timer.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.NutTimerIntr,"ax",@progbits 9 .global NutTimerIntr 10 .type NutTimerIntr, @function 11 NutTimerIntr: 12 /* prologue: function */ 13 /* frame size = 0 */ 14 /* stack size = 0 */ 15 .L__stack_usage = 0 16 0000 8091 0000 lds r24,nut_ticks 17 0004 9091 0000 lds r25,nut_ticks+1 18 0008 A091 0000 lds r26,nut_ticks+2 19 000c B091 0000 lds r27,nut_ticks+3 20 0010 0196 adiw r24,1 21 0012 A11D adc r26,__zero_reg__ 22 0014 B11D adc r27,__zero_reg__ 23 0016 8093 0000 sts nut_ticks,r24 24 001a 9093 0000 sts nut_ticks+1,r25 25 001e A093 0000 sts nut_ticks+2,r26 26 0022 B093 0000 sts nut_ticks+3,r27 27 0026 4091 0000 lds r20,system_time+4 28 002a 5091 0000 lds r21,system_time+4+1 29 002e 6091 0000 lds r22,system_time+4+2 30 0032 7091 0000 lds r23,system_time+4+3 31 0036 8091 0000 lds r24,systick_us 32 003a 9091 0000 lds r25,systick_us+1 33 003e A091 0000 lds r26,systick_us+2 34 0042 B091 0000 lds r27,systick_us+3 35 0046 840F add r24,r20 36 0048 951F adc r25,r21 37 004a A61F adc r26,r22 38 004c B71F adc r27,r23 39 004e 8093 0000 sts system_time+4,r24 40 0052 9093 0000 sts system_time+4+1,r25 41 0056 A093 0000 sts system_time+4+2,r26 42 005a B093 0000 sts system_time+4+3,r27 43 005e 8091 0000 lds r24,system_time+4 44 0062 9091 0000 lds r25,system_time+4+1 45 0066 A091 0000 lds r26,system_time+4+2 46 006a B091 0000 lds r27,system_time+4+3 47 006e 8134 cpi r24,65 48 0070 9244 sbci r25,66 49 0072 AF40 sbci r26,15 50 0074 B105 cpc r27,__zero_reg__ 51 0076 04F0 brlt .L1 52 0078 8091 0000 lds r24,system_time 53 007c 9091 0000 lds r25,system_time+1 54 0080 A091 0000 lds r26,system_time+2 55 0084 B091 0000 lds r27,system_time+3 56 0088 0196 adiw r24,1 57 008a A11D adc r26,__zero_reg__ GAS LISTING /tmp/ccH8SUYI.s page 2 58 008c B11D adc r27,__zero_reg__ 59 008e 8093 0000 sts system_time,r24 60 0092 9093 0000 sts system_time+1,r25 61 0096 A093 0000 sts system_time+2,r26 62 009a B093 0000 sts system_time+3,r27 63 009e 8091 0000 lds r24,system_time+4 64 00a2 9091 0000 lds r25,system_time+4+1 65 00a6 A091 0000 lds r26,system_time+4+2 66 00aa B091 0000 lds r27,system_time+4+3 67 00ae 8054 subi r24,64 68 00b0 9244 sbci r25,66 69 00b2 AF40 sbci r26,15 70 00b4 B109 sbc r27,__zero_reg__ 71 00b6 8093 0000 sts system_time+4,r24 72 00ba 9093 0000 sts system_time+4+1,r25 73 00be A093 0000 sts system_time+4+2,r26 74 00c2 B093 0000 sts system_time+4+3,r27 75 .L1: 76 00c6 0895 ret 77 .size NutTimerIntr, .-NutTimerIntr 78 .section .text.NutMicroDelay.part.1,"ax",@progbits 79 .type NutMicroDelay.part.1, @function 80 NutMicroDelay.part.1: 81 0000 CF92 push r12 82 0002 DF92 push r13 83 0004 EF92 push r14 84 0006 FF92 push r15 85 /* prologue: function */ 86 /* frame size = 0 */ 87 /* stack size = 4 */ 88 .L__stack_usage = 4 89 0008 9B01 movw r18,r22 90 000a AC01 movw r20,r24 91 000c A091 0000 lds r26,_delay_loop_2_mult 92 0010 B091 0000 lds r27,_delay_loop_2_mult+1 93 0014 0E94 0000 call __muluhisi3 94 0018 C72E mov r12,r23 95 001a D82E mov r13,r24 96 001c E92E mov r14,r25 97 001e FF24 clr r15 98 0020 41E3 ldi r20,49 99 0022 C416 cp r12,r20 100 0024 D104 cpc r13,__zero_reg__ 101 0026 E104 cpc r14,__zero_reg__ 102 0028 F104 cpc r15,__zero_reg__ 103 002a 00F0 brlo .L4 104 002c 80E3 ldi r24,48 105 002e C81A sub r12,r24 106 0030 D108 sbc r13,__zero_reg__ 107 0032 E108 sbc r14,__zero_reg__ 108 0034 F108 sbc r15,__zero_reg__ 109 0036 D701 movw r26,r14 110 0038 C601 movw r24,r12 111 003a 20E0 ldi r18,0 112 003c 30E0 ldi r19,0 113 .L6: 114 003e 0097 sbiw r24,0 GAS LISTING /tmp/ccH8SUYI.s page 3 115 0040 41E0 ldi r20,1 116 0042 A407 cpc r26,r20 117 0044 B105 cpc r27,__zero_reg__ 118 0046 00F0 brlo .L11 119 0048 F901 movw r30,r18 120 /* #APP */ 121 ; 105 "/usr/avr/include/util/delay_basic.h" 1 122 004a 3197 1: sbiw r30,1 123 004c 01F4 brne 1b 124 ; 0 "" 2 125 /* #NOAPP */ 126 004e 1197 sbiw r26,1 127 0050 00C0 rjmp .L6 128 .L11: 129 0052 9701 movw r18,r14 130 0054 4427 clr r20 131 0056 5527 clr r21 132 0058 A0E0 ldi r26,0 133 005a B0E0 ldi r27,0 134 005c 0E94 0000 call __mulohisi3 135 0060 C60E add r12,r22 136 0062 D71E adc r13,r23 137 0064 E81E adc r14,r24 138 0066 F91E adc r15,r25 139 0068 C114 cp r12,__zero_reg__ 140 006a D104 cpc r13,__zero_reg__ 141 006c E104 cpc r14,__zero_reg__ 142 006e F104 cpc r15,__zero_reg__ 143 0070 01F0 breq .L4 144 0072 C601 movw r24,r12 145 /* #APP */ 146 ; 105 "/usr/avr/include/util/delay_basic.h" 1 147 0074 0197 1: sbiw r24,1 148 0076 01F4 brne 1b 149 ; 0 "" 2 150 /* #NOAPP */ 151 .L4: 152 /* epilogue start */ 153 0078 FF90 pop r15 154 007a EF90 pop r14 155 007c DF90 pop r13 156 007e CF90 pop r12 157 0080 0895 ret 158 .size NutMicroDelay.part.1, .-NutMicroDelay.part.1 159 .section .text.NutTimerInit,"ax",@progbits 160 .global NutTimerInit 161 .type NutTimerInit, @function 162 NutTimerInit: 163 /* prologue: function */ 164 /* frame size = 0 */ 165 /* stack size = 0 */ 166 .L__stack_usage = 0 167 0000 80E0 ldi r24,lo8(gs(NutTimerIntr)) 168 0002 90E0 ldi r25,hi8(gs(NutTimerIntr)) 169 0004 0E94 0000 call NutRegisterTimer 170 0008 0E94 0000 call NutGetTickClock 171 000c 9B01 movw r18,r22 GAS LISTING /tmp/ccH8SUYI.s page 4 172 000e AC01 movw r20,r24 173 0010 60E4 ldi r22,lo8(64) 174 0012 72E4 ldi r23,lo8(66) 175 0014 8FE0 ldi r24,lo8(15) 176 0016 90E0 ldi r25,0 177 0018 0E94 0000 call __udivmodsi4 178 001c 2093 0000 sts systick_us,r18 179 0020 3093 0000 sts systick_us+1,r19 180 0024 4093 0000 sts systick_us+2,r20 181 0028 5093 0000 sts systick_us+3,r21 182 002c E0E7 ldi r30,lo8(112) 183 002e F0E0 ldi r31,0 184 0030 8081 ld r24,Z 185 0032 8260 ori r24,lo8(2) 186 0034 8083 st Z,r24 187 0036 8FEA ldi r24,lo8(-81) 188 0038 93E0 ldi r25,lo8(3) 189 003a 9093 0000 sts _delay_loop_2_mult+1,r25 190 003e 8093 0000 sts _delay_loop_2_mult,r24 191 0042 0895 ret 192 .size NutTimerInit, .-NutTimerInit 193 .section .text.NutMicroDelay,"ax",@progbits 194 .global NutMicroDelay 195 .type NutMicroDelay, @function 196 NutMicroDelay: 197 /* prologue: function */ 198 /* frame size = 0 */ 199 /* stack size = 0 */ 200 .L__stack_usage = 0 201 0000 6333 cpi r22,51 202 0002 7105 cpc r23,__zero_reg__ 203 0004 8105 cpc r24,__zero_reg__ 204 0006 9105 cpc r25,__zero_reg__ 205 0008 00F4 brsh .L14 206 000a 2091 0000 lds r18,_delay_loop_2_mult 207 000e 3091 0000 lds r19,_delay_loop_2_mult+1 208 0012 269F mul r18,r22 209 0014 A001 movw r20,r0 210 0016 279F mul r18,r23 211 0018 500D add r21,r0 212 001a 369F mul r19,r22 213 001c 500D add r21,r0 214 001e 1124 clr r1 215 0020 852F mov r24,r21 216 0022 9927 clr r25 217 0024 8031 cpi r24,16 218 0026 9105 cpc r25,__zero_reg__ 219 0028 00F0 brlo .L13 220 002a 0F97 sbiw r24,15 221 /* #APP */ 222 ; 105 "/usr/avr/include/util/delay_basic.h" 1 223 002c 0197 1: sbiw r24,1 224 002e 01F4 brne 1b 225 ; 0 "" 2 226 /* #NOAPP */ 227 0030 0895 ret 228 .L14: GAS LISTING /tmp/ccH8SUYI.s page 5 229 0032 0C94 0000 jmp NutMicroDelay.part.1 230 .L13: 231 0036 0895 ret 232 .size NutMicroDelay, .-NutMicroDelay 233 .section .text.NutDelay,"ax",@progbits 234 .global NutDelay 235 .type NutDelay, @function 236 NutDelay: 237 0000 CF93 push r28 238 /* prologue: function */ 239 /* frame size = 0 */ 240 /* stack size = 1 */ 241 .L__stack_usage = 1 242 0002 C82F mov r28,r24 243 .L17: 244 0004 CC23 tst r28 245 0006 01F0 breq .L19 246 0008 68EE ldi r22,lo8(-24) 247 000a 73E0 ldi r23,lo8(3) 248 000c 80E0 ldi r24,0 249 000e 90E0 ldi r25,0 250 0010 0E94 0000 call NutMicroDelay.part.1 251 0014 C150 subi r28,lo8(-(-1)) 252 0016 00C0 rjmp .L17 253 .L19: 254 /* epilogue start */ 255 0018 CF91 pop r28 256 001a 0895 ret 257 .size NutDelay, .-NutDelay 258 .section .text.NutTimerInsert,"ax",@progbits 259 .global NutTimerInsert 260 .type NutTimerInsert, @function 261 NutTimerInsert: 262 0000 0F93 push r16 263 0002 1F93 push r17 264 /* prologue: function */ 265 /* frame size = 0 */ 266 /* stack size = 2 */ 267 .L__stack_usage = 2 268 0004 FC01 movw r30,r24 269 0006 1382 std Z+3,__zero_reg__ 270 0008 1282 std Z+2,__zero_reg__ 271 000a A091 0000 lds r26,nutTimerList 272 000e B091 0000 lds r27,nutTimerList+1 273 .L21: 274 0012 1097 sbiw r26,0 275 0014 01F0 breq .L23 276 0016 4085 ldd r20,Z+8 277 0018 5185 ldd r21,Z+9 278 001a 6285 ldd r22,Z+10 279 001c 7385 ldd r23,Z+11 280 001e 1896 adiw r26,8 281 0020 0D91 ld r16,X+ 282 0022 1D91 ld r17,X+ 283 0024 2D91 ld r18,X+ 284 0026 3C91 ld r19,X 285 0028 1B97 sbiw r26,8+3 GAS LISTING /tmp/ccH8SUYI.s page 6 286 002a 4017 cp r20,r16 287 002c 5107 cpc r21,r17 288 002e 6207 cpc r22,r18 289 0030 7307 cpc r23,r19 290 0032 00F4 brsh .L22 291 0034 041B sub r16,r20 292 0036 150B sbc r17,r21 293 0038 260B sbc r18,r22 294 003a 370B sbc r19,r23 295 003c 1896 adiw r26,8 296 003e 0D93 st X+,r16 297 0040 1D93 st X+,r17 298 0042 2D93 st X+,r18 299 0044 3C93 st X,r19 300 0046 1B97 sbiw r26,8+3 301 0048 00C0 rjmp .L23 302 .L22: 303 004a 401B sub r20,r16 304 004c 510B sbc r21,r17 305 004e 620B sbc r22,r18 306 0050 730B sbc r23,r19 307 0052 4087 std Z+8,r20 308 0054 5187 std Z+9,r21 309 0056 6287 std Z+10,r22 310 0058 7387 std Z+11,r23 311 005a B383 std Z+3,r27 312 005c A283 std Z+2,r26 313 005e 0D90 ld __tmp_reg__,X+ 314 0060 BC91 ld r27,X 315 0062 A02D mov r26,__tmp_reg__ 316 0064 00C0 rjmp .L21 317 .L23: 318 0066 B183 std Z+1,r27 319 0068 A083 st Z,r26 320 006a 1097 sbiw r26,0 321 006c 01F0 breq .L25 322 006e 1396 adiw r26,2+1 323 0070 FC93 st X,r31 324 0072 EE93 st -X,r30 325 0074 1297 sbiw r26,2 326 .L25: 327 0076 A281 ldd r26,Z+2 328 0078 B381 ldd r27,Z+3 329 007a 1097 sbiw r26,0 330 007c 01F0 breq .L26 331 007e ED93 st X+,r30 332 0080 FC93 st X,r31 333 0082 00C0 rjmp .L20 334 .L26: 335 0084 F093 0000 sts nutTimerList+1,r31 336 0088 E093 0000 sts nutTimerList,r30 337 .L20: 338 /* epilogue start */ 339 008c 1F91 pop r17 340 008e 0F91 pop r16 341 0090 0895 ret 342 .size NutTimerInsert, .-NutTimerInsert GAS LISTING /tmp/ccH8SUYI.s page 7 343 .section .text.NutTimerStop,"ax",@progbits 344 .global NutTimerStop 345 .type NutTimerStop, @function 346 NutTimerStop: 347 0000 0F93 push r16 348 0002 1F93 push r17 349 0004 CF93 push r28 350 0006 DF93 push r29 351 /* prologue: function */ 352 /* frame size = 0 */ 353 /* stack size = 4 */ 354 .L__stack_usage = 4 355 0008 FC01 movw r30,r24 356 000a 1482 std Z+4,__zero_reg__ 357 000c 1582 std Z+5,__zero_reg__ 358 000e 1682 std Z+6,__zero_reg__ 359 0010 1782 std Z+7,__zero_reg__ 360 0012 1586 std Z+13,__zero_reg__ 361 0014 1486 std Z+12,__zero_reg__ 362 0016 4085 ldd r20,Z+8 363 0018 5185 ldd r21,Z+9 364 001a 6285 ldd r22,Z+10 365 001c 7385 ldd r23,Z+11 366 001e 4115 cp r20,__zero_reg__ 367 0020 5105 cpc r21,__zero_reg__ 368 0022 6105 cpc r22,__zero_reg__ 369 0024 7105 cpc r23,__zero_reg__ 370 0026 01F0 breq .L31 371 0028 C281 ldd r28,Z+2 372 002a D381 ldd r29,Z+3 373 002c 8081 ld r24,Z 374 002e 9181 ldd r25,Z+1 375 0030 2097 sbiw r28,0 376 0032 01F0 breq .L33 377 0034 9983 std Y+1,r25 378 0036 8883 st Y,r24 379 0038 00C0 rjmp .L34 380 .L33: 381 003a 9093 0000 sts nutTimerList+1,r25 382 003e 8093 0000 sts nutTimerList,r24 383 .L34: 384 0042 A081 ld r26,Z 385 0044 B181 ldd r27,Z+1 386 0046 1097 sbiw r26,0 387 0048 01F0 breq .L35 388 004a 1396 adiw r26,2+1 389 004c DC93 st X,r29 390 004e CE93 st -X,r28 391 0050 1297 sbiw r26,2 392 0052 1896 adiw r26,8 393 0054 0D91 ld r16,X+ 394 0056 1D91 ld r17,X+ 395 0058 2D91 ld r18,X+ 396 005a 3C91 ld r19,X 397 005c 1B97 sbiw r26,8+3 398 005e 400F add r20,r16 399 0060 511F adc r21,r17 GAS LISTING /tmp/ccH8SUYI.s page 8 400 0062 621F adc r22,r18 401 0064 731F adc r23,r19 402 0066 1896 adiw r26,8 403 0068 4D93 st X+,r20 404 006a 5D93 st X+,r21 405 006c 6D93 st X+,r22 406 006e 7C93 st X,r23 407 0070 1B97 sbiw r26,8+3 408 .L35: 409 0072 1086 std Z+8,__zero_reg__ 410 0074 1186 std Z+9,__zero_reg__ 411 0076 1286 std Z+10,__zero_reg__ 412 0078 1386 std Z+11,__zero_reg__ 413 007a CF01 movw r24,r30 414 /* epilogue start */ 415 007c DF91 pop r29 416 007e CF91 pop r28 417 0080 1F91 pop r17 418 0082 0F91 pop r16 419 0084 0C94 0000 jmp NutTimerInsert 420 .L31: 421 /* epilogue start */ 422 0088 DF91 pop r29 423 008a CF91 pop r28 424 008c 1F91 pop r17 425 008e 0F91 pop r16 426 0090 0895 ret 427 .size NutTimerStop, .-NutTimerStop 428 .section .text.NutGetTickCount,"ax",@progbits 429 .global NutGetTickCount 430 .type NutGetTickCount, @function 431 NutGetTickCount: 432 /* prologue: function */ 433 /* frame size = 0 */ 434 /* stack size = 0 */ 435 .L__stack_usage = 0 436 /* #APP */ 437 ; 810 "../../nut/os/timer.c" 1 438 0000 0FB6 in __tmp_reg__, __SREG__ 439 0002 F894 cli 440 0004 0F92 push __tmp_reg__ 441 442 ; 0 "" 2 443 /* #NOAPP */ 444 0006 6091 0000 lds r22,nut_ticks 445 000a 7091 0000 lds r23,nut_ticks+1 446 000e 8091 0000 lds r24,nut_ticks+2 447 0012 9091 0000 lds r25,nut_ticks+3 448 /* #APP */ 449 ; 812 "../../nut/os/timer.c" 1 450 0016 0F90 pop __tmp_reg__ 451 0018 0FBE out __SREG__, __tmp_reg__ 452 453 ; 0 "" 2 454 /* #NOAPP */ 455 001a 0895 ret 456 .size NutGetTickCount, .-NutGetTickCount GAS LISTING /tmp/ccH8SUYI.s page 9 457 .section .text.NutTimerProcessElapsed,"ax",@progbits 458 .global NutTimerProcessElapsed 459 .type NutTimerProcessElapsed, @function 460 NutTimerProcessElapsed: 461 0000 CF92 push r12 462 0002 DF92 push r13 463 0004 EF92 push r14 464 0006 FF92 push r15 465 0008 CF93 push r28 466 000a DF93 push r29 467 /* prologue: function */ 468 /* frame size = 0 */ 469 /* stack size = 6 */ 470 .L__stack_usage = 6 471 000c 0E94 0000 call NutGetTickCount 472 0010 C090 0000 lds r12,nut_ticks_resume 473 0014 D090 0000 lds r13,nut_ticks_resume+1 474 0018 E090 0000 lds r14,nut_ticks_resume+2 475 001c F090 0000 lds r15,nut_ticks_resume+3 476 0020 9B01 movw r18,r22 477 0022 AC01 movw r20,r24 478 0024 2C19 sub r18,r12 479 0026 3D09 sbc r19,r13 480 0028 4E09 sbc r20,r14 481 002a 5F09 sbc r21,r15 482 002c 6901 movw r12,r18 483 002e 7A01 movw r14,r20 484 0030 6093 0000 sts nut_ticks_resume,r22 485 0034 7093 0000 sts nut_ticks_resume+1,r23 486 0038 8093 0000 sts nut_ticks_resume+2,r24 487 003c 9093 0000 sts nut_ticks_resume+3,r25 488 .L41: 489 0040 C091 0000 lds r28,nutTimerList 490 0044 D091 0000 lds r29,nutTimerList+1 491 0048 2097 sbiw r28,0 492 004a 01F4 brne .+2 493 004c 00C0 rjmp .L40 494 004e C114 cp r12,__zero_reg__ 495 0050 D104 cpc r13,__zero_reg__ 496 0052 E104 cpc r14,__zero_reg__ 497 0054 F104 cpc r15,__zero_reg__ 498 0056 01F4 brne .+2 499 0058 00C0 rjmp .L40 500 005a 8885 ldd r24,Y+8 501 005c 9985 ldd r25,Y+9 502 005e AA85 ldd r26,Y+10 503 0060 BB85 ldd r27,Y+11 504 0062 C816 cp r12,r24 505 0064 D906 cpc r13,r25 506 0066 EA06 cpc r14,r26 507 0068 FB06 cpc r15,r27 508 006a 00F4 brsh .L42 509 006c 8C19 sub r24,r12 510 006e 9D09 sbc r25,r13 511 0070 AE09 sbc r26,r14 512 0072 BF09 sbc r27,r15 513 0074 8887 std Y+8,r24 GAS LISTING /tmp/ccH8SUYI.s page 10 514 0076 9987 std Y+9,r25 515 0078 AA87 std Y+10,r26 516 007a BB87 std Y+11,r27 517 007c C12C mov r12,__zero_reg__ 518 007e D12C mov r13,__zero_reg__ 519 0080 7601 movw r14,r12 520 0082 00C0 rjmp .L43 521 .L42: 522 0084 C81A sub r12,r24 523 0086 D90A sbc r13,r25 524 0088 EA0A sbc r14,r26 525 008a FB0A sbc r15,r27 526 008c 1886 std Y+8,__zero_reg__ 527 008e 1986 std Y+9,__zero_reg__ 528 0090 1A86 std Y+10,__zero_reg__ 529 0092 1B86 std Y+11,__zero_reg__ 530 .L43: 531 0094 8885 ldd r24,Y+8 532 0096 9985 ldd r25,Y+9 533 0098 AA85 ldd r26,Y+10 534 009a BB85 ldd r27,Y+11 535 009c 892B or r24,r25 536 009e 8A2B or r24,r26 537 00a0 8B2B or r24,r27 538 00a2 01F4 brne .L41 539 00a4 EC85 ldd r30,Y+12 540 00a6 FD85 ldd r31,Y+13 541 00a8 3097 sbiw r30,0 542 00aa 01F0 breq .L45 543 00ac 6E85 ldd r22,Y+14 544 00ae 7F85 ldd r23,Y+15 545 00b0 CE01 movw r24,r28 546 00b2 1995 eicall 547 .L45: 548 00b4 E091 0000 lds r30,nutTimerList 549 00b8 F091 0000 lds r31,nutTimerList+1 550 00bc 0190 ld __tmp_reg__,Z+ 551 00be F081 ld r31,Z 552 00c0 E02D mov r30,__tmp_reg__ 553 00c2 F093 0000 sts nutTimerList+1,r31 554 00c6 E093 0000 sts nutTimerList,r30 555 00ca 3097 sbiw r30,0 556 00cc 01F0 breq .L46 557 00ce 1382 std Z+3,__zero_reg__ 558 00d0 1282 std Z+2,__zero_reg__ 559 .L46: 560 00d2 8C81 ldd r24,Y+4 561 00d4 9D81 ldd r25,Y+5 562 00d6 AE81 ldd r26,Y+6 563 00d8 BF81 ldd r27,Y+7 564 00da 8887 std Y+8,r24 565 00dc 9987 std Y+9,r25 566 00de AA87 std Y+10,r26 567 00e0 BB87 std Y+11,r27 568 00e2 892B or r24,r25 569 00e4 8A2B or r24,r26 570 00e6 8B2B or r24,r27 GAS LISTING /tmp/ccH8SUYI.s page 11 571 00e8 01F4 brne .L47 572 00ea BE01 movw r22,r28 573 00ec 80E0 ldi r24,lo8(heapFreeList) 574 00ee 90E0 ldi r25,hi8(heapFreeList) 575 00f0 0E94 0000 call NutHeapRootFree 576 00f4 00C0 rjmp .L41 577 .L47: 578 00f6 CE01 movw r24,r28 579 00f8 0E94 0000 call NutTimerInsert 580 00fc 00C0 rjmp .L41 581 .L40: 582 /* epilogue start */ 583 00fe DF91 pop r29 584 0100 CF91 pop r28 585 0102 FF90 pop r15 586 0104 EF90 pop r14 587 0106 DF90 pop r13 588 0108 CF90 pop r12 589 010a 0895 ret 590 .size NutTimerProcessElapsed, .-NutTimerProcessElapsed 591 .section .text.NutTimerCreate,"ax",@progbits 592 .global NutTimerCreate 593 .type NutTimerCreate, @function 594 NutTimerCreate: 595 0000 4F92 push r4 596 0002 5F92 push r5 597 0004 6F92 push r6 598 0006 7F92 push r7 599 0008 8F92 push r8 600 000a 9F92 push r9 601 000c AF92 push r10 602 000e BF92 push r11 603 0010 CF92 push r12 604 0012 DF92 push r13 605 0014 EF92 push r14 606 0016 FF92 push r15 607 0018 0F93 push r16 608 001a CF93 push r28 609 001c DF93 push r29 610 /* prologue: function */ 611 /* frame size = 0 */ 612 /* stack size = 15 */ 613 .L__stack_usage = 15 614 001e 4B01 movw r8,r22 615 0020 5C01 movw r10,r24 616 0022 6A01 movw r12,r20 617 0024 7901 movw r14,r18 618 0026 60E1 ldi r22,lo8(16) 619 0028 70E0 ldi r23,0 620 002a 80E0 ldi r24,lo8(heapFreeList) 621 002c 90E0 ldi r25,hi8(heapFreeList) 622 002e 0E94 0000 call NutHeapRootAlloc 623 0032 EC01 movw r28,r24 624 0034 892B or r24,r25 625 0036 01F0 breq .L60 626 0038 0E94 0000 call NutGetTickCount 627 003c 4090 0000 lds r4,nut_ticks_resume GAS LISTING /tmp/ccH8SUYI.s page 12 628 0040 5090 0000 lds r5,nut_ticks_resume+1 629 0044 6090 0000 lds r6,nut_ticks_resume+2 630 0048 7090 0000 lds r7,nut_ticks_resume+3 631 004c A501 movw r20,r10 632 004e 9401 movw r18,r8 633 0050 2419 sub r18,r4 634 0052 3509 sbc r19,r5 635 0054 4609 sbc r20,r6 636 0056 5709 sbc r21,r7 637 0058 DC01 movw r26,r24 638 005a CB01 movw r24,r22 639 005c 820F add r24,r18 640 005e 931F adc r25,r19 641 0060 A41F adc r26,r20 642 0062 B51F adc r27,r21 643 0064 8887 std Y+8,r24 644 0066 9987 std Y+9,r25 645 0068 AA87 std Y+10,r26 646 006a BB87 std Y+11,r27 647 006c 00FF sbrs r16,0 648 006e 00C0 rjmp .L61 649 0070 1C82 std Y+4,__zero_reg__ 650 0072 1D82 std Y+5,__zero_reg__ 651 0074 1E82 std Y+6,__zero_reg__ 652 0076 1F82 std Y+7,__zero_reg__ 653 0078 00C0 rjmp .L62 654 .L61: 655 007a 8C82 std Y+4,r8 656 007c 9D82 std Y+5,r9 657 007e AE82 std Y+6,r10 658 0080 BF82 std Y+7,r11 659 .L62: 660 0082 DD86 std Y+13,r13 661 0084 CC86 std Y+12,r12 662 0086 FF86 std Y+15,r15 663 0088 EE86 std Y+14,r14 664 .L60: 665 008a CE01 movw r24,r28 666 /* epilogue start */ 667 008c DF91 pop r29 668 008e CF91 pop r28 669 0090 0F91 pop r16 670 0092 FF90 pop r15 671 0094 EF90 pop r14 672 0096 DF90 pop r13 673 0098 CF90 pop r12 674 009a BF90 pop r11 675 009c AF90 pop r10 676 009e 9F90 pop r9 677 00a0 8F90 pop r8 678 00a2 7F90 pop r7 679 00a4 6F90 pop r6 680 00a6 5F90 pop r5 681 00a8 4F90 pop r4 682 00aa 0895 ret 683 .size NutTimerCreate, .-NutTimerCreate 684 .section .text.NutTimerStartTicks,"ax",@progbits GAS LISTING /tmp/ccH8SUYI.s page 13 685 .global NutTimerStartTicks 686 .type NutTimerStartTicks, @function 687 NutTimerStartTicks: 688 0000 0F93 push r16 689 0002 CF93 push r28 690 0004 DF93 push r29 691 /* prologue: function */ 692 /* frame size = 0 */ 693 /* stack size = 3 */ 694 .L__stack_usage = 3 695 0006 0E94 0000 call NutTimerCreate 696 000a EC01 movw r28,r24 697 000c 0097 sbiw r24,0 698 000e 01F0 breq .L67 699 0010 0E94 0000 call NutTimerInsert 700 .L67: 701 0014 CE01 movw r24,r28 702 /* epilogue start */ 703 0016 DF91 pop r29 704 0018 CF91 pop r28 705 001a 0F91 pop r16 706 001c 0895 ret 707 .size NutTimerStartTicks, .-NutTimerStartTicks 708 .section .text.NutTimerStart,"ax",@progbits 709 .global NutTimerStart 710 .type NutTimerStart, @function 711 NutTimerStart: 712 0000 0F93 push r16 713 0002 CF93 push r28 714 0004 DF93 push r29 715 0006 00D0 rcall . 716 0008 1F92 push __zero_reg__ 717 000a CDB7 in r28,__SP_L__ 718 000c DEB7 in r29,__SP_H__ 719 /* prologue: function */ 720 /* frame size = 4 */ 721 /* stack size = 7 */ 722 .L__stack_usage = 7 723 000e 2B83 std Y+3,r18 724 0010 3C83 std Y+4,r19 725 0012 4983 std Y+1,r20 726 0014 5A83 std Y+2,r21 727 0016 0E94 0000 call NutTimerMillisToTicks 728 001a 2B81 ldd r18,Y+3 729 001c 3C81 ldd r19,Y+4 730 001e 4981 ldd r20,Y+1 731 0020 5A81 ldd r21,Y+2 732 0022 0E94 0000 call NutTimerStartTicks 733 /* epilogue start */ 734 0026 0F90 pop __tmp_reg__ 735 0028 0F90 pop __tmp_reg__ 736 002a 0F90 pop __tmp_reg__ 737 002c 0F90 pop __tmp_reg__ 738 002e DF91 pop r29 739 0030 CF91 pop r28 740 0032 0F91 pop r16 741 0034 0895 ret GAS LISTING /tmp/ccH8SUYI.s page 14 742 .size NutTimerStart, .-NutTimerStart 743 .section .text.NutSleep,"ax",@progbits 744 .global NutSleep 745 .type NutSleep, @function 746 NutSleep: 747 0000 CF92 push r12 748 0002 DF92 push r13 749 0004 EF92 push r14 750 0006 FF92 push r15 751 0008 0F93 push r16 752 000a CF93 push r28 753 000c DF93 push r29 754 /* prologue: function */ 755 /* frame size = 0 */ 756 /* stack size = 7 */ 757 .L__stack_usage = 7 758 000e 6B01 movw r12,r22 759 0010 7C01 movw r14,r24 760 0012 672B or r22,r23 761 0014 682B or r22,r24 762 0016 692B or r22,r25 763 0018 01F4 brne .+2 764 001a 00C0 rjmp .L73 765 001c 60E0 ldi r22,lo8(runQueue) 766 001e 70E0 ldi r23,hi8(runQueue) 767 0020 8091 0000 lds r24,runningThread 768 0024 9091 0000 lds r25,runningThread+1 769 0028 0E94 0000 call NutThreadRemoveQueue 770 002c C091 0000 lds r28,runningThread 771 0030 D091 0000 lds r29,runningThread+1 772 0034 83E0 ldi r24,lo8(3) 773 0036 8F87 std Y+15,r24 774 0038 01E0 ldi r16,lo8(1) 775 003a 9E01 movw r18,r28 776 003c 40E0 ldi r20,lo8(gs(NutThreadWake)) 777 003e 50E0 ldi r21,hi8(gs(NutThreadWake)) 778 0040 C701 movw r24,r14 779 0042 B601 movw r22,r12 780 0044 0E94 0000 call NutTimerStart 781 0048 9E8B std Y+22,r25 782 004a 8D8B std Y+21,r24 783 004c 892B or r24,r25 784 004e 01F0 breq .L74 785 /* epilogue start */ 786 0050 DF91 pop r29 787 0052 CF91 pop r28 788 0054 0F91 pop r16 789 0056 FF90 pop r15 790 0058 EF90 pop r14 791 005a DF90 pop r13 792 005c CF90 pop r12 793 005e 0C94 0000 jmp NutThreadResume 794 .L74: 795 0062 E091 0000 lds r30,runningThread 796 0066 F091 0000 lds r31,runningThread+1 797 006a 80E0 ldi r24,lo8(runQueue) 798 006c 90E0 ldi r25,hi8(runQueue) GAS LISTING /tmp/ccH8SUYI.s page 15 799 006e 908F std Z+24,r25 800 0070 878B std Z+23,r24 801 0072 8091 0000 lds r24,runQueue 802 0076 9091 0000 lds r25,runQueue+1 803 007a 9383 std Z+3,r25 804 007c 8283 std Z+2,r24 805 007e 81E0 ldi r24,lo8(1) 806 0080 8787 std Z+15,r24 807 0082 F093 0000 sts runQueue+1,r31 808 0086 E093 0000 sts runQueue,r30 809 /* epilogue start */ 810 008a DF91 pop r29 811 008c CF91 pop r28 812 008e 0F91 pop r16 813 0090 FF90 pop r15 814 0092 EF90 pop r14 815 0094 DF90 pop r13 816 0096 CF90 pop r12 817 0098 0895 ret 818 .L73: 819 /* epilogue start */ 820 009a DF91 pop r29 821 009c CF91 pop r28 822 009e 0F91 pop r16 823 00a0 FF90 pop r15 824 00a2 EF90 pop r14 825 00a4 DF90 pop r13 826 00a6 CF90 pop r12 827 00a8 0C94 0000 jmp NutThreadYield 828 .size NutSleep, .-NutSleep 829 .section .text.NutGetSeconds,"ax",@progbits 830 .global NutGetSeconds 831 .type NutGetSeconds, @function 832 NutGetSeconds: 833 /* prologue: function */ 834 /* frame size = 0 */ 835 /* stack size = 0 */ 836 .L__stack_usage = 0 837 0000 6091 0000 lds r22,system_time 838 0004 7091 0000 lds r23,system_time+1 839 0008 8091 0000 lds r24,system_time+2 840 000c 9091 0000 lds r25,system_time+3 841 0010 0895 ret 842 .size NutGetSeconds, .-NutGetSeconds 843 .section .text.NutGetMillis,"ax",@progbits 844 .global NutGetMillis 845 .type NutGetMillis, @function 846 NutGetMillis: 847 0000 8F92 push r8 848 0002 9F92 push r9 849 0004 AF92 push r10 850 0006 BF92 push r11 851 0008 CF92 push r12 852 000a DF92 push r13 853 000c EF92 push r14 854 000e FF92 push r15 855 /* prologue: function */ GAS LISTING /tmp/ccH8SUYI.s page 16 856 /* frame size = 0 */ 857 /* stack size = 8 */ 858 .L__stack_usage = 8 859 0010 E0E0 ldi r30,lo8(system_time) 860 0012 F0E0 ldi r31,hi8(system_time) 861 0014 2081 ld r18,Z 862 0016 3181 ldd r19,Z+1 863 0018 4281 ldd r20,Z+2 864 001a 5381 ldd r21,Z+3 865 001c 8480 ldd r8,Z+4 866 001e 9580 ldd r9,Z+5 867 0020 A680 ldd r10,Z+6 868 0022 B780 ldd r11,Z+7 869 0024 A8EE ldi r26,lo8(-24) 870 0026 B3E0 ldi r27,lo8(3) 871 0028 0E94 0000 call __muluhisi3 872 002c 6B01 movw r12,r22 873 002e 7C01 movw r14,r24 874 0030 C501 movw r24,r10 875 0032 B401 movw r22,r8 876 0034 28EE ldi r18,lo8(-24) 877 0036 33E0 ldi r19,lo8(3) 878 0038 40E0 ldi r20,0 879 003a 50E0 ldi r21,0 880 003c 0E94 0000 call __divmodsi4 881 0040 C701 movw r24,r14 882 0042 B601 movw r22,r12 883 0044 620F add r22,r18 884 0046 731F adc r23,r19 885 0048 841F adc r24,r20 886 004a 951F adc r25,r21 887 /* epilogue start */ 888 004c FF90 pop r15 889 004e EF90 pop r14 890 0050 DF90 pop r13 891 0052 CF90 pop r12 892 0054 BF90 pop r11 893 0056 AF90 pop r10 894 0058 9F90 pop r9 895 005a 8F90 pop r8 896 005c 0895 ret 897 .size NutGetMillis, .-NutGetMillis 898 .section .text.NutClockSet,"ax",@progbits 899 .global NutClockSet 900 .type NutClockSet, @function 901 NutClockSet: 902 /* prologue: function */ 903 /* frame size = 0 */ 904 /* stack size = 0 */ 905 .L__stack_usage = 0 906 0000 1092 0000 sts clock_cache,__zero_reg__ 907 0004 1092 0000 sts clock_cache+1,__zero_reg__ 908 0008 1092 0000 sts clock_cache+2,__zero_reg__ 909 000c 1092 0000 sts clock_cache+3,__zero_reg__ 910 0010 80E0 ldi r24,0 911 0012 90E0 ldi r25,0 912 0014 0895 ret GAS LISTING /tmp/ccH8SUYI.s page 17 913 .size NutClockSet, .-NutClockSet 914 .section .text.NutGetCpuClock,"ax",@progbits 915 .global NutGetCpuClock 916 .type NutGetCpuClock, @function 917 NutGetCpuClock: 918 /* prologue: function */ 919 /* frame size = 0 */ 920 /* stack size = 0 */ 921 .L__stack_usage = 0 922 0000 60E0 ldi r22,0 923 0002 70E0 ldi r23,0 924 0004 81EE ldi r24,lo8(-31) 925 0006 90E0 ldi r25,0 926 0008 0895 ret 927 .size NutGetCpuClock, .-NutGetCpuClock 928 .comm _delay_loop_2_mult,2,1 929 .local clock_cache 930 .comm clock_cache,4,1 931 .global systick_us 932 .section .bss 933 .type systick_us, @object 934 .size systick_us, 4 935 systick_us: 936 0000 0000 0000 .zero 4 937 .global system_time 938 .type system_time, @object 939 .size system_time, 8 940 system_time: 941 0004 0000 0000 .zero 8 941 0000 0000 942 .global nut_ticks 943 .type nut_ticks, @object 944 .size nut_ticks, 4 945 nut_ticks: 946 000c 0000 0000 .zero 4 947 .local nut_ticks_resume 948 .comm nut_ticks_resume,4,1 949 .comm nutTimerList,2,1 950 .ident "GCC: (GNU) 5.3.0" 951 .global __do_clear_bss GAS LISTING /tmp/ccH8SUYI.s page 18 DEFINED SYMBOLS *ABS*:0000000000000000 timer.c /tmp/ccH8SUYI.s:2 *ABS*:000000000000003e __SP_H__ /tmp/ccH8SUYI.s:3 *ABS*:000000000000003d __SP_L__ /tmp/ccH8SUYI.s:4 *ABS*:000000000000003f __SREG__ /tmp/ccH8SUYI.s:5 *ABS*:000000000000003b __RAMPZ__ /tmp/ccH8SUYI.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/ccH8SUYI.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/ccH8SUYI.s:11 .text.NutTimerIntr:0000000000000000 NutTimerIntr /tmp/ccH8SUYI.s:945 .bss:000000000000000c nut_ticks /tmp/ccH8SUYI.s:940 .bss:0000000000000004 system_time /tmp/ccH8SUYI.s:935 .bss:0000000000000000 systick_us /tmp/ccH8SUYI.s:80 .text.NutMicroDelay.part.1:0000000000000000 NutMicroDelay.part.1 *COM*:0000000000000002 _delay_loop_2_mult /tmp/ccH8SUYI.s:162 .text.NutTimerInit:0000000000000000 NutTimerInit /tmp/ccH8SUYI.s:196 .text.NutMicroDelay:0000000000000000 NutMicroDelay /tmp/ccH8SUYI.s:236 .text.NutDelay:0000000000000000 NutDelay /tmp/ccH8SUYI.s:261 .text.NutTimerInsert:0000000000000000 NutTimerInsert *COM*:0000000000000002 nutTimerList /tmp/ccH8SUYI.s:346 .text.NutTimerStop:0000000000000000 NutTimerStop /tmp/ccH8SUYI.s:431 .text.NutGetTickCount:0000000000000000 NutGetTickCount /tmp/ccH8SUYI.s:460 .text.NutTimerProcessElapsed:0000000000000000 NutTimerProcessElapsed /tmp/ccH8SUYI.s:930 .bss:0000000000000014 nut_ticks_resume /tmp/ccH8SUYI.s:594 .text.NutTimerCreate:0000000000000000 NutTimerCreate /tmp/ccH8SUYI.s:687 .text.NutTimerStartTicks:0000000000000000 NutTimerStartTicks /tmp/ccH8SUYI.s:711 .text.NutTimerStart:0000000000000000 NutTimerStart /tmp/ccH8SUYI.s:746 .text.NutSleep:0000000000000000 NutSleep /tmp/ccH8SUYI.s:832 .text.NutGetSeconds:0000000000000000 NutGetSeconds /tmp/ccH8SUYI.s:846 .text.NutGetMillis:0000000000000000 NutGetMillis /tmp/ccH8SUYI.s:901 .text.NutClockSet:0000000000000000 NutClockSet .bss:0000000000000010 clock_cache /tmp/ccH8SUYI.s:917 .text.NutGetCpuClock:0000000000000000 NutGetCpuClock UNDEFINED SYMBOLS __muluhisi3 __mulohisi3 NutRegisterTimer NutGetTickClock __udivmodsi4 heapFreeList NutHeapRootFree NutHeapRootAlloc NutTimerMillisToTicks runQueue runningThread NutThreadRemoveQueue NutThreadWake NutThreadResume NutThreadYield __divmodsi4 __do_clear_bss