mutex.lst 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. GAS LISTING /tmp/cc15Y3H5.s page 1
  2. 1 .file "mutex.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.NutMutexInit,"ax",@progbits
  10. 9 .global NutMutexInit
  11. 10 .type NutMutexInit, @function
  12. 11 NutMutexInit:
  13. 12 /* prologue: function */
  14. 13 /* frame size = 0 */
  15. 14 /* stack size = 0 */
  16. 15 .L__stack_usage = 0
  17. 16 0000 FC01 movw r30,r24
  18. 17 0002 1382 std Z+3,__zero_reg__
  19. 18 0004 1282 std Z+2,__zero_reg__
  20. 19 0006 1582 std Z+5,__zero_reg__
  21. 20 0008 1482 std Z+4,__zero_reg__
  22. 21 000a 1182 std Z+1,__zero_reg__
  23. 22 000c 1082 st Z,__zero_reg__
  24. 23 000e 0895 ret
  25. 24 .size NutMutexInit, .-NutMutexInit
  26. 25 .section .text.NutMutexLock,"ax",@progbits
  27. 26 .global NutMutexLock
  28. 27 .type NutMutexLock, @function
  29. 28 NutMutexLock:
  30. 29 0000 CF93 push r28
  31. 30 0002 DF93 push r29
  32. 31 /* prologue: function */
  33. 32 /* frame size = 0 */
  34. 33 /* stack size = 2 */
  35. 34 .L__stack_usage = 2
  36. 35 0004 EC01 movw r28,r24
  37. 36 0006 2A81 ldd r18,Y+2
  38. 37 0008 3B81 ldd r19,Y+3
  39. 38 000a 8091 0000 lds r24,runningThread
  40. 39 000e 9091 0000 lds r25,runningThread+1
  41. 40 0012 2817 cp r18,r24
  42. 41 0014 3907 cpc r19,r25
  43. 42 0016 01F4 brne .L6
  44. 43 .L5:
  45. 44 0018 8091 0000 lds r24,runningThread
  46. 45 001c 9091 0000 lds r25,runningThread+1
  47. 46 0020 9B83 std Y+3,r25
  48. 47 0022 8A83 std Y+2,r24
  49. 48 0024 8C81 ldd r24,Y+4
  50. 49 0026 9D81 ldd r25,Y+5
  51. 50 0028 0196 adiw r24,1
  52. 51 002a 9D83 std Y+5,r25
  53. 52 002c 8C83 std Y+4,r24
  54. 53 /* epilogue start */
  55. 54 002e DF91 pop r29
  56. 55 0030 CF91 pop r28
  57. 56 0032 0895 ret
  58. 57 .L6:
  59. GAS LISTING /tmp/cc15Y3H5.s page 2
  60. 58 0034 8C81 ldd r24,Y+4
  61. 59 0036 9D81 ldd r25,Y+5
  62. 60 0038 892B or r24,r25
  63. 61 003a 01F0 breq .L5
  64. 62 003c 40E0 ldi r20,0
  65. 63 003e 50E0 ldi r21,0
  66. 64 0040 BA01 movw r22,r20
  67. 65 0042 CE01 movw r24,r28
  68. 66 0044 0E94 0000 call NutEventWaitNext
  69. 67 0048 00C0 rjmp .L6
  70. 68 .size NutMutexLock, .-NutMutexLock
  71. 69 .section .text.NutMutexTrylock,"ax",@progbits
  72. 70 .global NutMutexTrylock
  73. 71 .type NutMutexTrylock, @function
  74. 72 NutMutexTrylock:
  75. 73 /* prologue: function */
  76. 74 /* frame size = 0 */
  77. 75 /* stack size = 0 */
  78. 76 .L__stack_usage = 0
  79. 77 0000 FC01 movw r30,r24
  80. 78 0002 2481 ldd r18,Z+4
  81. 79 0004 3581 ldd r19,Z+5
  82. 80 0006 232B or r18,r19
  83. 81 0008 01F0 breq .L10
  84. 82 000a 4281 ldd r20,Z+2
  85. 83 000c 5381 ldd r21,Z+3
  86. 84 000e 2091 0000 lds r18,runningThread
  87. 85 0012 3091 0000 lds r19,runningThread+1
  88. 86 0016 4217 cp r20,r18
  89. 87 0018 5307 cpc r21,r19
  90. 88 001a 01F4 brne .L12
  91. 89 .L10:
  92. 90 001c 0E94 0000 call NutMutexLock
  93. 91 0020 80E0 ldi r24,0
  94. 92 0022 90E0 ldi r25,0
  95. 93 0024 0895 ret
  96. 94 .L12:
  97. 95 0026 8FEF ldi r24,lo8(-1)
  98. 96 0028 9FEF ldi r25,lo8(-1)
  99. 97 002a 0895 ret
  100. 98 .size NutMutexTrylock, .-NutMutexTrylock
  101. 99 .section .text.NutMutexUnlock,"ax",@progbits
  102. 100 .global NutMutexUnlock
  103. 101 .type NutMutexUnlock, @function
  104. 102 NutMutexUnlock:
  105. 103 /* prologue: function */
  106. 104 /* frame size = 0 */
  107. 105 /* stack size = 0 */
  108. 106 .L__stack_usage = 0
  109. 107 0000 FC01 movw r30,r24
  110. 108 0002 4281 ldd r20,Z+2
  111. 109 0004 5381 ldd r21,Z+3
  112. 110 0006 2091 0000 lds r18,runningThread
  113. 111 000a 3091 0000 lds r19,runningThread+1
  114. 112 000e 4217 cp r20,r18
  115. 113 0010 5307 cpc r21,r19
  116. 114 0012 01F4 brne .L18
  117. GAS LISTING /tmp/cc15Y3H5.s page 3
  118. 115 0014 2481 ldd r18,Z+4
  119. 116 0016 3581 ldd r19,Z+5
  120. 117 0018 2150 subi r18,1
  121. 118 001a 3109 sbc r19,__zero_reg__
  122. 119 001c 3583 std Z+5,r19
  123. 120 001e 2483 std Z+4,r18
  124. 121 0020 232B or r18,r19
  125. 122 0022 01F4 brne .L19
  126. 123 0024 0E94 0000 call NutEventPost
  127. 124 0028 00C0 rjmp .L19
  128. 125 .L18:
  129. 126 002a 8FEF ldi r24,lo8(-1)
  130. 127 002c 9FEF ldi r25,lo8(-1)
  131. 128 002e 0895 ret
  132. 129 .L19:
  133. 130 0030 80E0 ldi r24,0
  134. 131 0032 90E0 ldi r25,0
  135. 132 0034 0895 ret
  136. 133 .size NutMutexUnlock, .-NutMutexUnlock
  137. 134 .section .text.NutMutexDestroy,"ax",@progbits
  138. 135 .global NutMutexDestroy
  139. 136 .type NutMutexDestroy, @function
  140. 137 NutMutexDestroy:
  141. 138 /* prologue: function */
  142. 139 /* frame size = 0 */
  143. 140 /* stack size = 0 */
  144. 141 .L__stack_usage = 0
  145. 142 0000 FC01 movw r30,r24
  146. 143 0002 2481 ldd r18,Z+4
  147. 144 0004 3581 ldd r19,Z+5
  148. 145 0006 232B or r18,r19
  149. 146 0008 01F0 breq .L23
  150. 147 000a 21E0 ldi r18,lo8(1)
  151. 148 000c 30E0 ldi r19,0
  152. 149 000e 4281 ldd r20,Z+2
  153. 150 0010 5381 ldd r21,Z+3
  154. 151 0012 8091 0000 lds r24,runningThread
  155. 152 0016 9091 0000 lds r25,runningThread+1
  156. 153 001a 4817 cp r20,r24
  157. 154 001c 5907 cpc r21,r25
  158. 155 001e 01F4 brne .L22
  159. 156 0020 20E0 ldi r18,0
  160. 157 0022 30E0 ldi r19,0
  161. 158 .L22:
  162. 159 0024 8827 clr r24
  163. 160 0026 9927 clr r25
  164. 161 0028 821B sub r24,r18
  165. 162 002a 930B sbc r25,r19
  166. 163 002c 0895 ret
  167. 164 .L23:
  168. 165 002e 80E0 ldi r24,0
  169. 166 0030 90E0 ldi r25,0
  170. 167 0032 0895 ret
  171. 168 .size NutMutexDestroy, .-NutMutexDestroy
  172. 169 .ident "GCC: (GNU) 5.3.0"
  173. GAS LISTING /tmp/cc15Y3H5.s page 4
  174. DEFINED SYMBOLS
  175. *ABS*:0000000000000000 mutex.c
  176. /tmp/cc15Y3H5.s:2 *ABS*:000000000000003e __SP_H__
  177. /tmp/cc15Y3H5.s:3 *ABS*:000000000000003d __SP_L__
  178. /tmp/cc15Y3H5.s:4 *ABS*:000000000000003f __SREG__
  179. /tmp/cc15Y3H5.s:5 *ABS*:000000000000003b __RAMPZ__
  180. /tmp/cc15Y3H5.s:6 *ABS*:0000000000000000 __tmp_reg__
  181. /tmp/cc15Y3H5.s:7 *ABS*:0000000000000001 __zero_reg__
  182. /tmp/cc15Y3H5.s:11 .text.NutMutexInit:0000000000000000 NutMutexInit
  183. /tmp/cc15Y3H5.s:28 .text.NutMutexLock:0000000000000000 NutMutexLock
  184. /tmp/cc15Y3H5.s:72 .text.NutMutexTrylock:0000000000000000 NutMutexTrylock
  185. /tmp/cc15Y3H5.s:102 .text.NutMutexUnlock:0000000000000000 NutMutexUnlock
  186. /tmp/cc15Y3H5.s:137 .text.NutMutexDestroy:0000000000000000 NutMutexDestroy
  187. UNDEFINED SYMBOLS
  188. runningThread
  189. NutEventWaitNext
  190. NutEventPost