i2cbus_avr.lst 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655
  1. GAS LISTING /tmp/cclgtdP6.s page 1
  2. 1 .file "i2cbus_avr.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.TwInterrupt,"ax",@progbits
  10. 9 .type TwInterrupt, @function
  11. 10 TwInterrupt:
  12. 11 0000 CF93 push r28
  13. 12 0002 DF93 push r29
  14. 13 /* prologue: function */
  15. 14 /* frame size = 0 */
  16. 15 /* stack size = 2 */
  17. 16 .L__stack_usage = 2
  18. 17 0004 DC01 movw r26,r24
  19. 18 0006 1396 adiw r26,3
  20. 19 0008 ED91 ld r30,X+
  21. 20 000a FC91 ld r31,X
  22. 21 000c 1497 sbiw r26,3+1
  23. 22 000e 2091 BC00 lds r18,188
  24. 23 0012 2F78 andi r18,lo8(-113)
  25. 24 0014 9091 B900 lds r25,185
  26. 25 0018 987F andi r25,lo8(-8)
  27. 26 001a 9033 cpi r25,lo8(48)
  28. 27 001c 01F4 brne .+2
  29. 28 001e 00C0 rjmp .L3
  30. 29 0020 00F4 brsh .L4
  31. 30 0022 9831 cpi r25,lo8(24)
  32. 31 0024 01F0 breq .L5
  33. 32 0026 00F4 brsh .L6
  34. 33 0028 9830 cpi r25,lo8(8)
  35. 34 002a 01F0 breq .L7
  36. 35 002c 9031 cpi r25,lo8(16)
  37. 36 002e 01F0 breq .L7
  38. 37 0030 00C0 rjmp .L2
  39. 38 .L6:
  40. 39 0032 9032 cpi r25,lo8(32)
  41. 40 0034 01F4 brne .+2
  42. 41 0036 00C0 rjmp .L3
  43. 42 0038 9832 cpi r25,lo8(40)
  44. 43 003a 01F0 breq .L5
  45. 44 003c 00C0 rjmp .L2
  46. 45 .L4:
  47. 46 003e 9834 cpi r25,lo8(72)
  48. 47 0040 01F4 brne .+2
  49. 48 0042 00C0 rjmp .L3
  50. 49 0044 00F4 brsh .L8
  51. 50 0046 9833 cpi r25,lo8(56)
  52. 51 0048 01F4 brne .+2
  53. 52 004a 00C0 rjmp .L3
  54. 53 004c 9034 cpi r25,lo8(64)
  55. 54 004e 01F4 brne .+2
  56. 55 0050 00C0 rjmp .L9
  57. 56 0052 00C0 rjmp .L2
  58. 57 .L8:
  59. GAS LISTING /tmp/cclgtdP6.s page 2
  60. 58 0054 9035 cpi r25,lo8(80)
  61. 59 0056 01F4 brne .+2
  62. 60 0058 00C0 rjmp .L10
  63. 61 005a 9835 cpi r25,lo8(88)
  64. 62 005c 01F0 breq .+2
  65. 63 005e 00C0 rjmp .L2
  66. 64 0060 4681 ldd r20,Z+6
  67. 65 0062 5781 ldd r21,Z+7
  68. 66 0064 8285 ldd r24,Z+10
  69. 67 0066 9385 ldd r25,Z+11
  70. 68 0068 BC01 movw r22,r24
  71. 69 006a 6F5F subi r22,-1
  72. 70 006c 7F4F sbci r23,-1
  73. 71 006e 7387 std Z+11,r23
  74. 72 0070 6287 std Z+10,r22
  75. 73 0072 3091 BB00 lds r19,187
  76. 74 0076 FA01 movw r30,r20
  77. 75 0078 E80F add r30,r24
  78. 76 007a F91F adc r31,r25
  79. 77 007c 3083 st Z,r19
  80. 78 007e 2061 ori r18,lo8(16)
  81. 79 0080 00C0 rjmp .L13
  82. 80 .L7:
  83. 81 0082 6481 ldd r22,Z+4
  84. 82 0084 7581 ldd r23,Z+5
  85. 83 0086 4281 ldd r20,Z+2
  86. 84 0088 5381 ldd r21,Z+3
  87. 85 008a 8C91 ld r24,X
  88. 86 008c 6417 cp r22,r20
  89. 87 008e 7507 cpc r23,r21
  90. 88 0090 04F0 brlt .L59
  91. 89 0092 8160 ori r24,lo8(1)
  92. 90 .L59:
  93. 91 0094 8093 BB00 sts 187,r24
  94. 92 0098 00C0 rjmp .L13
  95. 93 .L5:
  96. 94 009a 4481 ldd r20,Z+4
  97. 95 009c 5581 ldd r21,Z+5
  98. 96 009e 8281 ldd r24,Z+2
  99. 97 00a0 9381 ldd r25,Z+3
  100. 98 00a2 4817 cp r20,r24
  101. 99 00a4 5907 cpc r21,r25
  102. 100 00a6 04F4 brge .L14
  103. 101 00a8 4081 ld r20,Z
  104. 102 00aa 5181 ldd r21,Z+1
  105. 103 00ac 8481 ldd r24,Z+4
  106. 104 00ae 9581 ldd r25,Z+5
  107. 105 00b0 BC01 movw r22,r24
  108. 106 00b2 6F5F subi r22,-1
  109. 107 00b4 7F4F sbci r23,-1
  110. 108 00b6 7583 std Z+5,r23
  111. 109 00b8 6483 std Z+4,r22
  112. 110 00ba FA01 movw r30,r20
  113. 111 00bc E80F add r30,r24
  114. 112 00be F91F adc r31,r25
  115. 113 00c0 8081 ld r24,Z
  116. 114 00c2 00C0 rjmp .L59
  117. GAS LISTING /tmp/cclgtdP6.s page 3
  118. 115 .L14:
  119. 116 00c4 8085 ldd r24,Z+8
  120. 117 00c6 9185 ldd r25,Z+9
  121. 118 00c8 892B or r24,r25
  122. 119 00ca 01F0 breq .L3
  123. 120 00cc 2062 ori r18,lo8(32)
  124. 121 00ce 00C0 rjmp .L13
  125. 122 .L3:
  126. 123 00d0 2061 ori r18,lo8(16)
  127. 124 00d2 1596 adiw r26,5
  128. 125 00d4 ED91 ld r30,X+
  129. 126 00d6 FC91 ld r31,X
  130. 127 00d8 1697 sbiw r26,5+1
  131. 128 00da 3097 sbiw r30,0
  132. 129 00dc 01F4 brne .L15
  133. 130 00de 8FEF ldi r24,lo8(-1)
  134. 131 00e0 9FEF ldi r25,lo8(-1)
  135. 132 00e2 1696 adiw r26,5+1
  136. 133 00e4 9C93 st X,r25
  137. 134 00e6 8E93 st -X,r24
  138. 135 00e8 1597 sbiw r26,5
  139. 136 00ea 00C0 rjmp .L13
  140. 137 .L15:
  141. 138 00ec EF3F cpi r30,-1
  142. 139 00ee 8FEF ldi r24,-1
  143. 140 00f0 F807 cpc r31,r24
  144. 141 00f2 01F0 breq .L13
  145. 142 00f4 8481 ldd r24,Z+4
  146. 143 00f6 9581 ldd r25,Z+5
  147. 144 00f8 0196 adiw r24,1
  148. 145 00fa 9583 std Z+5,r25
  149. 146 00fc 8483 std Z+4,r24
  150. 147 00fe 00C0 rjmp .L13
  151. 148 .L10:
  152. 149 0100 4681 ldd r20,Z+6
  153. 150 0102 5781 ldd r21,Z+7
  154. 151 0104 8285 ldd r24,Z+10
  155. 152 0106 9385 ldd r25,Z+11
  156. 153 0108 BC01 movw r22,r24
  157. 154 010a 6F5F subi r22,-1
  158. 155 010c 7F4F sbci r23,-1
  159. 156 010e 7387 std Z+11,r23
  160. 157 0110 6287 std Z+10,r22
  161. 158 0112 3091 BB00 lds r19,187
  162. 159 0116 EA01 movw r28,r20
  163. 160 0118 C80F add r28,r24
  164. 161 011a D91F adc r29,r25
  165. 162 011c 3883 st Y,r19
  166. 163 .L9:
  167. 164 011e 8285 ldd r24,Z+10
  168. 165 0120 9385 ldd r25,Z+11
  169. 166 0122 0196 adiw r24,1
  170. 167 0124 4085 ldd r20,Z+8
  171. 168 0126 5185 ldd r21,Z+9
  172. 169 0128 8417 cp r24,r20
  173. 170 012a 9507 cpc r25,r21
  174. 171 012c 04F4 brge .L13
  175. GAS LISTING /tmp/cclgtdP6.s page 4
  176. 172 012e 2064 ori r18,lo8(64)
  177. 173 0130 00C0 rjmp .L13
  178. 174 .L2:
  179. 175 0132 983F cpi r25,lo8(-8)
  180. 176 0134 01F0 breq .L1
  181. 177 0136 2061 ori r18,lo8(16)
  182. 178 0138 2093 BC00 sts 188,r18
  183. 179 013c 00C0 rjmp .L1
  184. 180 .L13:
  185. 181 013e 2093 BC00 sts 188,r18
  186. 182 0142 24FF sbrs r18,4
  187. 183 0144 00C0 rjmp .L1
  188. 184 0146 1596 adiw r26,5
  189. 185 0148 ED91 ld r30,X+
  190. 186 014a FC91 ld r31,X
  191. 187 014c 1697 sbiw r26,5+1
  192. 188 014e 3097 sbiw r30,0
  193. 189 0150 01F4 brne .L19
  194. 190 0152 8FEF ldi r24,lo8(-1)
  195. 191 0154 9FEF ldi r25,lo8(-1)
  196. 192 0156 1696 adiw r26,5+1
  197. 193 0158 9C93 st X,r25
  198. 194 015a 8E93 st -X,r24
  199. 195 015c 1597 sbiw r26,5
  200. 196 015e 00C0 rjmp .L1
  201. 197 .L19:
  202. 198 0160 EF3F cpi r30,-1
  203. 199 0162 8FEF ldi r24,-1
  204. 200 0164 F807 cpc r31,r24
  205. 201 0166 01F0 breq .L1
  206. 202 0168 8481 ldd r24,Z+4
  207. 203 016a 9581 ldd r25,Z+5
  208. 204 016c 0196 adiw r24,1
  209. 205 016e 9583 std Z+5,r25
  210. 206 0170 8483 std Z+4,r24
  211. 207 .L1:
  212. 208 /* epilogue start */
  213. 209 0172 DF91 pop r29
  214. 210 0174 CF91 pop r28
  215. 211 0176 0895 ret
  216. 212 .size TwInterrupt, .-TwInterrupt
  217. 213 .section .text.AvrTwiBusTran,"ax",@progbits
  218. 214 .type AvrTwiBusTran, @function
  219. 215 AvrTwiBusTran:
  220. 216 0000 EF92 push r14
  221. 217 0002 FF92 push r15
  222. 218 0004 0F93 push r16
  223. 219 0006 1F93 push r17
  224. 220 0008 CF93 push r28
  225. 221 000a DF93 push r29
  226. 222 /* prologue: function */
  227. 223 /* frame size = 0 */
  228. 224 /* stack size = 6 */
  229. 225 .L__stack_usage = 6
  230. 226 000c 8C01 movw r16,r24
  231. 227 000e 7B01 movw r14,r22
  232. 228 0010 DC01 movw r26,r24
  233. GAS LISTING /tmp/cclgtdP6.s page 5
  234. 229 0012 ED91 ld r30,X+
  235. 230 0014 FC91 ld r31,X
  236. 231 0016 1197 sbiw r26,1
  237. 232 0018 C081 ld r28,Z
  238. 233 001a D181 ldd r29,Z+1
  239. 234 001c 1296 adiw r26,2
  240. 235 001e 8C91 ld r24,X
  241. 236 0020 880F lsl r24
  242. 237 0022 8883 st Y,r24
  243. 238 0024 7C83 std Y+4,r23
  244. 239 0026 6B83 std Y+3,r22
  245. 240 0028 84EA ldi r24,lo8(-92)
  246. 241 002a 8093 BC00 sts 188,r24
  247. 242 002e 8981 ldd r24,Y+1
  248. 243 0030 9A81 ldd r25,Y+2
  249. 244 0032 0E94 0000 call NutIrqEnable
  250. 245 0036 F801 movw r30,r16
  251. 246 0038 4481 ldd r20,Z+4
  252. 247 003a 5581 ldd r21,Z+5
  253. 248 003c 6681 ldd r22,Z+6
  254. 249 003e 7781 ldd r23,Z+7
  255. 250 0040 CE01 movw r24,r28
  256. 251 0042 0596 adiw r24,5
  257. 252 0044 0E94 0000 call NutEventWait
  258. 253 0048 8C01 movw r16,r24
  259. 254 004a 8981 ldd r24,Y+1
  260. 255 004c 9A81 ldd r25,Y+2
  261. 256 004e 0E94 0000 call NutIrqDisable
  262. 257 0052 0115 cp r16,__zero_reg__
  263. 258 0054 1105 cpc r17,__zero_reg__
  264. 259 0056 01F0 breq .L62
  265. 260 0058 8091 BC00 lds r24,188
  266. 261 005c 87FF sbrs r24,7
  267. 262 005e 00C0 rjmp .L63
  268. 263 0060 84E9 ldi r24,lo8(-108)
  269. 264 0062 8093 BC00 sts 188,r24
  270. 265 0066 00C0 rjmp .L63
  271. 266 .L62:
  272. 267 0068 D701 movw r26,r14
  273. 268 006a 1A96 adiw r26,10
  274. 269 006c 0D91 ld r16,X+
  275. 270 006e 1C91 ld r17,X
  276. 271 0070 1B97 sbiw r26,10+1
  277. 272 .L63:
  278. 273 0072 C801 movw r24,r16
  279. 274 /* epilogue start */
  280. 275 0074 DF91 pop r29
  281. 276 0076 CF91 pop r28
  282. 277 0078 1F91 pop r17
  283. 278 007a 0F91 pop r16
  284. 279 007c FF90 pop r15
  285. 280 007e EF90 pop r14
  286. 281 0080 0895 ret
  287. 282 .size AvrTwiBusTran, .-AvrTwiBusTran
  288. 283 .section .text.AvrTwiBusWait,"ax",@progbits
  289. 284 .type AvrTwiBusWait, @function
  290. 285 AvrTwiBusWait:
  291. GAS LISTING /tmp/cclgtdP6.s page 6
  292. 286 0000 0F93 push r16
  293. 287 0002 1F93 push r17
  294. 288 0004 CF93 push r28
  295. 289 0006 DF93 push r29
  296. 290 /* prologue: function */
  297. 291 /* frame size = 0 */
  298. 292 /* stack size = 4 */
  299. 293 .L__stack_usage = 4
  300. 294 0008 182F mov r17,r24
  301. 295 000a 062F mov r16,r22
  302. 296 000c EA01 movw r28,r20
  303. 297 .L65:
  304. 298 000e 8091 BC00 lds r24,188
  305. 299 0012 8123 and r24,r17
  306. 300 0014 8017 cp r24,r16
  307. 301 0016 01F0 breq .L64
  308. 302 0018 2097 sbiw r28,0
  309. 303 001a 01F0 breq .L64
  310. 304 001c 61E0 ldi r22,lo8(1)
  311. 305 001e 70E0 ldi r23,0
  312. 306 0020 80E0 ldi r24,0
  313. 307 0022 90E0 ldi r25,0
  314. 308 0024 0E94 0000 call NutSleep
  315. 309 0028 2197 sbiw r28,1
  316. 310 002a 00C0 rjmp .L65
  317. 311 .L64:
  318. 312 /* epilogue start */
  319. 313 002c DF91 pop r29
  320. 314 002e CF91 pop r28
  321. 315 0030 1F91 pop r17
  322. 316 0032 0F91 pop r16
  323. 317 0034 0895 ret
  324. 318 .size AvrTwiBusWait, .-AvrTwiBusWait
  325. 319 .section .text.AvrTwiBusProbe,"ax",@progbits
  326. 320 .type AvrTwiBusProbe, @function
  327. 321 AvrTwiBusProbe:
  328. 322 0000 0F93 push r16
  329. 323 0002 1F93 push r17
  330. 324 0004 CF93 push r28
  331. 325 0006 DF93 push r29
  332. 326 0008 1F92 push __zero_reg__
  333. 327 000a CDB7 in r28,__SP_L__
  334. 328 000c DEB7 in r29,__SP_H__
  335. 329 /* prologue: function */
  336. 330 /* frame size = 1 */
  337. 331 /* stack size = 5 */
  338. 332 .L__stack_usage = 5
  339. 333 000e 8B01 movw r16,r22
  340. 334 0010 2FEF ldi r18,lo8(-1)
  341. 335 0012 2983 std Y+1,r18
  342. 336 0014 FC01 movw r30,r24
  343. 337 0016 8285 ldd r24,Z+10
  344. 338 0018 9385 ldd r25,Z+11
  345. 339 001a A485 ldd r26,Z+12
  346. 340 001c B585 ldd r27,Z+13
  347. 341 001e 8F3F cpi r24,-1
  348. 342 0020 9105 cpc r25,__zero_reg__
  349. GAS LISTING /tmp/cclgtdP6.s page 7
  350. 343 0022 A105 cpc r26,__zero_reg__
  351. 344 0024 B105 cpc r27,__zero_reg__
  352. 345 0026 01F0 breq .+2
  353. 346 0028 00F4 brsh .L69
  354. 347 002a 8983 std Y+1,r24
  355. 348 .L69:
  356. 349 002c 84EA ldi r24,lo8(-92)
  357. 350 002e 8093 BC00 sts 188,r24
  358. 351 0032 AE01 movw r20,r28
  359. 352 0034 4F5F subi r20,-1
  360. 353 0036 5F4F sbci r21,-1
  361. 354 0038 60E8 ldi r22,lo8(-128)
  362. 355 003a 80E8 ldi r24,lo8(-128)
  363. 356 003c 0E94 0000 call AvrTwiBusWait
  364. 357 0040 8981 ldd r24,Y+1
  365. 358 0042 8111 cpse r24,__zero_reg__
  366. 359 0044 00C0 rjmp .L70
  367. 360 .L72:
  368. 361 0046 0FEF ldi r16,lo8(-1)
  369. 362 0048 1FEF ldi r17,lo8(-1)
  370. 363 004a 00C0 rjmp .L71
  371. 364 .L70:
  372. 365 004c 000F lsl r16
  373. 366 004e 111F rol r17
  374. 367 0050 0160 ori r16,lo8(1)
  375. 368 0052 0093 BB00 sts 187,r16
  376. 369 0056 14E8 ldi r17,lo8(-124)
  377. 370 0058 1093 BC00 sts 188,r17
  378. 371 005c AE01 movw r20,r28
  379. 372 005e 4F5F subi r20,-1
  380. 373 0060 5F4F sbci r21,-1
  381. 374 0062 60E8 ldi r22,lo8(-128)
  382. 375 0064 80E8 ldi r24,lo8(-128)
  383. 376 0066 0E94 0000 call AvrTwiBusWait
  384. 377 006a 8981 ldd r24,Y+1
  385. 378 006c 8823 tst r24
  386. 379 006e 01F0 breq .L72
  387. 380 0070 8091 B900 lds r24,185
  388. 381 0074 887F andi r24,lo8(-8)
  389. 382 0076 8034 cpi r24,lo8(64)
  390. 383 0078 01F4 brne .L72
  391. 384 007a 1093 BC00 sts 188,r17
  392. 385 007e AE01 movw r20,r28
  393. 386 0080 4F5F subi r20,-1
  394. 387 0082 5F4F sbci r21,-1
  395. 388 0084 60E8 ldi r22,lo8(-128)
  396. 389 0086 80E8 ldi r24,lo8(-128)
  397. 390 0088 0E94 0000 call AvrTwiBusWait
  398. 391 008c 00E0 ldi r16,0
  399. 392 008e 10E0 ldi r17,0
  400. 393 .L71:
  401. 394 0090 84E9 ldi r24,lo8(-108)
  402. 395 0092 8093 BC00 sts 188,r24
  403. 396 0096 AE01 movw r20,r28
  404. 397 0098 4F5F subi r20,-1
  405. 398 009a 5F4F sbci r21,-1
  406. 399 009c 60E0 ldi r22,0
  407. GAS LISTING /tmp/cclgtdP6.s page 8
  408. 400 009e 80E1 ldi r24,lo8(16)
  409. 401 00a0 0E94 0000 call AvrTwiBusWait
  410. 402 00a4 8981 ldd r24,Y+1
  411. 403 00a6 8823 tst r24
  412. 404 00a8 01F0 breq .L74
  413. 405 00aa C801 movw r24,r16
  414. 406 00ac 00C0 rjmp .L73
  415. 407 .L74:
  416. 408 00ae 8FEF ldi r24,lo8(-1)
  417. 409 00b0 9FEF ldi r25,lo8(-1)
  418. 410 .L73:
  419. 411 /* epilogue start */
  420. 412 00b2 0F90 pop __tmp_reg__
  421. 413 00b4 DF91 pop r29
  422. 414 00b6 CF91 pop r28
  423. 415 00b8 1F91 pop r17
  424. 416 00ba 0F91 pop r16
  425. 417 00bc 0895 ret
  426. 418 .size AvrTwiBusProbe, .-AvrTwiBusProbe
  427. 419 .section .text.AvrTwiBusConf,"ax",@progbits
  428. 420 .type AvrTwiBusConf, @function
  429. 421 AvrTwiBusConf:
  430. 422 0000 CF92 push r12
  431. 423 0002 DF92 push r13
  432. 424 0004 EF92 push r14
  433. 425 0006 FF92 push r15
  434. 426 0008 0F93 push r16
  435. 427 000a 1F93 push r17
  436. 428 000c CF93 push r28
  437. 429 000e DF93 push r29
  438. 430 /* prologue: function */
  439. 431 /* frame size = 0 */
  440. 432 /* stack size = 8 */
  441. 433 .L__stack_usage = 8
  442. 434 0010 EC01 movw r28,r24
  443. 435 0012 0E94 0000 call NutGetCpuClock
  444. 436 0016 6B01 movw r12,r22
  445. 437 0018 7C01 movw r14,r24
  446. 438 001a 2E85 ldd r18,Y+14
  447. 439 001c 3F85 ldd r19,Y+15
  448. 440 001e 4889 ldd r20,Y+16
  449. 441 0020 5989 ldd r21,Y+17
  450. 442 0022 DC01 movw r26,r24
  451. 443 0024 CB01 movw r24,r22
  452. 444 0026 820F add r24,r18
  453. 445 0028 931F adc r25,r19
  454. 446 002a A41F adc r26,r20
  455. 447 002c B51F adc r27,r21
  456. 448 002e BC01 movw r22,r24
  457. 449 0030 CD01 movw r24,r26
  458. 450 0032 9695 lsr r25
  459. 451 0034 8795 ror r24
  460. 452 0036 7795 ror r23
  461. 453 0038 6795 ror r22
  462. 454 003a 0E94 0000 call __udivmodsi4
  463. 455 003e BA01 movw r22,r20
  464. 456 0040 A901 movw r20,r18
  465. GAS LISTING /tmp/cclgtdP6.s page 9
  466. 457 0042 4850 subi r20,8
  467. 458 0044 5109 sbc r21,__zero_reg__
  468. 459 0046 6109 sbc r22,__zero_reg__
  469. 460 0048 7109 sbc r23,__zero_reg__
  470. 461 004a 80E0 ldi r24,0
  471. 462 .L79:
  472. 463 004c 4F3F cpi r20,-1
  473. 464 004e 5105 cpc r21,__zero_reg__
  474. 465 0050 6105 cpc r22,__zero_reg__
  475. 466 0052 7105 cpc r23,__zero_reg__
  476. 467 0054 01F0 breq .L80
  477. 468 0056 00F0 brlo .L80
  478. 469 0058 8430 cpi r24,lo8(4)
  479. 470 005a 01F0 breq .L83
  480. 471 005c F2E0 ldi r31,2
  481. 472 1:
  482. 473 005e 7695 lsr r23
  483. 474 0060 6795 ror r22
  484. 475 0062 5795 ror r21
  485. 476 0064 4795 ror r20
  486. 477 0066 FA95 dec r31
  487. 478 0068 01F4 brne 1b
  488. 479 006a 8F5F subi r24,lo8(-(1))
  489. 480 006c 00C0 rjmp .L79
  490. 481 .L80:
  491. 482 006e 8430 cpi r24,lo8(4)
  492. 483 0070 01F4 brne .L82
  493. 484 .L83:
  494. 485 0072 83E0 ldi r24,lo8(3)
  495. 486 0074 4FEF ldi r20,lo8(-1)
  496. 487 0076 50E0 ldi r21,0
  497. 488 0078 60E0 ldi r22,0
  498. 489 007a 70E0 ldi r23,0
  499. 490 .L82:
  500. 491 007c 4093 B800 sts 184,r20
  501. 492 0080 8093 B900 sts 185,r24
  502. 493 0084 94E0 ldi r25,lo8(4)
  503. 494 0086 9093 BC00 sts 188,r25
  504. 495 008a 880F lsl r24
  505. 496 008c 8A01 movw r16,r20
  506. 497 008e 9B01 movw r18,r22
  507. 498 0090 00C0 rjmp 2f
  508. 499 1:
  509. 500 0092 000F lsl r16
  510. 501 0094 111F rol r17
  511. 502 0096 221F rol r18
  512. 503 0098 331F rol r19
  513. 504 2:
  514. 505 009a 8A95 dec r24
  515. 506 009c 02F4 brpl 1b
  516. 507 009e 085F subi r16,-8
  517. 508 00a0 1F4F sbci r17,-1
  518. 509 00a2 2F4F sbci r18,-1
  519. 510 00a4 3F4F sbci r19,-1
  520. 511 00a6 C701 movw r24,r14
  521. 512 00a8 B601 movw r22,r12
  522. 513 00aa 600F add r22,r16
  523. GAS LISTING /tmp/cclgtdP6.s page 10
  524. 514 00ac 711F adc r23,r17
  525. 515 00ae 821F adc r24,r18
  526. 516 00b0 931F adc r25,r19
  527. 517 00b2 A901 movw r20,r18
  528. 518 00b4 9801 movw r18,r16
  529. 519 00b6 220F lsl r18
  530. 520 00b8 331F rol r19
  531. 521 00ba 441F rol r20
  532. 522 00bc 551F rol r21
  533. 523 00be 0E94 0000 call __udivmodsi4
  534. 524 00c2 2E87 std Y+14,r18
  535. 525 00c4 3F87 std Y+15,r19
  536. 526 00c6 488B std Y+16,r20
  537. 527 00c8 598B std Y+17,r21
  538. 528 00ca 80E0 ldi r24,0
  539. 529 00cc 90E0 ldi r25,0
  540. 530 /* epilogue start */
  541. 531 00ce DF91 pop r29
  542. 532 00d0 CF91 pop r28
  543. 533 00d2 1F91 pop r17
  544. 534 00d4 0F91 pop r16
  545. 535 00d6 FF90 pop r15
  546. 536 00d8 EF90 pop r14
  547. 537 00da DF90 pop r13
  548. 538 00dc CF90 pop r12
  549. 539 00de 0895 ret
  550. 540 .size AvrTwiBusConf, .-AvrTwiBusConf
  551. 541 .section .text.AvrTwiBusInit,"ax",@progbits
  552. 542 .type AvrTwiBusInit, @function
  553. 543 AvrTwiBusInit:
  554. 544 0000 CF93 push r28
  555. 545 0002 DF93 push r29
  556. 546 /* prologue: function */
  557. 547 /* frame size = 0 */
  558. 548 /* stack size = 2 */
  559. 549 .L__stack_usage = 2
  560. 550 0004 FC01 movw r30,r24
  561. 551 0006 C081 ld r28,Z
  562. 552 0008 D181 ldd r29,Z+1
  563. 553 000a 0E94 0000 call AvrTwiBusConf
  564. 554 000e AE01 movw r20,r28
  565. 555 0010 60E0 ldi r22,lo8(gs(TwInterrupt))
  566. 556 0012 70E0 ldi r23,hi8(gs(TwInterrupt))
  567. 557 0014 8981 ldd r24,Y+1
  568. 558 0016 9A81 ldd r25,Y+2
  569. 559 /* epilogue start */
  570. 560 0018 DF91 pop r29
  571. 561 001a CF91 pop r28
  572. 562 001c 0C94 0000 jmp NutRegisterIrqHandler
  573. 563 .size AvrTwiBusInit, .-AvrTwiBusInit
  574. 564 .global i2cBus0Avr
  575. 565 .data
  576. 566 .type i2cBus0Avr, @object
  577. 567 .size i2cBus0Avr, 21
  578. 568 i2cBus0Avr:
  579. 569 0000 0000 .word twi0cb
  580. 570 0002 0000 .word gs(AvrTwiBusInit)
  581. GAS LISTING /tmp/cclgtdP6.s page 11
  582. 571 0004 0000 .word gs(AvrTwiBusConf)
  583. 572 0006 0000 .word gs(AvrTwiBusProbe)
  584. 573 0008 0000 .word gs(AvrTwiBusTran)
  585. 574 000a 64 .byte 100
  586. 575 000b 00 .byte 0
  587. 576 000c 00 .byte 0
  588. 577 000d 00 .byte 0
  589. 578 000e A0 .byte -96
  590. 579 000f 86 .byte -122
  591. 580 0010 01 .byte 1
  592. 581 0011 00 .byte 0
  593. 582 0012 00 .byte 0
  594. 583 0013 0000 .word 0
  595. 584 .type twi0cb, @object
  596. 585 .size twi0cb, 7
  597. 586 twi0cb:
  598. 587 0015 00 .byte 0
  599. 588 0016 0000 .word sig_2WIRE_SERIAL
  600. 589 0018 0000 .word 0
  601. 590 001a 0000 .word 0
  602. 591 .ident "GCC: (GNU) 5.3.0"
  603. 592 .global __do_copy_data
  604. GAS LISTING /tmp/cclgtdP6.s page 12
  605. DEFINED SYMBOLS
  606. *ABS*:0000000000000000 i2cbus_avr.c
  607. /tmp/cclgtdP6.s:2 *ABS*:000000000000003e __SP_H__
  608. /tmp/cclgtdP6.s:3 *ABS*:000000000000003d __SP_L__
  609. /tmp/cclgtdP6.s:4 *ABS*:000000000000003f __SREG__
  610. /tmp/cclgtdP6.s:5 *ABS*:000000000000003b __RAMPZ__
  611. /tmp/cclgtdP6.s:6 *ABS*:0000000000000000 __tmp_reg__
  612. /tmp/cclgtdP6.s:7 *ABS*:0000000000000001 __zero_reg__
  613. /tmp/cclgtdP6.s:10 .text.TwInterrupt:0000000000000000 TwInterrupt
  614. /tmp/cclgtdP6.s:215 .text.AvrTwiBusTran:0000000000000000 AvrTwiBusTran
  615. /tmp/cclgtdP6.s:285 .text.AvrTwiBusWait:0000000000000000 AvrTwiBusWait
  616. /tmp/cclgtdP6.s:321 .text.AvrTwiBusProbe:0000000000000000 AvrTwiBusProbe
  617. /tmp/cclgtdP6.s:421 .text.AvrTwiBusConf:0000000000000000 AvrTwiBusConf
  618. /tmp/cclgtdP6.s:543 .text.AvrTwiBusInit:0000000000000000 AvrTwiBusInit
  619. /tmp/cclgtdP6.s:568 .data:0000000000000000 i2cBus0Avr
  620. /tmp/cclgtdP6.s:586 .data:0000000000000015 twi0cb
  621. UNDEFINED SYMBOLS
  622. NutIrqEnable
  623. NutEventWait
  624. NutIrqDisable
  625. NutSleep
  626. NutGetCpuClock
  627. __udivmodsi4
  628. NutRegisterIrqHandler
  629. sig_2WIRE_SERIAL
  630. __do_copy_data