msg.lst 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723
  1. GAS LISTING /tmp/ccbe4QK8.s page 1
  2. 1 .file "msg.c"
  3. 2 __SP_H__ = 0x3e
  4. 3 __SP_L__ = 0x3d
  5. 4 __SREG__ = 0x3f
  6. 5 __RAMPZ__ = 0x3b
  7. 6 __tmp_reg__ = 0
  8. 7 __zero_reg__ = 1
  9. 8 .section .text.NutMsgQFreeTimer,"ax",@progbits
  10. 9 .type NutMsgQFreeTimer, @function
  11. 10 NutMsgQFreeTimer:
  12. 11 /* prologue: function */
  13. 12 /* frame size = 0 */
  14. 13 /* stack size = 0 */
  15. 14 .L__stack_usage = 0
  16. 15 0000 DC01 movw r26,r24
  17. 16 0002 1296 adiw r26,2
  18. 17 0004 ED91 ld r30,X+
  19. 18 0006 FC91 ld r31,X
  20. 19 0008 1397 sbiw r26,2+1
  21. 20 000a 1296 adiw r26,2
  22. 21 .L2:
  23. 22 000c 3097 sbiw r30,0
  24. 23 000e 01F0 breq .L7
  25. 24 0010 E617 cp r30,r22
  26. 25 0012 F707 cpc r31,r23
  27. 26 0014 01F4 brne .L3
  28. 27 0016 2085 ldd r18,Z+8
  29. 28 0018 3185 ldd r19,Z+9
  30. 29 001a 2D93 st X+,r18
  31. 30 001c 3C93 st X,r19
  32. 31 001e 8091 0000 lds r24,nutMsgFreeTimers
  33. 32 0022 9091 0000 lds r25,nutMsgFreeTimers+1
  34. 33 0026 9187 std Z+9,r25
  35. 34 0028 8087 std Z+8,r24
  36. 35 002a F093 0000 sts nutMsgFreeTimers+1,r31
  37. 36 002e E093 0000 sts nutMsgFreeTimers,r30
  38. 37 0032 0895 ret
  39. 38 .L3:
  40. 39 0034 DF01 movw r26,r30
  41. 40 0036 1896 adiw r26,8
  42. 41 0038 0084 ldd __tmp_reg__,Z+8
  43. 42 003a F185 ldd r31,Z+9
  44. 43 003c E02D mov r30,__tmp_reg__
  45. 44 003e 00C0 rjmp .L2
  46. 45 .L7:
  47. 46 0040 0895 ret
  48. 47 .size NutMsgQFreeTimer, .-NutMsgQFreeTimer
  49. 48 .section .text.NutMsgQCreate,"ax",@progbits
  50. 49 .global NutMsgQCreate
  51. 50 .type NutMsgQCreate, @function
  52. 51 NutMsgQCreate:
  53. 52 0000 CF93 push r28
  54. 53 0002 DF93 push r29
  55. 54 /* prologue: function */
  56. 55 /* frame size = 0 */
  57. 56 /* stack size = 2 */
  58. 57 .L__stack_usage = 2
  59. GAS LISTING /tmp/ccbe4QK8.s page 2
  60. 58 0004 C1E0 ldi r28,lo8(1)
  61. 59 0006 D0E0 ldi r29,0
  62. 60 0008 00C0 rjmp 2f
  63. 61 1:
  64. 62 000a CC0F lsl r28
  65. 63 2:
  66. 64 000c 8A95 dec r24
  67. 65 000e 02F4 brpl 1b
  68. 66 0010 85E0 ldi r24,lo8(5)
  69. 67 0012 C89F mul r28,r24
  70. 68 0014 B001 movw r22,r0
  71. 69 0016 1124 clr __zero_reg__
  72. 70 0018 625F subi r22,-14
  73. 71 001a 7F4F sbci r23,-1
  74. 72 001c 80E0 ldi r24,lo8(heapFreeList)
  75. 73 001e 90E0 ldi r25,hi8(heapFreeList)
  76. 74 0020 0E94 0000 call NutHeapRootAllocClear
  77. 75 0024 0097 sbiw r24,0
  78. 76 0026 01F0 breq .L9
  79. 77 0028 C150 subi r28,lo8(-(-1))
  80. 78 002a FC01 movw r30,r24
  81. 79 002c C087 std Z+8,r28
  82. 80 002e 2091 0000 lds r18,nutMsgQue
  83. 81 0032 3091 0000 lds r19,nutMsgQue+1
  84. 82 0036 3583 std Z+5,r19
  85. 83 0038 2483 std Z+4,r18
  86. 84 003a 9093 0000 sts nutMsgQue+1,r25
  87. 85 003e 8093 0000 sts nutMsgQue,r24
  88. 86 .L9:
  89. 87 /* epilogue start */
  90. 88 0042 DF91 pop r29
  91. 89 0044 CF91 pop r28
  92. 90 0046 0895 ret
  93. 91 .size NutMsgQCreate, .-NutMsgQCreate
  94. 92 .section .text.NutMsgQFull,"ax",@progbits
  95. 93 .global NutMsgQFull
  96. 94 .type NutMsgQFull, @function
  97. 95 NutMsgQFull:
  98. 96 /* prologue: function */
  99. 97 /* frame size = 0 */
  100. 98 /* stack size = 0 */
  101. 99 .L__stack_usage = 0
  102. 100 0000 FC01 movw r30,r24
  103. 101 0002 2781 ldd r18,Z+7
  104. 102 0004 30E0 ldi r19,0
  105. 103 0006 2F5F subi r18,-1
  106. 104 0008 3F4F sbci r19,-1
  107. 105 000a 4085 ldd r20,Z+8
  108. 106 000c 50E0 ldi r21,0
  109. 107 000e 2423 and r18,r20
  110. 108 0010 3523 and r19,r21
  111. 109 0012 4681 ldd r20,Z+6
  112. 110 0014 50E0 ldi r21,0
  113. 111 0016 81E0 ldi r24,lo8(1)
  114. 112 0018 90E0 ldi r25,0
  115. 113 001a 2417 cp r18,r20
  116. 114 001c 3507 cpc r19,r21
  117. GAS LISTING /tmp/ccbe4QK8.s page 3
  118. 115 001e 01F0 breq .L14
  119. 116 0020 80E0 ldi r24,0
  120. 117 0022 90E0 ldi r25,0
  121. 118 .L14:
  122. 119 0024 9195 neg r25
  123. 120 0026 8195 neg r24
  124. 121 0028 9109 sbc r25,__zero_reg__
  125. 122 002a 0895 ret
  126. 123 .size NutMsgQFull, .-NutMsgQFull
  127. 124 .section .text.NutMsgQPost,"ax",@progbits
  128. 125 .global NutMsgQPost
  129. 126 .type NutMsgQPost, @function
  130. 127 NutMsgQPost:
  131. 128 0000 AF92 push r10
  132. 129 0002 BF92 push r11
  133. 130 0004 CF92 push r12
  134. 131 0006 DF92 push r13
  135. 132 0008 EF92 push r14
  136. 133 000a FF92 push r15
  137. 134 000c 0F93 push r16
  138. 135 000e 1F93 push r17
  139. 136 0010 CF93 push r28
  140. 137 0012 DF93 push r29
  141. 138 0014 1F92 push __zero_reg__
  142. 139 0016 CDB7 in r28,__SP_L__
  143. 140 0018 DEB7 in r29,__SP_H__
  144. 141 /* prologue: function */
  145. 142 /* frame size = 1 */
  146. 143 /* stack size = 11 */
  147. 144 .L__stack_usage = 11
  148. 145 001a 5C01 movw r10,r24
  149. 146 001c 6A01 movw r12,r20
  150. 147 001e 7901 movw r14,r18
  151. 148 /* #APP */
  152. 149 ; 160 "../../nut/os/msg.c" 1
  153. 150 0020 0FB6 in __tmp_reg__, __SREG__
  154. 151 0022 F894 cli
  155. 152 0024 0F92 push __tmp_reg__
  156. 153
  157. 154 ; 0 "" 2
  158. 155 /* #NOAPP */
  159. 156 0026 6983 std Y+1,r22
  160. 157 0028 0E94 0000 call NutMsgQFull
  161. 158 002c 8C01 movw r16,r24
  162. 159 002e 6981 ldd r22,Y+1
  163. 160 0030 892B or r24,r25
  164. 161 0032 01F0 breq .L16
  165. 162 /* #APP */
  166. 163 ; 163 "../../nut/os/msg.c" 1
  167. 164 0034 0F90 pop __tmp_reg__
  168. 165 0036 0FBE out __SREG__, __tmp_reg__
  169. 166
  170. 167 ; 0 "" 2
  171. 168 /* #NOAPP */
  172. 169 0038 0FEF ldi r16,lo8(-1)
  173. 170 003a 1FEF ldi r17,lo8(-1)
  174. 171 003c 00C0 rjmp .L17
  175. GAS LISTING /tmp/ccbe4QK8.s page 4
  176. 172 .L16:
  177. 173 003e F501 movw r30,r10
  178. 174 0040 8781 ldd r24,Z+7
  179. 175 0042 3996 adiw r30,9
  180. 176 0044 95E0 ldi r25,lo8(5)
  181. 177 0046 899F mul r24,r25
  182. 178 0048 E00D add r30,r0
  183. 179 004a F11D adc r31,r1
  184. 180 004c 1124 clr __zero_reg__
  185. 181 004e 6083 st Z,r22
  186. 182 0050 D282 std Z+2,r13
  187. 183 0052 C182 std Z+1,r12
  188. 184 0054 F482 std Z+4,r15
  189. 185 0056 E382 std Z+3,r14
  190. 186 0058 F501 movw r30,r10
  191. 187 005a 8781 ldd r24,Z+7
  192. 188 005c 8F5F subi r24,lo8(-(1))
  193. 189 005e 9085 ldd r25,Z+8
  194. 190 0060 8923 and r24,r25
  195. 191 0062 8783 std Z+7,r24
  196. 192 /* #APP */
  197. 193 ; 176 "../../nut/os/msg.c" 1
  198. 194 0064 0F90 pop __tmp_reg__
  199. 195 0066 0FBE out __SREG__, __tmp_reg__
  200. 196
  201. 197 ; 0 "" 2
  202. 198 /* #NOAPP */
  203. 199 0068 C501 movw r24,r10
  204. 200 006a 0E94 0000 call NutEventPostAsync
  205. 201 .L17:
  206. 202 006e C801 movw r24,r16
  207. 203 /* epilogue start */
  208. 204 0070 0F90 pop __tmp_reg__
  209. 205 0072 DF91 pop r29
  210. 206 0074 CF91 pop r28
  211. 207 0076 1F91 pop r17
  212. 208 0078 0F91 pop r16
  213. 209 007a FF90 pop r15
  214. 210 007c EF90 pop r14
  215. 211 007e DF90 pop r13
  216. 212 0080 CF90 pop r12
  217. 213 0082 BF90 pop r11
  218. 214 0084 AF90 pop r10
  219. 215 0086 0895 ret
  220. 216 .size NutMsgQPost, .-NutMsgQPost
  221. 217 .section .text.NutMsgQBroadcast,"ax",@progbits
  222. 218 .global NutMsgQBroadcast
  223. 219 .type NutMsgQBroadcast, @function
  224. 220 NutMsgQBroadcast:
  225. 221 0000 AF92 push r10
  226. 222 0002 BF92 push r11
  227. 223 0004 CF92 push r12
  228. 224 0006 DF92 push r13
  229. 225 0008 FF92 push r15
  230. 226 000a 0F93 push r16
  231. 227 000c 1F93 push r17
  232. 228 000e CF93 push r28
  233. GAS LISTING /tmp/ccbe4QK8.s page 5
  234. 229 0010 DF93 push r29
  235. 230 /* prologue: function */
  236. 231 /* frame size = 0 */
  237. 232 /* stack size = 9 */
  238. 233 .L__stack_usage = 9
  239. 234 0012 F82E mov r15,r24
  240. 235 0014 6B01 movw r12,r22
  241. 236 0016 5A01 movw r10,r20
  242. 237 0018 C091 0000 lds r28,nutMsgQue
  243. 238 001c D091 0000 lds r29,nutMsgQue+1
  244. 239 0020 00E0 ldi r16,0
  245. 240 0022 10E0 ldi r17,0
  246. 241 .L19:
  247. 242 0024 2097 sbiw r28,0
  248. 243 0026 01F0 breq .L21
  249. 244 0028 9501 movw r18,r10
  250. 245 002a A601 movw r20,r12
  251. 246 002c 6F2D mov r22,r15
  252. 247 002e CE01 movw r24,r28
  253. 248 0030 0E94 0000 call NutMsgQPost
  254. 249 0034 081B sub r16,r24
  255. 250 0036 190B sbc r17,r25
  256. 251 0038 0C80 ldd __tmp_reg__,Y+4
  257. 252 003a DD81 ldd r29,Y+5
  258. 253 003c C02D mov r28,__tmp_reg__
  259. 254 003e 00C0 rjmp .L19
  260. 255 .L21:
  261. 256 0040 C801 movw r24,r16
  262. 257 /* epilogue start */
  263. 258 0042 DF91 pop r29
  264. 259 0044 CF91 pop r28
  265. 260 0046 1F91 pop r17
  266. 261 0048 0F91 pop r16
  267. 262 004a FF90 pop r15
  268. 263 004c DF90 pop r13
  269. 264 004e CF90 pop r12
  270. 265 0050 BF90 pop r11
  271. 266 0052 AF90 pop r10
  272. 267 0054 0895 ret
  273. 268 .size NutMsgQBroadcast, .-NutMsgQBroadcast
  274. 269 .section .text.NutMsgQSend,"ax",@progbits
  275. 270 .global NutMsgQSend
  276. 271 .type NutMsgQSend, @function
  277. 272 NutMsgQSend:
  278. 273 0000 CF93 push r28
  279. 274 0002 DF93 push r29
  280. 275 0004 1F92 push __zero_reg__
  281. 276 0006 1F92 push __zero_reg__
  282. 277 0008 CDB7 in r28,__SP_L__
  283. 278 000a DEB7 in r29,__SP_H__
  284. 279 /* prologue: function */
  285. 280 /* frame size = 2 */
  286. 281 /* stack size = 4 */
  287. 282 .L__stack_usage = 4
  288. 283 000c 0E94 0000 call NutMsgQPost
  289. 284 0010 0097 sbiw r24,0
  290. 285 0012 01F4 brne .L24
  291. GAS LISTING /tmp/ccbe4QK8.s page 6
  292. 286 0014 8983 std Y+1,r24
  293. 287 0016 9A83 std Y+2,r25
  294. 288 0018 0E94 0000 call NutThreadYield
  295. 289 001c 8981 ldd r24,Y+1
  296. 290 001e 9A81 ldd r25,Y+2
  297. 291 0020 00C0 rjmp .L23
  298. 292 .L24:
  299. 293 0022 8FEF ldi r24,lo8(-1)
  300. 294 0024 9FEF ldi r25,lo8(-1)
  301. 295 .L23:
  302. 296 /* epilogue start */
  303. 297 0026 0F90 pop __tmp_reg__
  304. 298 0028 0F90 pop __tmp_reg__
  305. 299 002a DF91 pop r29
  306. 300 002c CF91 pop r28
  307. 301 002e 0895 ret
  308. 302 .size NutMsgQSend, .-NutMsgQSend
  309. 303 .section .text.NutMsgQTimerCb,"ax",@progbits
  310. 304 .type NutMsgQTimerCb, @function
  311. 305 NutMsgQTimerCb:
  312. 306 0000 0F93 push r16
  313. 307 0002 CF93 push r28
  314. 308 0004 DF93 push r29
  315. 309 /* prologue: function */
  316. 310 /* frame size = 0 */
  317. 311 /* stack size = 3 */
  318. 312 .L__stack_usage = 3
  319. 313 0006 EB01 movw r28,r22
  320. 314 0008 9B01 movw r18,r22
  321. 315 000a 40E0 ldi r20,0
  322. 316 000c 50E0 ldi r21,0
  323. 317 000e 6EEF ldi r22,lo8(-2)
  324. 318 0010 8881 ld r24,Y
  325. 319 0012 9981 ldd r25,Y+1
  326. 320 0014 0E94 0000 call NutMsgQPost
  327. 321 0018 2A85 ldd r18,Y+10
  328. 322 001a 892B or r24,r25
  329. 323 001c 01F0 breq .L26
  330. 324 001e 2223 tst r18
  331. 325 0020 01F0 breq .L25
  332. 326 0022 01E0 ldi r16,lo8(1)
  333. 327 0024 9E01 movw r18,r28
  334. 328 0026 40E0 ldi r20,lo8(gs(NutMsgQTimerCb))
  335. 329 0028 50E0 ldi r21,hi8(gs(NutMsgQTimerCb))
  336. 330 002a 61E0 ldi r22,lo8(1)
  337. 331 002c 70E0 ldi r23,0
  338. 332 002e 80E0 ldi r24,0
  339. 333 0030 90E0 ldi r25,0
  340. 334 0032 0E94 0000 call NutTimerStartTicks
  341. 335 0036 9F83 std Y+7,r25
  342. 336 0038 8E83 std Y+6,r24
  343. 337 003a 00C0 rjmp .L25
  344. 338 .L26:
  345. 339 003c 2223 tst r18
  346. 340 003e 01F0 breq .L25
  347. 341 0040 1F82 std Y+7,__zero_reg__
  348. 342 0042 1E82 std Y+6,__zero_reg__
  349. GAS LISTING /tmp/ccbe4QK8.s page 7
  350. 343 .L25:
  351. 344 /* epilogue start */
  352. 345 0044 DF91 pop r29
  353. 346 0046 CF91 pop r28
  354. 347 0048 0F91 pop r16
  355. 348 004a 0895 ret
  356. 349 .size NutMsgQTimerCb, .-NutMsgQTimerCb
  357. 350 .section .text.NutMsgQStartTimer,"ax",@progbits
  358. 351 .global NutMsgQStartTimer
  359. 352 .type NutMsgQStartTimer, @function
  360. 353 NutMsgQStartTimer:
  361. 354 0000 4F92 push r4
  362. 355 0002 5F92 push r5
  363. 356 0004 6F92 push r6
  364. 357 0006 7F92 push r7
  365. 358 0008 AF92 push r10
  366. 359 000a BF92 push r11
  367. 360 000c CF92 push r12
  368. 361 000e DF92 push r13
  369. 362 0010 EF92 push r14
  370. 363 0012 0F93 push r16
  371. 364 0014 1F93 push r17
  372. 365 0016 CF93 push r28
  373. 366 0018 DF93 push r29
  374. 367 /* prologue: function */
  375. 368 /* frame size = 0 */
  376. 369 /* stack size = 13 */
  377. 370 .L__stack_usage = 13
  378. 371 001a 6C01 movw r12,r24
  379. 372 001c 2A01 movw r4,r20
  380. 373 001e 3B01 movw r6,r22
  381. 374 0020 5901 movw r10,r18
  382. 375 0022 C091 0000 lds r28,nutMsgFreeTimers
  383. 376 0026 D091 0000 lds r29,nutMsgFreeTimers+1
  384. 377 002a 2097 sbiw r28,0
  385. 378 002c 01F0 breq .L35
  386. 379 002e 8885 ldd r24,Y+8
  387. 380 0030 9985 ldd r25,Y+9
  388. 381 0032 9093 0000 sts nutMsgFreeTimers+1,r25
  389. 382 0036 8093 0000 sts nutMsgFreeTimers,r24
  390. 383 003a 00C0 rjmp .L36
  391. 384 .L35:
  392. 385 003c 6BE0 ldi r22,lo8(11)
  393. 386 003e 70E0 ldi r23,0
  394. 387 0040 80E0 ldi r24,lo8(heapFreeList)
  395. 388 0042 90E0 ldi r25,hi8(heapFreeList)
  396. 389 0044 0E94 0000 call NutHeapRootAlloc
  397. 390 0048 EC01 movw r28,r24
  398. 391 .L36:
  399. 392 004a D982 std Y+1,r13
  400. 393 004c C882 st Y,r12
  401. 394 004e 1D83 std Y+5,r17
  402. 395 0050 0C83 std Y+4,r16
  403. 396 0052 BB82 std Y+3,r11
  404. 397 0054 AA82 std Y+2,r10
  405. 398 0056 EA86 std Y+10,r14
  406. 399 0058 0E2D mov r16,r14
  407. GAS LISTING /tmp/ccbe4QK8.s page 8
  408. 400 005a 9E01 movw r18,r28
  409. 401 005c 40E0 ldi r20,lo8(gs(NutMsgQTimerCb))
  410. 402 005e 50E0 ldi r21,hi8(gs(NutMsgQTimerCb))
  411. 403 0060 C301 movw r24,r6
  412. 404 0062 B201 movw r22,r4
  413. 405 0064 0E94 0000 call NutTimerStart
  414. 406 0068 9F83 std Y+7,r25
  415. 407 006a 8E83 std Y+6,r24
  416. 408 006c F601 movw r30,r12
  417. 409 006e 8281 ldd r24,Z+2
  418. 410 0070 9381 ldd r25,Z+3
  419. 411 0072 9987 std Y+9,r25
  420. 412 0074 8887 std Y+8,r24
  421. 413 0076 D383 std Z+3,r29
  422. 414 0078 C283 std Z+2,r28
  423. 415 007a CE01 movw r24,r28
  424. 416 /* epilogue start */
  425. 417 007c DF91 pop r29
  426. 418 007e CF91 pop r28
  427. 419 0080 1F91 pop r17
  428. 420 0082 0F91 pop r16
  429. 421 0084 EF90 pop r14
  430. 422 0086 DF90 pop r13
  431. 423 0088 CF90 pop r12
  432. 424 008a BF90 pop r11
  433. 425 008c AF90 pop r10
  434. 426 008e 7F90 pop r7
  435. 427 0090 6F90 pop r6
  436. 428 0092 5F90 pop r5
  437. 429 0094 4F90 pop r4
  438. 430 0096 0895 ret
  439. 431 .size NutMsgQStartTimer, .-NutMsgQStartTimer
  440. 432 .section .text.NutMsgQStopTimer,"ax",@progbits
  441. 433 .global NutMsgQStopTimer
  442. 434 .type NutMsgQStopTimer, @function
  443. 435 NutMsgQStopTimer:
  444. 436 0000 0F93 push r16
  445. 437 0002 1F93 push r17
  446. 438 0004 CF93 push r28
  447. 439 0006 DF93 push r29
  448. 440 /* prologue: function */
  449. 441 /* frame size = 0 */
  450. 442 /* stack size = 4 */
  451. 443 .L__stack_usage = 4
  452. 444 0008 8C01 movw r16,r24
  453. 445 000a FC01 movw r30,r24
  454. 446 000c C081 ld r28,Z
  455. 447 000e D181 ldd r29,Z+1
  456. 448 /* #APP */
  457. 449 ; 314 "../../nut/os/msg.c" 1
  458. 450 0010 0FB6 in __tmp_reg__, __SREG__
  459. 451 0012 F894 cli
  460. 452 0014 0F92 push __tmp_reg__
  461. 453
  462. 454 ; 0 "" 2
  463. 455 /* #NOAPP */
  464. 456 0016 8E81 ldd r24,Y+6
  465. GAS LISTING /tmp/ccbe4QK8.s page 9
  466. 457 0018 9F81 ldd r25,Y+7
  467. 458 001a 25E0 ldi r18,lo8(5)
  468. 459 001c 3FEF ldi r19,lo8(-1)
  469. 460 .L38:
  470. 461 001e 8917 cp r24,r25
  471. 462 0020 01F0 breq .L45
  472. 463 0022 FE01 movw r30,r28
  473. 464 0024 289F mul r18,r24
  474. 465 0026 E00D add r30,r0
  475. 466 0028 F11D adc r31,r1
  476. 467 002a 1124 clr __zero_reg__
  477. 468 002c 4185 ldd r20,Z+9
  478. 469 002e 4E3F cpi r20,lo8(-2)
  479. 470 0030 01F4 brne .L39
  480. 471 0032 4485 ldd r20,Z+12
  481. 472 0034 5585 ldd r21,Z+13
  482. 473 0036 0417 cp r16,r20
  483. 474 0038 1507 cpc r17,r21
  484. 475 003a 01F4 brne .L39
  485. 476 003c 3187 std Z+9,r19
  486. 477 .L39:
  487. 478 003e 8F5F subi r24,lo8(-(1))
  488. 479 0040 4885 ldd r20,Y+8
  489. 480 0042 8423 and r24,r20
  490. 481 0044 00C0 rjmp .L38
  491. 482 .L45:
  492. 483 0046 F801 movw r30,r16
  493. 484 0048 8681 ldd r24,Z+6
  494. 485 004a 9781 ldd r25,Z+7
  495. 486 004c 0097 sbiw r24,0
  496. 487 004e 01F0 breq .L41
  497. 488 0050 0E94 0000 call NutTimerStop
  498. 489 .L41:
  499. 490 /* #APP */
  500. 491 ; 330 "../../nut/os/msg.c" 1
  501. 492 0054 0F90 pop __tmp_reg__
  502. 493 0056 0FBE out __SREG__, __tmp_reg__
  503. 494
  504. 495 ; 0 "" 2
  505. 496 /* #NOAPP */
  506. 497 0058 B801 movw r22,r16
  507. 498 005a CE01 movw r24,r28
  508. 499 /* epilogue start */
  509. 500 005c DF91 pop r29
  510. 501 005e CF91 pop r28
  511. 502 0060 1F91 pop r17
  512. 503 0062 0F91 pop r16
  513. 504 0064 0C94 0000 jmp NutMsgQFreeTimer
  514. 505 .size NutMsgQStopTimer, .-NutMsgQStopTimer
  515. 506 .section .text.NutMsgQGetMessage,"ax",@progbits
  516. 507 .global NutMsgQGetMessage
  517. 508 .type NutMsgQGetMessage, @function
  518. 509 NutMsgQGetMessage:
  519. 510 0000 EF92 push r14
  520. 511 0002 FF92 push r15
  521. 512 0004 0F93 push r16
  522. 513 0006 1F93 push r17
  523. GAS LISTING /tmp/ccbe4QK8.s page 10
  524. 514 0008 CF93 push r28
  525. 515 000a DF93 push r29
  526. 516 /* prologue: function */
  527. 517 /* frame size = 0 */
  528. 518 /* stack size = 6 */
  529. 519 .L__stack_usage = 6
  530. 520 000c EC01 movw r28,r24
  531. 521 000e 8B01 movw r16,r22
  532. 522 0010 BA01 movw r22,r20
  533. 523 0012 A901 movw r20,r18
  534. 524 /* #APP */
  535. 525 ; 347 "../../nut/os/msg.c" 1
  536. 526 0014 0FB6 in __tmp_reg__, __SREG__
  537. 527 0016 F894 cli
  538. 528 0018 0F92 push __tmp_reg__
  539. 529
  540. 530 ; 0 "" 2
  541. 531 /* #NOAPP */
  542. 532 001a 0E94 0000 call NutEventWait
  543. 533 001e 7C01 movw r14,r24
  544. 534 0020 892B or r24,r25
  545. 535 0022 01F0 breq .L47
  546. 536 /* #APP */
  547. 537 ; 350 "../../nut/os/msg.c" 1
  548. 538 0024 0F90 pop __tmp_reg__
  549. 539 0026 0FBE out __SREG__, __tmp_reg__
  550. 540
  551. 541 ; 0 "" 2
  552. 542 /* #NOAPP */
  553. 543 0028 EE24 clr r14
  554. 544 002a EA94 dec r14
  555. 545 002c FE2C mov r15,r14
  556. 546 002e 00C0 rjmp .L48
  557. 547 .L47:
  558. 548 0030 8E81 ldd r24,Y+6
  559. 549 0032 FE01 movw r30,r28
  560. 550 0034 95E0 ldi r25,lo8(5)
  561. 551 0036 899F mul r24,r25
  562. 552 0038 E00D add r30,r0
  563. 553 003a F11D adc r31,r1
  564. 554 003c 1124 clr __zero_reg__
  565. 555 003e 3996 adiw r30,9
  566. 556 0040 85E0 ldi r24,lo8(5)
  567. 557 0042 D801 movw r26,r16
  568. 558 0:
  569. 559 0044 0190 ld r0,Z+
  570. 560 0046 0D92 st X+,r0
  571. 561 0048 8A95 dec r24
  572. 562 004a 01F4 brne 0b
  573. 563 004c 8E81 ldd r24,Y+6
  574. 564 004e 8F5F subi r24,lo8(-(1))
  575. 565 0050 9885 ldd r25,Y+8
  576. 566 0052 8923 and r24,r25
  577. 567 0054 8E83 std Y+6,r24
  578. 568 0056 9F81 ldd r25,Y+7
  579. 569 0058 8917 cp r24,r25
  580. 570 005a 01F0 breq .L49
  581. GAS LISTING /tmp/ccbe4QK8.s page 11
  582. 571 005c CE01 movw r24,r28
  583. 572 005e 0E94 0000 call NutEventPostAsync
  584. 573 .L49:
  585. 574 /* #APP */
  586. 575 ; 365 "../../nut/os/msg.c" 1
  587. 576 0062 0F90 pop __tmp_reg__
  588. 577 0064 0FBE out __SREG__, __tmp_reg__
  589. 578
  590. 579 ; 0 "" 2
  591. 580 /* #NOAPP */
  592. 581 0066 D801 movw r26,r16
  593. 582 0068 8C91 ld r24,X
  594. 583 006a 8E3F cpi r24,lo8(-2)
  595. 584 006c 01F4 brne .L48
  596. 585 006e 1396 adiw r26,3
  597. 586 0070 ED91 ld r30,X+
  598. 587 0072 FC91 ld r31,X
  599. 588 0074 1497 sbiw r26,3+1
  600. 589 0076 8481 ldd r24,Z+4
  601. 590 0078 9581 ldd r25,Z+5
  602. 591 007a 1496 adiw r26,3+1
  603. 592 007c 9C93 st X,r25
  604. 593 007e 8E93 st -X,r24
  605. 594 0080 1397 sbiw r26,3
  606. 595 0082 8281 ldd r24,Z+2
  607. 596 0084 9381 ldd r25,Z+3
  608. 597 0086 1296 adiw r26,1+1
  609. 598 0088 9C93 st X,r25
  610. 599 008a 8E93 st -X,r24
  611. 600 008c 1197 sbiw r26,1
  612. 601 008e 8285 ldd r24,Z+10
  613. 602 0090 80FF sbrs r24,0
  614. 603 0092 00C0 rjmp .L48
  615. 604 0094 BF01 movw r22,r30
  616. 605 0096 CE01 movw r24,r28
  617. 606 0098 0E94 0000 call NutMsgQFreeTimer
  618. 607 .L48:
  619. 608 009c C701 movw r24,r14
  620. 609 /* epilogue start */
  621. 610 009e DF91 pop r29
  622. 611 00a0 CF91 pop r28
  623. 612 00a2 1F91 pop r17
  624. 613 00a4 0F91 pop r16
  625. 614 00a6 FF90 pop r15
  626. 615 00a8 EF90 pop r14
  627. 616 00aa 0895 ret
  628. 617 .size NutMsgQGetMessage, .-NutMsgQGetMessage
  629. 618 .section .text.NutMsgQFlush,"ax",@progbits
  630. 619 .global NutMsgQFlush
  631. 620 .type NutMsgQFlush, @function
  632. 621 NutMsgQFlush:
  633. 622 /* prologue: function */
  634. 623 /* frame size = 0 */
  635. 624 /* stack size = 0 */
  636. 625 .L__stack_usage = 0
  637. 626 0000 FC01 movw r30,r24
  638. 627 /* #APP */
  639. GAS LISTING /tmp/ccbe4QK8.s page 12
  640. 628 ; 385 "../../nut/os/msg.c" 1
  641. 629 0002 0FB6 in __tmp_reg__, __SREG__
  642. 630 0004 F894 cli
  643. 631 0006 0F92 push __tmp_reg__
  644. 632
  645. 633 ; 0 "" 2
  646. 634 /* #NOAPP */
  647. 635 0008 8781 ldd r24,Z+7
  648. 636 000a 8683 std Z+6,r24
  649. 637 000c 1182 std Z+1,__zero_reg__
  650. 638 000e 1082 st Z,__zero_reg__
  651. 639 /* #APP */
  652. 640 ; 395 "../../nut/os/msg.c" 1
  653. 641 0010 0F90 pop __tmp_reg__
  654. 642 0012 0FBE out __SREG__, __tmp_reg__
  655. 643
  656. 644 ; 0 "" 2
  657. 645 /* #NOAPP */
  658. 646 0014 0895 ret
  659. 647 .size NutMsgQFlush, .-NutMsgQFlush
  660. 648 .comm nutMsgFreeTimers,2,1
  661. 649 .comm nutMsgQue,2,1
  662. 650 .ident "GCC: (GNU) 5.3.0"
  663. 651 .global __do_clear_bss
  664. GAS LISTING /tmp/ccbe4QK8.s page 13
  665. DEFINED SYMBOLS
  666. *ABS*:0000000000000000 msg.c
  667. /tmp/ccbe4QK8.s:2 *ABS*:000000000000003e __SP_H__
  668. /tmp/ccbe4QK8.s:3 *ABS*:000000000000003d __SP_L__
  669. /tmp/ccbe4QK8.s:4 *ABS*:000000000000003f __SREG__
  670. /tmp/ccbe4QK8.s:5 *ABS*:000000000000003b __RAMPZ__
  671. /tmp/ccbe4QK8.s:6 *ABS*:0000000000000000 __tmp_reg__
  672. /tmp/ccbe4QK8.s:7 *ABS*:0000000000000001 __zero_reg__
  673. /tmp/ccbe4QK8.s:10 .text.NutMsgQFreeTimer:0000000000000000 NutMsgQFreeTimer
  674. *COM*:0000000000000002 nutMsgFreeTimers
  675. /tmp/ccbe4QK8.s:51 .text.NutMsgQCreate:0000000000000000 NutMsgQCreate
  676. *COM*:0000000000000002 nutMsgQue
  677. /tmp/ccbe4QK8.s:95 .text.NutMsgQFull:0000000000000000 NutMsgQFull
  678. /tmp/ccbe4QK8.s:127 .text.NutMsgQPost:0000000000000000 NutMsgQPost
  679. /tmp/ccbe4QK8.s:220 .text.NutMsgQBroadcast:0000000000000000 NutMsgQBroadcast
  680. /tmp/ccbe4QK8.s:272 .text.NutMsgQSend:0000000000000000 NutMsgQSend
  681. /tmp/ccbe4QK8.s:305 .text.NutMsgQTimerCb:0000000000000000 NutMsgQTimerCb
  682. /tmp/ccbe4QK8.s:353 .text.NutMsgQStartTimer:0000000000000000 NutMsgQStartTimer
  683. /tmp/ccbe4QK8.s:435 .text.NutMsgQStopTimer:0000000000000000 NutMsgQStopTimer
  684. /tmp/ccbe4QK8.s:509 .text.NutMsgQGetMessage:0000000000000000 NutMsgQGetMessage
  685. /tmp/ccbe4QK8.s:621 .text.NutMsgQFlush:0000000000000000 NutMsgQFlush
  686. UNDEFINED SYMBOLS
  687. heapFreeList
  688. NutHeapRootAllocClear
  689. NutEventPostAsync
  690. NutThreadYield
  691. NutTimerStartTicks
  692. NutHeapRootAlloc
  693. NutTimerStart
  694. NutTimerStop
  695. NutEventWait
  696. __do_clear_bss