spidigio.lst 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. GAS LISTING /tmp/ccyxqnS2.s page 1
  2. 1 .file "spidigio.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.delay_us.constprop.0,"ax",@progbits
  10. 9 .type delay_us.constprop.0, @function
  11. 10 delay_us.constprop.0:
  12. 11 /* prologue: function */
  13. 12 /* frame size = 0 */
  14. 13 /* stack size = 0 */
  15. 14 .L__stack_usage = 0
  16. 15 0000 8091 0000 lds r24,us_loops
  17. 16 0004 880F lsl r24
  18. 17 0006 880F lsl r24
  19. 18 .L2:
  20. 19 0008 8150 subi r24,1
  21. 20 000a 00F0 brcs .L5
  22. 21 /* #APP */
  23. 22 ; 196 "../../nut/arch/avr/dev/spidigio.c" 1
  24. 23 000c 0000 nop
  25. 24 ; 0 "" 2
  26. 25 /* #NOAPP */
  27. 26 000e 00C0 rjmp .L2
  28. 27 .L5:
  29. 28 /* epilogue start */
  30. 29 0010 0895 ret
  31. 30 .size delay_us.constprop.0, .-delay_us.constprop.0
  32. 31 .section .text.ShiftDigital,"ax",@progbits
  33. 32 .type ShiftDigital, @function
  34. 33 ShiftDigital:
  35. 34 /* prologue: function */
  36. 35 /* frame size = 0 */
  37. 36 /* stack size = 0 */
  38. 37 .L__stack_usage = 0
  39. 38 0000 5F98 cbi 0xb,7
  40. 39 0002 0E94 0000 call delay_us.constprop.0
  41. 40 0006 5F9A sbi 0xb,7
  42. 41 0008 0C94 0000 jmp delay_us.constprop.0
  43. 42 .size ShiftDigital, .-ShiftDigital
  44. 43 .section .text.CountDigitalShifts,"ax",@progbits
  45. 44 .type CountDigitalShifts, @function
  46. 45 CountDigitalShifts:
  47. 46 0000 FF92 push r15
  48. 47 0002 0F93 push r16
  49. 48 0004 1F93 push r17
  50. 49 0006 CF93 push r28
  51. 50 0008 DF93 push r29
  52. 51 /* prologue: function */
  53. 52 /* frame size = 0 */
  54. 53 /* stack size = 5 */
  55. 54 .L__stack_usage = 5
  56. 55 000a C82F mov r28,r24
  57. 56 000c 062F mov r16,r22
  58. 57 000e F42E mov r15,r20
  59. GAS LISTING /tmp/ccyxqnS2.s page 2
  60. 58 0010 4423 tst r20
  61. 59 0012 01F0 breq .L8
  62. 60 0014 2F9A sbi 0x5,7
  63. 61 0016 0E94 0000 call delay_us.constprop.0
  64. 62 001a 2F98 cbi 0x5,7
  65. 63 .L8:
  66. 64 001c 0023 tst r16
  67. 65 001e 01F0 breq .L9
  68. 66 0020 5D9A sbi 0xb,5
  69. 67 0022 00C0 rjmp .L10
  70. 68 .L9:
  71. 69 0024 5D98 cbi 0xb,5
  72. 70 .L10:
  73. 71 0026 0E94 0000 call delay_us.constprop.0
  74. 72 002a 11E0 ldi r17,lo8(1)
  75. 73 002c 1C0F add r17,r28
  76. 74 002e D1E0 ldi r29,lo8(1)
  77. 75 0030 C0E0 ldi r28,0
  78. 76 .L11:
  79. 77 0032 1D17 cp r17,r29
  80. 78 0034 01F0 breq .L27
  81. 79 0036 4E9B sbis 0x9,6
  82. 80 0038 00C0 rjmp .L12
  83. 81 003a 0023 tst r16
  84. 82 003c 01F0 breq .L13
  85. 83 003e 00C0 rjmp .L26
  86. 84 .L12:
  87. 85 0040 0111 cpse r16,__zero_reg__
  88. 86 0042 00C0 rjmp .L13
  89. 87 .L26:
  90. 88 0044 F110 cpse r15,__zero_reg__
  91. 89 0046 00C0 rjmp .L18
  92. 90 0048 C111 cpse r28,__zero_reg__
  93. 91 004a 00C0 rjmp .L13
  94. 92 .L18:
  95. 93 004c CD2F mov r28,r29
  96. 94 .L13:
  97. 95 004e 0E94 0000 call ShiftDigital
  98. 96 0052 DF5F subi r29,lo8(-(1))
  99. 97 0054 00C0 rjmp .L11
  100. 98 .L27:
  101. 99 0056 8C2F mov r24,r28
  102. 100 /* epilogue start */
  103. 101 0058 DF91 pop r29
  104. 102 005a CF91 pop r28
  105. 103 005c 1F91 pop r17
  106. 104 005e 0F91 pop r16
  107. 105 0060 FF90 pop r15
  108. 106 0062 0895 ret
  109. 107 .size CountDigitalShifts, .-CountDigitalShifts
  110. 108 .section .text.SpiDigitalGet,"ax",@progbits
  111. 109 .global SpiDigitalGet
  112. 110 .type SpiDigitalGet, @function
  113. 111 SpiDigitalGet:
  114. 112 0000 1F93 push r17
  115. 113 0002 CF93 push r28
  116. 114 0004 DF93 push r29
  117. GAS LISTING /tmp/ccyxqnS2.s page 3
  118. 115 0006 00D0 rcall .
  119. 116 0008 1F92 push __zero_reg__
  120. 117 000a CDB7 in r28,__SP_L__
  121. 118 000c DEB7 in r29,__SP_H__
  122. 119 /* prologue: function */
  123. 120 /* frame size = 4 */
  124. 121 /* stack size = 7 */
  125. 122 .L__stack_usage = 7
  126. 123 000e 182F mov r17,r24
  127. 124 0010 5D98 cbi 0xb,5
  128. 125 0012 2F9A sbi 0x5,7
  129. 126 0014 0E94 0000 call delay_us.constprop.0
  130. 127 0018 2F98 cbi 0x5,7
  131. 128 001a 0E94 0000 call delay_us.constprop.0
  132. 129 001e 60E0 ldi r22,0
  133. 130 0020 70E0 ldi r23,0
  134. 131 0022 CB01 movw r24,r22
  135. 132 .L29:
  136. 133 0024 1123 tst r17
  137. 134 0026 01F0 breq .L35
  138. 135 0028 660F lsl r22
  139. 136 002a 771F rol r23
  140. 137 002c 881F rol r24
  141. 138 002e 991F rol r25
  142. 139 0030 4E99 sbic 0x9,6
  143. 140 0032 6160 ori r22,1
  144. 141 .L30:
  145. 142 0034 6983 std Y+1,r22
  146. 143 0036 7A83 std Y+2,r23
  147. 144 0038 8B83 std Y+3,r24
  148. 145 003a 9C83 std Y+4,r25
  149. 146 003c 0E94 0000 call ShiftDigital
  150. 147 0040 1150 subi r17,lo8(-(-1))
  151. 148 0042 9C81 ldd r25,Y+4
  152. 149 0044 8B81 ldd r24,Y+3
  153. 150 0046 7A81 ldd r23,Y+2
  154. 151 0048 6981 ldd r22,Y+1
  155. 152 004a 00C0 rjmp .L29
  156. 153 .L35:
  157. 154 /* epilogue start */
  158. 155 004c 0F90 pop __tmp_reg__
  159. 156 004e 0F90 pop __tmp_reg__
  160. 157 0050 0F90 pop __tmp_reg__
  161. 158 0052 0F90 pop __tmp_reg__
  162. 159 0054 DF91 pop r29
  163. 160 0056 CF91 pop r28
  164. 161 0058 1F91 pop r17
  165. 162 005a 0895 ret
  166. 163 .size SpiDigitalGet, .-SpiDigitalGet
  167. 164 .section .text.SpiDigitalSet,"ax",@progbits
  168. 165 .global SpiDigitalSet
  169. 166 .type SpiDigitalSet, @function
  170. 167 SpiDigitalSet:
  171. 168 0000 CF92 push r12
  172. 169 0002 DF92 push r13
  173. 170 0004 EF92 push r14
  174. 171 0006 FF92 push r15
  175. GAS LISTING /tmp/ccyxqnS2.s page 4
  176. 172 0008 1F93 push r17
  177. 173 000a CF93 push r28
  178. 174 000c DF93 push r29
  179. 175 000e 00D0 rcall .
  180. 176 0010 1F92 push __zero_reg__
  181. 177 0012 CDB7 in r28,__SP_L__
  182. 178 0014 DEB7 in r29,__SP_H__
  183. 179 /* prologue: function */
  184. 180 /* frame size = 4 */
  185. 181 /* stack size = 11 */
  186. 182 .L__stack_usage = 11
  187. 183 0016 8823 tst r24
  188. 184 0018 01F0 breq .L36
  189. 185 001a 9FEF ldi r25,lo8(-1)
  190. 186 001c 980F add r25,r24
  191. 187 001e C12C mov r12,__zero_reg__
  192. 188 0020 D12C mov r13,__zero_reg__
  193. 189 0022 7601 movw r14,r12
  194. 190 0024 C394 inc r12
  195. 191 0026 00C0 rjmp 2f
  196. 192 1:
  197. 193 0028 CC0C lsl r12
  198. 194 002a DD1C rol r13
  199. 195 002c EE1C rol r14
  200. 196 002e FF1C rol r15
  201. 197 2:
  202. 198 0030 9A95 dec r25
  203. 199 0032 02F4 brpl 1b
  204. 200 0034 182F mov r17,r24
  205. 201 .L40:
  206. 202 0036 DB01 movw r26,r22
  207. 203 0038 CA01 movw r24,r20
  208. 204 003a 8C21 and r24,r12
  209. 205 003c 9D21 and r25,r13
  210. 206 003e AE21 and r26,r14
  211. 207 0040 BF21 and r27,r15
  212. 208 0042 892B or r24,r25
  213. 209 0044 8A2B or r24,r26
  214. 210 0046 8B2B or r24,r27
  215. 211 0048 01F0 breq .L38
  216. 212 004a 5D9A sbi 0xb,5
  217. 213 004c 00C0 rjmp .L39
  218. 214 .L38:
  219. 215 004e 5D98 cbi 0xb,5
  220. 216 .L39:
  221. 217 0050 4983 std Y+1,r20
  222. 218 0052 5A83 std Y+2,r21
  223. 219 0054 6B83 std Y+3,r22
  224. 220 0056 7C83 std Y+4,r23
  225. 221 0058 0E94 0000 call delay_us.constprop.0
  226. 222 005c 0E94 0000 call ShiftDigital
  227. 223 0060 F694 lsr r15
  228. 224 0062 E794 ror r14
  229. 225 0064 D794 ror r13
  230. 226 0066 C794 ror r12
  231. 227 0068 1150 subi r17,lo8(-(-1))
  232. 228 006a 4981 ldd r20,Y+1
  233. GAS LISTING /tmp/ccyxqnS2.s page 5
  234. 229 006c 5A81 ldd r21,Y+2
  235. 230 006e 6B81 ldd r22,Y+3
  236. 231 0070 7C81 ldd r23,Y+4
  237. 232 0072 1111 cpse r17,__zero_reg__
  238. 233 0074 00C0 rjmp .L40
  239. 234 0076 2D98 cbi 0x5,5
  240. 235 0078 0E94 0000 call delay_us.constprop.0
  241. 236 007c 2D9A sbi 0x5,5
  242. 237 .L36:
  243. 238 /* epilogue start */
  244. 239 007e 0F90 pop __tmp_reg__
  245. 240 0080 0F90 pop __tmp_reg__
  246. 241 0082 0F90 pop __tmp_reg__
  247. 242 0084 0F90 pop __tmp_reg__
  248. 243 0086 DF91 pop r29
  249. 244 0088 CF91 pop r28
  250. 245 008a 1F91 pop r17
  251. 246 008c FF90 pop r15
  252. 247 008e EF90 pop r14
  253. 248 0090 DF90 pop r13
  254. 249 0092 CF90 pop r12
  255. 250 0094 0895 ret
  256. 251 .size SpiDigitalSet, .-SpiDigitalSet
  257. 252 .section .text.SpiDigitalInit,"ax",@progbits
  258. 253 .global SpiDigitalInit
  259. 254 .type SpiDigitalInit, @function
  260. 255 SpiDigitalInit:
  261. 256 0000 EF92 push r14
  262. 257 0002 FF92 push r15
  263. 258 0004 0F93 push r16
  264. 259 0006 1F93 push r17
  265. 260 0008 CF93 push r28
  266. 261 000a DF93 push r29
  267. 262 /* prologue: function */
  268. 263 /* frame size = 0 */
  269. 264 /* stack size = 6 */
  270. 265 .L__stack_usage = 6
  271. 266 000c EC01 movw r28,r24
  272. 267 000e 7B01 movw r14,r22
  273. 268 0010 0E94 0000 call NutGetCpuClock
  274. 269 0014 605E subi r22,-32
  275. 270 0016 7E45 sbci r23,94
  276. 271 0018 884F sbci r24,-8
  277. 272 001a 9F4F sbci r25,-1
  278. 273 001c 20E0 ldi r18,0
  279. 274 001e 39E0 ldi r19,lo8(9)
  280. 275 0020 4DE3 ldi r20,lo8(61)
  281. 276 0022 50E0 ldi r21,0
  282. 277 0024 0E94 0000 call __udivmodsi4
  283. 278 0028 2223 tst r18
  284. 279 002a 01F0 breq .L46
  285. 280 002c 2093 0000 sts us_loops,r18
  286. 281 0030 00C0 rjmp .L47
  287. 282 .L46:
  288. 283 0032 81E0 ldi r24,lo8(1)
  289. 284 0034 8093 0000 sts us_loops,r24
  290. 285 .L47:
  291. GAS LISTING /tmp/ccyxqnS2.s page 6
  292. 286 0038 559A sbi 0xa,5
  293. 287 003a 5E9A sbi 0xb,6
  294. 288 003c 5698 cbi 0xa,6
  295. 289 003e 5F9A sbi 0xb,7
  296. 290 0040 579A sbi 0xa,7
  297. 291 0042 2D9A sbi 0x5,5
  298. 292 0044 259A sbi 0x4,5
  299. 293 0046 2F98 cbi 0x5,7
  300. 294 0048 279A sbi 0x4,7
  301. 295 004a 40E0 ldi r20,0
  302. 296 004c 60E0 ldi r22,0
  303. 297 004e 80E2 ldi r24,lo8(32)
  304. 298 0050 0E94 0000 call CountDigitalShifts
  305. 299 0054 40E0 ldi r20,0
  306. 300 0056 61E0 ldi r22,lo8(1)
  307. 301 0058 80E2 ldi r24,lo8(32)
  308. 302 005a 0E94 0000 call CountDigitalShifts
  309. 303 005e 1FEF ldi r17,lo8(-1)
  310. 304 0060 180F add r17,r24
  311. 305 0062 1882 st Y,__zero_reg__
  312. 306 0064 05E0 ldi r16,lo8(5)
  313. 307 .L50:
  314. 308 0066 41E0 ldi r20,lo8(1)
  315. 309 0068 60E0 ldi r22,0
  316. 310 006a 812F mov r24,r17
  317. 311 006c 0E94 0000 call CountDigitalShifts
  318. 312 0070 9881 ld r25,Y
  319. 313 0072 9817 cp r25,r24
  320. 314 0074 00F4 brsh .L48
  321. 315 0076 8883 st Y,r24
  322. 316 .L48:
  323. 317 0078 41E0 ldi r20,lo8(1)
  324. 318 007a 61E0 ldi r22,lo8(1)
  325. 319 007c 812F mov r24,r17
  326. 320 007e 0E94 0000 call CountDigitalShifts
  327. 321 0082 9881 ld r25,Y
  328. 322 0084 9817 cp r25,r24
  329. 323 0086 00F4 brsh .L49
  330. 324 0088 8883 st Y,r24
  331. 325 .L49:
  332. 326 008a 0150 subi r16,lo8(-(-1))
  333. 327 008c 01F4 brne .L50
  334. 328 008e 8881 ld r24,Y
  335. 329 0090 181B sub r17,r24
  336. 330 0092 F701 movw r30,r14
  337. 331 0094 1083 st Z,r17
  338. 332 /* epilogue start */
  339. 333 0096 DF91 pop r29
  340. 334 0098 CF91 pop r28
  341. 335 009a 1F91 pop r17
  342. 336 009c 0F91 pop r16
  343. 337 009e FF90 pop r15
  344. 338 00a0 EF90 pop r14
  345. 339 00a2 0895 ret
  346. 340 .size SpiDigitalInit, .-SpiDigitalInit
  347. 341 .data
  348. 342 .type us_loops, @object
  349. GAS LISTING /tmp/ccyxqnS2.s page 7
  350. 343 .size us_loops, 1
  351. 344 us_loops:
  352. 345 0000 01 .byte 1
  353. 346 .ident "GCC: (GNU) 5.3.0"
  354. 347 .global __do_copy_data
  355. GAS LISTING /tmp/ccyxqnS2.s page 8
  356. DEFINED SYMBOLS
  357. *ABS*:0000000000000000 spidigio.c
  358. /tmp/ccyxqnS2.s:2 *ABS*:000000000000003e __SP_H__
  359. /tmp/ccyxqnS2.s:3 *ABS*:000000000000003d __SP_L__
  360. /tmp/ccyxqnS2.s:4 *ABS*:000000000000003f __SREG__
  361. /tmp/ccyxqnS2.s:5 *ABS*:000000000000003b __RAMPZ__
  362. /tmp/ccyxqnS2.s:6 *ABS*:0000000000000000 __tmp_reg__
  363. /tmp/ccyxqnS2.s:7 *ABS*:0000000000000001 __zero_reg__
  364. /tmp/ccyxqnS2.s:10 .text.delay_us.constprop.0:0000000000000000 delay_us.constprop.0
  365. /tmp/ccyxqnS2.s:344 .data:0000000000000000 us_loops
  366. /tmp/ccyxqnS2.s:33 .text.ShiftDigital:0000000000000000 ShiftDigital
  367. /tmp/ccyxqnS2.s:45 .text.CountDigitalShifts:0000000000000000 CountDigitalShifts
  368. /tmp/ccyxqnS2.s:111 .text.SpiDigitalGet:0000000000000000 SpiDigitalGet
  369. /tmp/ccyxqnS2.s:167 .text.SpiDigitalSet:0000000000000000 SpiDigitalSet
  370. /tmp/ccyxqnS2.s:255 .text.SpiDigitalInit:0000000000000000 SpiDigitalInit
  371. UNDEFINED SYMBOLS
  372. NutGetCpuClock
  373. __udivmodsi4
  374. __do_copy_data