thread.lst 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674
  1. GAS LISTING /tmp/ccZUQWuD.s page 1
  2. 1 .file "thread.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.NutThreadAddPriQueue,"ax",@progbits
  10. 9 .global NutThreadAddPriQueue
  11. 10 .type NutThreadAddPriQueue, @function
  12. 11 NutThreadAddPriQueue:
  13. 12 0000 CF93 push r28
  14. 13 0002 DF93 push r29
  15. 14 /* prologue: function */
  16. 15 /* frame size = 0 */
  17. 16 /* stack size = 2 */
  18. 17 .L__stack_usage = 2
  19. 18 0004 FC01 movw r30,r24
  20. 19 0006 708F std Z+24,r23
  21. 20 0008 678B std Z+23,r22
  22. 21 000a 1582 std Z+5,__zero_reg__
  23. 22 000c 1482 std Z+4,__zero_reg__
  24. 23 /* #APP */
  25. 24 ; 122 "../../nut/os/thread.c" 1
  26. 25 000e 0FB6 in __tmp_reg__, __SREG__
  27. 26 0010 F894 cli
  28. 27 0012 0F92 push __tmp_reg__
  29. 28
  30. 29 ; 0 "" 2
  31. 30 /* #NOAPP */
  32. 31 0014 EB01 movw r28,r22
  33. 32 0016 A881 ld r26,Y
  34. 33 0018 B981 ldd r27,Y+1
  35. 34 001a AF3F cpi r26,-1
  36. 35 001c DFEF ldi r29,-1
  37. 36 001e BD07 cpc r27,r29
  38. 37 0020 01F4 brne .L2
  39. 38 0022 8481 ldd r24,Z+4
  40. 39 0024 9581 ldd r25,Z+5
  41. 40 0026 0196 adiw r24,1
  42. 41 0028 9583 std Z+5,r25
  43. 42 002a 8483 std Z+4,r24
  44. 43 002c A0E0 ldi r26,0
  45. 44 002e B0E0 ldi r27,0
  46. 45 0030 00C0 rjmp .L3
  47. 46 .L2:
  48. 47 0032 1097 sbiw r26,0
  49. 48 0034 01F0 breq .L3
  50. 49 /* #APP */
  51. 50 ; 129 "../../nut/os/thread.c" 1
  52. 51 0036 0F90 pop __tmp_reg__
  53. 52 0038 0FBE out __SREG__, __tmp_reg__
  54. 53
  55. 54 ; 0 "" 2
  56. 55 /* #NOAPP */
  57. 56 003a 8289 ldd r24,Z+18
  58. 57 .L4:
  59. GAS LISTING /tmp/ccZUQWuD.s page 2
  60. 58 003c 5296 adiw r26,18
  61. 59 003e 9C91 ld r25,X
  62. 60 0040 5297 sbiw r26,18
  63. 61 0042 8917 cp r24,r25
  64. 62 0044 00F0 brlo .L5
  65. 63 0046 BD01 movw r22,r26
  66. 64 0048 6E5F subi r22,-2
  67. 65 004a 7F4F sbci r23,-1
  68. 66 004c 1296 adiw r26,2
  69. 67 004e 0D90 ld __tmp_reg__,X+
  70. 68 0050 BC91 ld r27,X
  71. 69 0052 A02D mov r26,__tmp_reg__
  72. 70 0054 1097 sbiw r26,0
  73. 71 0056 01F4 brne .L4
  74. 72 .L5:
  75. 73 /* #APP */
  76. 74 ; 137 "../../nut/os/thread.c" 1
  77. 75 0058 0FB6 in __tmp_reg__, __SREG__
  78. 76 005a F894 cli
  79. 77 005c 0F92 push __tmp_reg__
  80. 78
  81. 79 ; 0 "" 2
  82. 80 /* #NOAPP */
  83. 81 .L3:
  84. 82 005e B383 std Z+3,r27
  85. 83 0060 A283 std Z+2,r26
  86. 84 0062 DB01 movw r26,r22
  87. 85 0064 1196 adiw r26,1
  88. 86 0066 FC93 st X,r31
  89. 87 0068 EE93 st -X,r30
  90. 88 006a A281 ldd r26,Z+2
  91. 89 006c B381 ldd r27,Z+3
  92. 90 006e 1097 sbiw r26,0
  93. 91 0070 01F0 breq .L7
  94. 92 0072 1496 adiw r26,4
  95. 93 0074 8D91 ld r24,X+
  96. 94 0076 9C91 ld r25,X
  97. 95 0078 1597 sbiw r26,4+1
  98. 96 007a 892B or r24,r25
  99. 97 007c 01F0 breq .L7
  100. 98 007e 1496 adiw r26,4
  101. 99 0080 2D91 ld r18,X+
  102. 100 0082 3C91 ld r19,X
  103. 101 0084 1597 sbiw r26,4+1
  104. 102 0086 8481 ldd r24,Z+4
  105. 103 0088 9581 ldd r25,Z+5
  106. 104 008a 820F add r24,r18
  107. 105 008c 931F adc r25,r19
  108. 106 008e 9583 std Z+5,r25
  109. 107 0090 8483 std Z+4,r24
  110. 108 0092 1596 adiw r26,4+1
  111. 109 0094 1C92 st X,__zero_reg__
  112. 110 0096 1E92 st -X,__zero_reg__
  113. 111 0098 1497 sbiw r26,4
  114. 112 .L7:
  115. 113 /* #APP */
  116. 114 ; 147 "../../nut/os/thread.c" 1
  117. GAS LISTING /tmp/ccZUQWuD.s page 3
  118. 115 009a 0F90 pop __tmp_reg__
  119. 116 009c 0FBE out __SREG__, __tmp_reg__
  120. 117
  121. 118 ; 0 "" 2
  122. 119 /* epilogue start */
  123. 120 /* #NOAPP */
  124. 121 009e DF91 pop r29
  125. 122 00a0 CF91 pop r28
  126. 123 00a2 0895 ret
  127. 124 .size NutThreadAddPriQueue, .-NutThreadAddPriQueue
  128. 125 .section .text.NutThreadRemoveQueue,"ax",@progbits
  129. 126 .global NutThreadRemoveQueue
  130. 127 .type NutThreadRemoveQueue, @function
  131. 128 NutThreadRemoveQueue:
  132. 129 0000 CF93 push r28
  133. 130 0002 DF93 push r29
  134. 131 /* prologue: function */
  135. 132 /* frame size = 0 */
  136. 133 /* stack size = 2 */
  137. 134 .L__stack_usage = 2
  138. 135 0004 FC01 movw r30,r24
  139. 136 /* #APP */
  140. 137 ; 154 "../../nut/os/thread.c" 1
  141. 138 0006 0FB6 in __tmp_reg__, __SREG__
  142. 139 0008 F894 cli
  143. 140 000a 0F92 push __tmp_reg__
  144. 141
  145. 142 ; 0 "" 2
  146. 143 /* #NOAPP */
  147. 144 000c EB01 movw r28,r22
  148. 145 000e A881 ld r26,Y
  149. 146 0010 B981 ldd r27,Y+1
  150. 147 /* #APP */
  151. 148 ; 156 "../../nut/os/thread.c" 1
  152. 149 0012 0F90 pop __tmp_reg__
  153. 150 0014 0FBE out __SREG__, __tmp_reg__
  154. 151
  155. 152 ; 0 "" 2
  156. 153 /* #NOAPP */
  157. 154 0016 AF3F cpi r26,-1
  158. 155 0018 DFEF ldi r29,-1
  159. 156 001a BD07 cpc r27,r29
  160. 157 001c 01F0 breq .L21
  161. 158 .L23:
  162. 159 001e 1097 sbiw r26,0
  163. 160 0020 01F0 breq .L21
  164. 161 0022 AE17 cp r26,r30
  165. 162 0024 BF07 cpc r27,r31
  166. 163 0026 01F4 brne .L24
  167. 164 /* #APP */
  168. 165 ; 161 "../../nut/os/thread.c" 1
  169. 166 0028 0FB6 in __tmp_reg__, __SREG__
  170. 167 002a F894 cli
  171. 168 002c 0F92 push __tmp_reg__
  172. 169
  173. 170 ; 0 "" 2
  174. 171 /* #NOAPP */
  175. GAS LISTING /tmp/ccZUQWuD.s page 4
  176. 172 002e 8281 ldd r24,Z+2
  177. 173 0030 9381 ldd r25,Z+3
  178. 174 0032 DB01 movw r26,r22
  179. 175 0034 1196 adiw r26,1
  180. 176 0036 9C93 st X,r25
  181. 177 0038 8E93 st -X,r24
  182. 178 003a 8481 ldd r24,Z+4
  183. 179 003c 9581 ldd r25,Z+5
  184. 180 003e 892B or r24,r25
  185. 181 0040 01F0 breq .L25
  186. 182 0042 A281 ldd r26,Z+2
  187. 183 0044 B381 ldd r27,Z+3
  188. 184 0046 1097 sbiw r26,0
  189. 185 0048 01F0 breq .L26
  190. 186 004a 8481 ldd r24,Z+4
  191. 187 004c 9581 ldd r25,Z+5
  192. 188 004e 1596 adiw r26,4+1
  193. 189 0050 9C93 st X,r25
  194. 190 0052 8E93 st -X,r24
  195. 191 0054 1497 sbiw r26,4
  196. 192 .L26:
  197. 193 0056 1582 std Z+5,__zero_reg__
  198. 194 0058 1482 std Z+4,__zero_reg__
  199. 195 .L25:
  200. 196 /* #APP */
  201. 197 ; 169 "../../nut/os/thread.c" 1
  202. 198 005a 0F90 pop __tmp_reg__
  203. 199 005c 0FBE out __SREG__, __tmp_reg__
  204. 200
  205. 201 ; 0 "" 2
  206. 202 /* #NOAPP */
  207. 203 005e 1382 std Z+3,__zero_reg__
  208. 204 0060 1282 std Z+2,__zero_reg__
  209. 205 0062 108E std Z+24,__zero_reg__
  210. 206 0064 178A std Z+23,__zero_reg__
  211. 207 0066 00C0 rjmp .L21
  212. 208 .L24:
  213. 209 0068 BD01 movw r22,r26
  214. 210 006a 6E5F subi r22,-2
  215. 211 006c 7F4F sbci r23,-1
  216. 212 006e 1296 adiw r26,2
  217. 213 0070 0D90 ld __tmp_reg__,X+
  218. 214 0072 BC91 ld r27,X
  219. 215 0074 A02D mov r26,__tmp_reg__
  220. 216 0076 00C0 rjmp .L23
  221. 217 .L21:
  222. 218 /* epilogue start */
  223. 219 0078 DF91 pop r29
  224. 220 007a CF91 pop r28
  225. 221 007c 0895 ret
  226. 222 .size NutThreadRemoveQueue, .-NutThreadRemoveQueue
  227. 223 .section .text.NutThreadResume,"ax",@progbits
  228. 224 .global NutThreadResume
  229. 225 .type NutThreadResume, @function
  230. 226 NutThreadResume:
  231. 227 0000 CF93 push r28
  232. 228 0002 DF93 push r29
  233. GAS LISTING /tmp/ccZUQWuD.s page 5
  234. 229 /* prologue: function */
  235. 230 /* frame size = 0 */
  236. 231 /* stack size = 2 */
  237. 232 .L__stack_usage = 2
  238. 233 0004 C091 0000 lds r28,nutThreadList
  239. 234 0008 D091 0000 lds r29,nutThreadList+1
  240. 235 .L38:
  241. 236 000c 2097 sbiw r28,0
  242. 237 000e 01F0 breq .L48
  243. 238 /* #APP */
  244. 239 ; 193 "../../nut/os/thread.c" 1
  245. 240 0010 0FB6 in __tmp_reg__, __SREG__
  246. 241 0012 F894 cli
  247. 242 0014 0F92 push __tmp_reg__
  248. 243
  249. 244 ; 0 "" 2
  250. 245 /* #NOAPP */
  251. 246 0016 8C81 ldd r24,Y+4
  252. 247 0018 9D81 ldd r25,Y+5
  253. 248 /* #APP */
  254. 249 ; 195 "../../nut/os/thread.c" 1
  255. 250 001a 0F90 pop __tmp_reg__
  256. 251 001c 0FBE out __SREG__, __tmp_reg__
  257. 252
  258. 253 ; 0 "" 2
  259. 254 /* #NOAPP */
  260. 255 001e 892B or r24,r25
  261. 256 0020 01F0 breq .L40
  262. 257 0022 8F89 ldd r24,Y+23
  263. 258 0024 988D ldd r25,Y+24
  264. 259 /* #APP */
  265. 260 ; 200 "../../nut/os/thread.c" 1
  266. 261 0026 0FB6 in __tmp_reg__, __SREG__
  267. 262 0028 F894 cli
  268. 263 002a 0F92 push __tmp_reg__
  269. 264
  270. 265 ; 0 "" 2
  271. 266 /* #NOAPP */
  272. 267 002c 2C81 ldd r18,Y+4
  273. 268 002e 3D81 ldd r19,Y+5
  274. 269 0030 2150 subi r18,1
  275. 270 0032 3109 sbc r19,__zero_reg__
  276. 271 0034 3D83 std Y+5,r19
  277. 272 0036 2C83 std Y+4,r18
  278. 273 /* #APP */
  279. 274 ; 203 "../../nut/os/thread.c" 1
  280. 275 0038 0F90 pop __tmp_reg__
  281. 276 003a 0FBE out __SREG__, __tmp_reg__
  282. 277
  283. 278 ; 0 "" 2
  284. 279 /* #NOAPP */
  285. 280 003c FC01 movw r30,r24
  286. 281 003e 2081 ld r18,Z
  287. 282 0040 3181 ldd r19,Z+1
  288. 283 0042 2F3F cpi r18,-1
  289. 284 0044 3F4F sbci r19,-1
  290. 285 0046 01F0 breq .L40
  291. GAS LISTING /tmp/ccZUQWuD.s page 6
  292. 286 0048 0E94 0000 call NutEventPostAsync
  293. 287 .L40:
  294. 288 004c 0990 ld __tmp_reg__,Y+
  295. 289 004e D881 ld r29,Y
  296. 290 0050 C02D mov r28,__tmp_reg__
  297. 291 0052 00C0 rjmp .L38
  298. 292 .L48:
  299. 293 0054 0E94 0000 call NutTimerProcessElapsed
  300. 294 0058 E091 0000 lds r30,runningThread
  301. 295 005c F091 0000 lds r31,runningThread+1
  302. 296 0060 8091 0000 lds r24,runQueue
  303. 297 0064 9091 0000 lds r25,runQueue+1
  304. 298 0068 E817 cp r30,r24
  305. 299 006a F907 cpc r31,r25
  306. 300 006c 01F0 breq .L37
  307. 301 006e 8785 ldd r24,Z+15
  308. 302 0070 8130 cpi r24,lo8(1)
  309. 303 0072 01F4 brne .L44
  310. 304 0074 82E0 ldi r24,lo8(2)
  311. 305 0076 8787 std Z+15,r24
  312. 306 .L44:
  313. 307 /* #APP */
  314. 308 ; 226 "../../nut/os/thread.c" 1
  315. 309 0078 0FB6 in __tmp_reg__, __SREG__
  316. 310 007a F894 cli
  317. 311 007c 0F92 push __tmp_reg__
  318. 312
  319. 313 ; 0 "" 2
  320. 314 /* #NOAPP */
  321. 315 007e 0E94 0000 call NutThreadSwitch
  322. 316 /* #APP */
  323. 317 ; 228 "../../nut/os/thread.c" 1
  324. 318 0082 0F90 pop __tmp_reg__
  325. 319 0084 0FBE out __SREG__, __tmp_reg__
  326. 320
  327. 321 ; 0 "" 2
  328. 322 /* #NOAPP */
  329. 323 .L37:
  330. 324 /* epilogue start */
  331. 325 0086 DF91 pop r29
  332. 326 0088 CF91 pop r28
  333. 327 008a 0895 ret
  334. 328 .size NutThreadResume, .-NutThreadResume
  335. 329 .section .text.NutThreadWake,"ax",@progbits
  336. 330 .global NutThreadWake
  337. 331 .type NutThreadWake, @function
  338. 332 NutThreadWake:
  339. 333 /* prologue: function */
  340. 334 /* frame size = 0 */
  341. 335 /* stack size = 0 */
  342. 336 .L__stack_usage = 0
  343. 337 0000 CB01 movw r24,r22
  344. 338 0002 FB01 movw r30,r22
  345. 339 0004 168A std Z+22,__zero_reg__
  346. 340 0006 158A std Z+21,__zero_reg__
  347. 341 0008 22E0 ldi r18,lo8(2)
  348. 342 000a 2787 std Z+15,r18
  349. GAS LISTING /tmp/ccZUQWuD.s page 7
  350. 343 000c 60E0 ldi r22,lo8(runQueue)
  351. 344 000e 70E0 ldi r23,hi8(runQueue)
  352. 345 0010 0C94 0000 jmp NutThreadAddPriQueue
  353. 346 .size NutThreadWake, .-NutThreadWake
  354. 347 .section .text.NutThreadYield,"ax",@progbits
  355. 348 .global NutThreadYield
  356. 349 .type NutThreadYield, @function
  357. 350 NutThreadYield:
  358. 351 /* prologue: function */
  359. 352 /* frame size = 0 */
  360. 353 /* stack size = 0 */
  361. 354 .L__stack_usage = 0
  362. 355 0000 8091 0000 lds r24,runningThread
  363. 356 0004 9091 0000 lds r25,runningThread+1
  364. 357 0008 FC01 movw r30,r24
  365. 358 000a 2281 ldd r18,Z+2
  366. 359 000c 3381 ldd r19,Z+3
  367. 360 000e 232B or r18,r19
  368. 361 0010 01F0 breq .L51
  369. 362 0012 60E0 ldi r22,lo8(runQueue)
  370. 363 0014 70E0 ldi r23,hi8(runQueue)
  371. 364 0016 0E94 0000 call NutThreadRemoveQueue
  372. 365 001a 60E0 ldi r22,lo8(runQueue)
  373. 366 001c 70E0 ldi r23,hi8(runQueue)
  374. 367 001e 8091 0000 lds r24,runningThread
  375. 368 0022 9091 0000 lds r25,runningThread+1
  376. 369 0026 0E94 0000 call NutThreadAddPriQueue
  377. 370 .L51:
  378. 371 002a 0C94 0000 jmp NutThreadResume
  379. 372 .size NutThreadYield, .-NutThreadYield
  380. 373 .section .text.NutThreadDestroy,"ax",@progbits
  381. 374 .global NutThreadDestroy
  382. 375 .type NutThreadDestroy, @function
  383. 376 NutThreadDestroy:
  384. 377 /* prologue: function */
  385. 378 /* frame size = 0 */
  386. 379 /* stack size = 0 */
  387. 380 .L__stack_usage = 0
  388. 381 0000 E091 0000 lds r30,killedThread
  389. 382 0004 F091 0000 lds r31,killedThread+1
  390. 383 0008 3097 sbiw r30,0
  391. 384 000a 01F0 breq .L55
  392. 385 000c 6389 ldd r22,Z+19
  393. 386 000e 7489 ldd r23,Z+20
  394. 387 0010 80E0 ldi r24,lo8(heapFreeList)
  395. 388 0012 90E0 ldi r25,hi8(heapFreeList)
  396. 389 0014 0E94 0000 call NutHeapRootFree
  397. 390 0018 1092 0000 sts killedThread+1,__zero_reg__
  398. 391 001c 1092 0000 sts killedThread,__zero_reg__
  399. 392 .L55:
  400. 393 0020 0895 ret
  401. 394 .size NutThreadDestroy, .-NutThreadDestroy
  402. 395 .section .text.NutThreadKill,"ax",@progbits
  403. 396 .global NutThreadKill
  404. 397 .type NutThreadKill, @function
  405. 398 NutThreadKill:
  406. 399 0000 CF93 push r28
  407. GAS LISTING /tmp/ccZUQWuD.s page 8
  408. 400 0002 DF93 push r29
  409. 401 /* prologue: function */
  410. 402 /* frame size = 0 */
  411. 403 /* stack size = 2 */
  412. 404 .L__stack_usage = 2
  413. 405 0004 C091 0000 lds r28,nutThreadList
  414. 406 0008 D091 0000 lds r29,nutThreadList+1
  415. 407 000c 0E94 0000 call NutThreadDestroy
  416. 408 0010 8091 0000 lds r24,runningThread
  417. 409 0014 9091 0000 lds r25,runningThread+1
  418. 410 0018 E0E0 ldi r30,lo8(nutThreadList)
  419. 411 001a F0E0 ldi r31,hi8(nutThreadList)
  420. 412 .L61:
  421. 413 001c 2097 sbiw r28,0
  422. 414 001e 01F0 breq .L63
  423. 415 0020 C817 cp r28,r24
  424. 416 0022 D907 cpc r29,r25
  425. 417 0024 01F4 brne .L62
  426. 418 0026 8881 ld r24,Y
  427. 419 0028 9981 ldd r25,Y+1
  428. 420 002a 9183 std Z+1,r25
  429. 421 002c 8083 st Z,r24
  430. 422 002e 00C0 rjmp .L63
  431. 423 .L62:
  432. 424 0030 FE01 movw r30,r28
  433. 425 0032 0990 ld __tmp_reg__,Y+
  434. 426 0034 D881 ld r29,Y
  435. 427 0036 C02D mov r28,__tmp_reg__
  436. 428 0038 00C0 rjmp .L61
  437. 429 .L63:
  438. 430 003a 8091 0000 lds r24,runningThread
  439. 431 003e 9091 0000 lds r25,runningThread+1
  440. 432 0042 9093 0000 sts killedThread+1,r25
  441. 433 0046 8093 0000 sts killedThread,r24
  442. 434 /* epilogue start */
  443. 435 004a DF91 pop r29
  444. 436 004c CF91 pop r28
  445. 437 004e 0895 ret
  446. 438 .size NutThreadKill, .-NutThreadKill
  447. 439 .section .text.NutThreadSetPriority,"ax",@progbits
  448. 440 .global NutThreadSetPriority
  449. 441 .type NutThreadSetPriority, @function
  450. 442 NutThreadSetPriority:
  451. 443 0000 CF93 push r28
  452. 444 0002 DF93 push r29
  453. 445 /* prologue: function */
  454. 446 /* frame size = 0 */
  455. 447 /* stack size = 2 */
  456. 448 .L__stack_usage = 2
  457. 449 0004 C82F mov r28,r24
  458. 450 0006 8091 0000 lds r24,runningThread
  459. 451 000a 9091 0000 lds r25,runningThread+1
  460. 452 000e FC01 movw r30,r24
  461. 453 0010 D289 ldd r29,Z+18
  462. 454 0012 60E0 ldi r22,lo8(runQueue)
  463. 455 0014 70E0 ldi r23,hi8(runQueue)
  464. 456 0016 0E94 0000 call NutThreadRemoveQueue
  465. GAS LISTING /tmp/ccZUQWuD.s page 9
  466. 457 001a 8091 0000 lds r24,runningThread
  467. 458 001e 9091 0000 lds r25,runningThread+1
  468. 459 0022 FC01 movw r30,r24
  469. 460 0024 C28B std Z+18,r28
  470. 461 0026 CF3F cpi r28,lo8(-1)
  471. 462 0028 01F0 breq .L66
  472. 463 002a 60E0 ldi r22,lo8(runQueue)
  473. 464 002c 70E0 ldi r23,hi8(runQueue)
  474. 465 002e 0E94 0000 call NutThreadAddPriQueue
  475. 466 0032 00C0 rjmp .L67
  476. 467 .L66:
  477. 468 0034 0E94 0000 call NutThreadKill
  478. 469 .L67:
  479. 470 0038 E091 0000 lds r30,runningThread
  480. 471 003c F091 0000 lds r31,runningThread+1
  481. 472 0040 8091 0000 lds r24,runQueue
  482. 473 0044 9091 0000 lds r25,runQueue+1
  483. 474 0048 E817 cp r30,r24
  484. 475 004a F907 cpc r31,r25
  485. 476 004c 01F4 brne .L68
  486. 477 004e 81E0 ldi r24,lo8(1)
  487. 478 0050 8787 std Z+15,r24
  488. 479 0052 00C0 rjmp .L69
  489. 480 .L68:
  490. 481 0054 82E0 ldi r24,lo8(2)
  491. 482 0056 8787 std Z+15,r24
  492. 483 /* #APP */
  493. 484 ; 294 "../../nut/os/thread.c" 1
  494. 485 0058 0FB6 in __tmp_reg__, __SREG__
  495. 486 005a F894 cli
  496. 487 005c 0F92 push __tmp_reg__
  497. 488
  498. 489 ; 0 "" 2
  499. 490 /* #NOAPP */
  500. 491 005e 0E94 0000 call NutThreadSwitch
  501. 492 /* #APP */
  502. 493 ; 296 "../../nut/os/thread.c" 1
  503. 494 0062 0F90 pop __tmp_reg__
  504. 495 0064 0FBE out __SREG__, __tmp_reg__
  505. 496
  506. 497 ; 0 "" 2
  507. 498 /* #NOAPP */
  508. 499 .L69:
  509. 500 0066 8D2F mov r24,r29
  510. 501 /* epilogue start */
  511. 502 0068 DF91 pop r29
  512. 503 006a CF91 pop r28
  513. 504 006c 0895 ret
  514. 505 .size NutThreadSetPriority, .-NutThreadSetPriority
  515. 506 .section .text.NutThreadExit,"ax",@progbits
  516. 507 .global NutThreadExit
  517. 508 .type NutThreadExit, @function
  518. 509 NutThreadExit:
  519. 510 /* prologue: function */
  520. 511 /* frame size = 0 */
  521. 512 /* stack size = 0 */
  522. 513 .L__stack_usage = 0
  523. GAS LISTING /tmp/ccZUQWuD.s page 10
  524. 514 0000 8FEF ldi r24,lo8(-1)
  525. 515 0002 0C94 0000 jmp NutThreadSetPriority
  526. 516 .size NutThreadExit, .-NutThreadExit
  527. 517 .section .text.GetThreadByName,"ax",@progbits
  528. 518 .global GetThreadByName
  529. 519 .type GetThreadByName, @function
  530. 520 GetThreadByName:
  531. 521 0000 0F93 push r16
  532. 522 0002 1F93 push r17
  533. 523 0004 CF93 push r28
  534. 524 0006 DF93 push r29
  535. 525 /* prologue: function */
  536. 526 /* frame size = 0 */
  537. 527 /* stack size = 4 */
  538. 528 .L__stack_usage = 4
  539. 529 0008 8C01 movw r16,r24
  540. 530 000a 892B or r24,r25
  541. 531 000c 01F0 breq .L72
  542. 532 000e C091 0000 lds r28,nutThreadList
  543. 533 0012 D091 0000 lds r29,nutThreadList+1
  544. 534 .L73:
  545. 535 0016 2097 sbiw r28,0
  546. 536 0018 01F0 breq .L77
  547. 537 001a B801 movw r22,r16
  548. 538 001c CE01 movw r24,r28
  549. 539 001e 0696 adiw r24,6
  550. 540 0020 0E94 0000 call strcmp
  551. 541 0024 892B or r24,r25
  552. 542 0026 01F0 breq .L76
  553. 543 0028 0990 ld __tmp_reg__,Y+
  554. 544 002a D881 ld r29,Y
  555. 545 002c C02D mov r28,__tmp_reg__
  556. 546 002e 00C0 rjmp .L73
  557. 547 .L77:
  558. 548 0030 80E0 ldi r24,0
  559. 549 0032 90E0 ldi r25,0
  560. 550 0034 00C0 rjmp .L74
  561. 551 .L72:
  562. 552 0036 8091 0000 lds r24,runningThread
  563. 553 003a 9091 0000 lds r25,runningThread+1
  564. 554 003e 00C0 rjmp .L74
  565. 555 .L76:
  566. 556 0040 CE01 movw r24,r28
  567. 557 .L74:
  568. 558 /* epilogue start */
  569. 559 0042 DF91 pop r29
  570. 560 0044 CF91 pop r28
  571. 561 0046 1F91 pop r17
  572. 562 0048 0F91 pop r16
  573. 563 004a 0895 ret
  574. 564 .size GetThreadByName, .-GetThreadByName
  575. 565 .section .text.NutThreadStackAvailable,"ax",@progbits
  576. 566 .global NutThreadStackAvailable
  577. 567 .type NutThreadStackAvailable, @function
  578. 568 NutThreadStackAvailable:
  579. 569 /* prologue: function */
  580. 570 /* frame size = 0 */
  581. GAS LISTING /tmp/ccZUQWuD.s page 11
  582. 571 /* stack size = 0 */
  583. 572 .L__stack_usage = 0
  584. 573 0000 0E94 0000 call GetThreadByName
  585. 574 0004 0097 sbiw r24,0
  586. 575 0006 01F0 breq .L81
  587. 576 0008 FC01 movw r30,r24
  588. 577 000a 2389 ldd r18,Z+19
  589. 578 000c 3489 ldd r19,Z+20
  590. 579 000e C901 movw r24,r18
  591. 580 .L80:
  592. 581 0010 0496 adiw r24,4
  593. 582 0012 FC01 movw r30,r24
  594. 583 0014 3497 sbiw r30,4
  595. 584 0016 4081 ld r20,Z
  596. 585 0018 5181 ldd r21,Z+1
  597. 586 001a 6281 ldd r22,Z+2
  598. 587 001c 7381 ldd r23,Z+3
  599. 588 001e 4F3E cpi r20,-17
  600. 589 0020 5E4B sbci r21,-66
  601. 590 0022 6D4A sbci r22,-83
  602. 591 0024 7E4D sbci r23,-34
  603. 592 0026 01F0 breq .L80
  604. 593 0028 821B sub r24,r18
  605. 594 002a 930B sbc r25,r19
  606. 595 002c 0895 ret
  607. 596 .L81:
  608. 597 002e 80E0 ldi r24,0
  609. 598 0030 90E0 ldi r25,0
  610. 599 0032 0895 ret
  611. 600 .size NutThreadStackAvailable, .-NutThreadStackAvailable
  612. 601 .comm runQueue,2,1
  613. 602 .comm nutThreadList,2,1
  614. 603 .comm killedThread,2,1
  615. 604 .comm runningThread,2,1
  616. 605 .ident "GCC: (GNU) 5.3.0"
  617. 606 .global __do_clear_bss
  618. GAS LISTING /tmp/ccZUQWuD.s page 12
  619. DEFINED SYMBOLS
  620. *ABS*:0000000000000000 thread.c
  621. /tmp/ccZUQWuD.s:2 *ABS*:000000000000003e __SP_H__
  622. /tmp/ccZUQWuD.s:3 *ABS*:000000000000003d __SP_L__
  623. /tmp/ccZUQWuD.s:4 *ABS*:000000000000003f __SREG__
  624. /tmp/ccZUQWuD.s:5 *ABS*:000000000000003b __RAMPZ__
  625. /tmp/ccZUQWuD.s:6 *ABS*:0000000000000000 __tmp_reg__
  626. /tmp/ccZUQWuD.s:7 *ABS*:0000000000000001 __zero_reg__
  627. /tmp/ccZUQWuD.s:11 .text.NutThreadAddPriQueue:0000000000000000 NutThreadAddPriQueue
  628. /tmp/ccZUQWuD.s:128 .text.NutThreadRemoveQueue:0000000000000000 NutThreadRemoveQueue
  629. /tmp/ccZUQWuD.s:226 .text.NutThreadResume:0000000000000000 NutThreadResume
  630. *COM*:0000000000000002 nutThreadList
  631. *COM*:0000000000000002 runningThread
  632. *COM*:0000000000000002 runQueue
  633. /tmp/ccZUQWuD.s:332 .text.NutThreadWake:0000000000000000 NutThreadWake
  634. /tmp/ccZUQWuD.s:350 .text.NutThreadYield:0000000000000000 NutThreadYield
  635. /tmp/ccZUQWuD.s:376 .text.NutThreadDestroy:0000000000000000 NutThreadDestroy
  636. *COM*:0000000000000002 killedThread
  637. /tmp/ccZUQWuD.s:398 .text.NutThreadKill:0000000000000000 NutThreadKill
  638. /tmp/ccZUQWuD.s:442 .text.NutThreadSetPriority:0000000000000000 NutThreadSetPriority
  639. /tmp/ccZUQWuD.s:509 .text.NutThreadExit:0000000000000000 NutThreadExit
  640. /tmp/ccZUQWuD.s:520 .text.GetThreadByName:0000000000000000 GetThreadByName
  641. /tmp/ccZUQWuD.s:568 .text.NutThreadStackAvailable:0000000000000000 NutThreadStackAvailable
  642. UNDEFINED SYMBOLS
  643. NutEventPostAsync
  644. NutTimerProcessElapsed
  645. NutThreadSwitch
  646. heapFreeList
  647. NutHeapRootFree
  648. strcmp
  649. __do_clear_bss