at24c.lst 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441
  1. GAS LISTING /tmp/ccTIJMRp.s page 1
  2. 1 .file "at24c.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.At24cRead,"ax",@progbits
  10. 9 .global At24cRead
  11. 10 .type At24cRead, @function
  12. 11 At24cRead:
  13. 12 0000 2F92 push r2
  14. 13 0002 3F92 push r3
  15. 14 0004 4F92 push r4
  16. 15 0006 5F92 push r5
  17. 16 0008 6F92 push r6
  18. 17 000a 7F92 push r7
  19. 18 000c 8F92 push r8
  20. 19 000e 9F92 push r9
  21. 20 0010 AF92 push r10
  22. 21 0012 BF92 push r11
  23. 22 0014 CF92 push r12
  24. 23 0016 DF92 push r13
  25. 24 0018 EF92 push r14
  26. 25 001a FF92 push r15
  27. 26 001c 0F93 push r16
  28. 27 001e 1F93 push r17
  29. 28 0020 CF93 push r28
  30. 29 0022 DF93 push r29
  31. 30 0024 CDB7 in r28,__SP_L__
  32. 31 0026 DEB7 in r29,__SP_H__
  33. 32 0028 2A97 sbiw r28,10
  34. 33 002a 0FB6 in __tmp_reg__,__SREG__
  35. 34 002c F894 cli
  36. 35 002e DEBF out __SP_H__,r29
  37. 36 0030 0FBE out __SREG__,__tmp_reg__
  38. 37 0032 CDBF out __SP_L__,r28
  39. 38 /* prologue: function */
  40. 39 /* frame size = 10 */
  41. 40 /* stack size = 28 */
  42. 41 .L__stack_usage = 28
  43. 42 0034 9A87 std Y+10,r25
  44. 43 0036 8987 std Y+9,r24
  45. 44 0038 7887 std Y+8,r23
  46. 45 003a 6F83 std Y+7,r22
  47. 46 003c 1A01 movw r2,r20
  48. 47 003e 2901 movw r4,r18
  49. 48 0040 0896 adiw r24,8
  50. 49 0042 9A83 std Y+2,r25
  51. 50 0044 8983 std Y+1,r24
  52. 51 0046 A985 ldd r26,Y+9
  53. 52 0048 BA85 ldd r27,Y+10
  54. 53 004a 1296 adiw r26,2
  55. 54 004c 6C91 ld r22,X
  56. 55 004e 70E0 ldi r23,0
  57. 56 0050 CA01 movw r24,r20
  58. 57 0052 0E94 0000 call __udivmodhi4
  59. GAS LISTING /tmp/ccTIJMRp.s page 2
  60. 58 0056 E985 ldd r30,Y+9
  61. 59 0058 FA85 ldd r31,Y+10
  62. 60 005a 8781 ldd r24,Z+7
  63. 61 005c 869F mul r24,r22
  64. 62 005e A001 movw r20,r0
  65. 63 0060 879F mul r24,r23
  66. 64 0062 500D add r21,r0
  67. 65 0064 1124 clr __zero_reg__
  68. 66 0066 60E0 ldi r22,0
  69. 67 0068 70E0 ldi r23,0
  70. 68 006a 8981 ldd r24,Y+1
  71. 69 006c 9A81 ldd r25,Y+2
  72. 70 006e 0E94 0000 call NutEventWait
  73. 71 0072 0097 sbiw r24,0
  74. 72 0074 01F0 breq .+2
  75. 73 0076 00C0 rjmp .L2
  76. 74 0078 A985 ldd r26,Y+9
  77. 75 007a BA85 ldd r27,Y+10
  78. 76 007c 1796 adiw r26,7
  79. 77 007e 1C91 ld r17,X
  80. 78 0080 1797 sbiw r26,7
  81. 79 0082 129D mul r17,r2
  82. 80 0084 C001 movw r24,r0
  83. 81 0086 139D mul r17,r3
  84. 82 0088 900D add r25,r0
  85. 83 008a 1124 clr __zero_reg__
  86. 84 008c 1296 adiw r26,2
  87. 85 008e 6C91 ld r22,X
  88. 86 0090 70E0 ldi r23,0
  89. 87 0092 0E94 0000 call __udivmodhi4
  90. 88 0096 CB01 movw r24,r22
  91. 89 0098 A0E0 ldi r26,0
  92. 90 009a B0E0 ldi r27,0
  93. 91 009c 8B83 std Y+3,r24
  94. 92 009e 9C83 std Y+4,r25
  95. 93 00a0 AD83 std Y+5,r26
  96. 94 00a2 BE83 std Y+6,r27
  97. 95 00a4 612C mov r6,__zero_reg__
  98. 96 00a6 712C mov r7,__zero_reg__
  99. 97 .L4:
  100. 98 00a8 8B80 ldd r8,Y+3
  101. 99 00aa 9C80 ldd r9,Y+4
  102. 100 00ac AD80 ldd r10,Y+5
  103. 101 00ae BE80 ldd r11,Y+6
  104. 102 00b0 6101 movw r12,r2
  105. 103 00b2 EF80 ldd r14,Y+7
  106. 104 00b4 F884 ldd r15,Y+8
  107. 105 00b6 A985 ldd r26,Y+9
  108. 106 00b8 BA85 ldd r27,Y+10
  109. 107 00ba 1196 adiw r26,1
  110. 108 00bc 0C91 ld r16,X
  111. 109 00be 1197 sbiw r26,1
  112. 110 00c0 A301 movw r20,r6
  113. 111 00c2 9201 movw r18,r4
  114. 112 00c4 6C91 ld r22,X
  115. 113 00c6 80E0 ldi r24,lo8(AVRTwiBus)
  116. 114 00c8 90E0 ldi r25,hi8(AVRTwiBus)
  117. GAS LISTING /tmp/ccTIJMRp.s page 3
  118. 115 00ca 0E94 0000 call NutTwiMasterRegRead
  119. 116 00ce 1816 cp __zero_reg__,r24
  120. 117 00d0 1906 cpc __zero_reg__,r25
  121. 118 00d2 04F0 brlt .L7
  122. 119 00d4 1150 subi r17,lo8(-(-1))
  123. 120 00d6 61E0 ldi r22,lo8(1)
  124. 121 00d8 70E0 ldi r23,0
  125. 122 00da 80E0 ldi r24,0
  126. 123 00dc 90E0 ldi r25,0
  127. 124 00de 0E94 0000 call NutSleep
  128. 125 00e2 1111 cpse r17,__zero_reg__
  129. 126 00e4 00C0 rjmp .L4
  130. 127 00e6 0FEF ldi r16,lo8(-1)
  131. 128 00e8 1FEF ldi r17,lo8(-1)
  132. 129 00ea 00C0 rjmp .L3
  133. 130 .L7:
  134. 131 00ec 8C01 movw r16,r24
  135. 132 .L3:
  136. 133 00ee 8981 ldd r24,Y+1
  137. 134 00f0 9A81 ldd r25,Y+2
  138. 135 00f2 0E94 0000 call NutEventPost
  139. 136 00f6 81E0 ldi r24,lo8(1)
  140. 137 00f8 90E0 ldi r25,0
  141. 138 00fa 0F3F cpi r16,-1
  142. 139 00fc 1F4F sbci r17,-1
  143. 140 00fe 01F0 breq .L5
  144. 141 0100 80E0 ldi r24,0
  145. 142 0102 90E0 ldi r25,0
  146. 143 .L5:
  147. 144 0104 9195 neg r25
  148. 145 0106 8195 neg r24
  149. 146 0108 9109 sbc r25,__zero_reg__
  150. 147 .L2:
  151. 148 /* epilogue start */
  152. 149 010a 2A96 adiw r28,10
  153. 150 010c 0FB6 in __tmp_reg__,__SREG__
  154. 151 010e F894 cli
  155. 152 0110 DEBF out __SP_H__,r29
  156. 153 0112 0FBE out __SREG__,__tmp_reg__
  157. 154 0114 CDBF out __SP_L__,r28
  158. 155 0116 DF91 pop r29
  159. 156 0118 CF91 pop r28
  160. 157 011a 1F91 pop r17
  161. 158 011c 0F91 pop r16
  162. 159 011e FF90 pop r15
  163. 160 0120 EF90 pop r14
  164. 161 0122 DF90 pop r13
  165. 162 0124 CF90 pop r12
  166. 163 0126 BF90 pop r11
  167. 164 0128 AF90 pop r10
  168. 165 012a 9F90 pop r9
  169. 166 012c 8F90 pop r8
  170. 167 012e 7F90 pop r7
  171. 168 0130 6F90 pop r6
  172. 169 0132 5F90 pop r5
  173. 170 0134 4F90 pop r4
  174. 171 0136 3F90 pop r3
  175. GAS LISTING /tmp/ccTIJMRp.s page 4
  176. 172 0138 2F90 pop r2
  177. 173 013a 0895 ret
  178. 174 .size At24cRead, .-At24cRead
  179. 175 .section .text.At24cWrite,"ax",@progbits
  180. 176 .global At24cWrite
  181. 177 .type At24cWrite, @function
  182. 178 At24cWrite:
  183. 179 0000 2F92 push r2
  184. 180 0002 3F92 push r3
  185. 181 0004 4F92 push r4
  186. 182 0006 5F92 push r5
  187. 183 0008 6F92 push r6
  188. 184 000a 7F92 push r7
  189. 185 000c 8F92 push r8
  190. 186 000e 9F92 push r9
  191. 187 0010 AF92 push r10
  192. 188 0012 BF92 push r11
  193. 189 0014 CF92 push r12
  194. 190 0016 DF92 push r13
  195. 191 0018 EF92 push r14
  196. 192 001a FF92 push r15
  197. 193 001c 0F93 push r16
  198. 194 001e 1F93 push r17
  199. 195 0020 CF93 push r28
  200. 196 0022 DF93 push r29
  201. 197 0024 CDB7 in r28,__SP_L__
  202. 198 0026 DEB7 in r29,__SP_H__
  203. 199 0028 2E97 sbiw r28,14
  204. 200 002a 0FB6 in __tmp_reg__,__SREG__
  205. 201 002c F894 cli
  206. 202 002e DEBF out __SP_H__,r29
  207. 203 0030 0FBE out __SREG__,__tmp_reg__
  208. 204 0032 CDBF out __SP_L__,r28
  209. 205 /* prologue: function */
  210. 206 /* frame size = 14 */
  211. 207 /* stack size = 32 */
  212. 208 .L__stack_usage = 32
  213. 209 0034 9E87 std Y+14,r25
  214. 210 0036 8D87 std Y+13,r24
  215. 211 0038 7E83 std Y+6,r23
  216. 212 003a 6D83 std Y+5,r22
  217. 213 003c 1A01 movw r2,r20
  218. 214 003e 3C83 std Y+4,r19
  219. 215 0040 2B83 std Y+3,r18
  220. 216 0042 0896 adiw r24,8
  221. 217 0044 9887 std Y+8,r25
  222. 218 0046 8F83 std Y+7,r24
  223. 219 0048 AD85 ldd r26,Y+13
  224. 220 004a BE85 ldd r27,Y+14
  225. 221 004c 1296 adiw r26,2
  226. 222 004e 6C91 ld r22,X
  227. 223 0050 70E0 ldi r23,0
  228. 224 0052 CA01 movw r24,r20
  229. 225 0054 0E94 0000 call __udivmodhi4
  230. 226 0058 ED85 ldd r30,Y+13
  231. 227 005a FE85 ldd r31,Y+14
  232. 228 005c 8781 ldd r24,Z+7
  233. GAS LISTING /tmp/ccTIJMRp.s page 5
  234. 229 005e 869F mul r24,r22
  235. 230 0060 A001 movw r20,r0
  236. 231 0062 879F mul r24,r23
  237. 232 0064 500D add r21,r0
  238. 233 0066 1124 clr __zero_reg__
  239. 234 0068 60E0 ldi r22,0
  240. 235 006a 70E0 ldi r23,0
  241. 236 006c 8F81 ldd r24,Y+7
  242. 237 006e 9885 ldd r25,Y+8
  243. 238 0070 0E94 0000 call NutEventWait
  244. 239 0074 7C01 movw r14,r24
  245. 240 0076 892B or r24,r25
  246. 241 0078 01F0 breq .+2
  247. 242 007a 00C0 rjmp .L22
  248. 243 007c 412C mov r4,__zero_reg__
  249. 244 007e 512C mov r5,__zero_reg__
  250. 245 0080 3201 movw r6,r4
  251. 246 .L15:
  252. 247 0082 2114 cp r2,__zero_reg__
  253. 248 0084 3104 cpc r3,__zero_reg__
  254. 249 0086 01F4 brne .+2
  255. 250 0088 00C0 rjmp .L26
  256. 251 008a AD85 ldd r26,Y+13
  257. 252 008c BE85 ldd r27,Y+14
  258. 253 008e 1296 adiw r26,2
  259. 254 0090 2C91 ld r18,X
  260. 255 0092 30E0 ldi r19,0
  261. 256 0094 8B81 ldd r24,Y+3
  262. 257 0096 9C81 ldd r25,Y+4
  263. 258 0098 B901 movw r22,r18
  264. 259 009a 0E94 0000 call __udivmodhi4
  265. 260 009e F901 movw r30,r18
  266. 261 00a0 E81B sub r30,r24
  267. 262 00a2 F90B sbc r31,r25
  268. 263 00a4 CF01 movw r24,r30
  269. 264 00a6 A101 movw r20,r2
  270. 265 00a8 60E0 ldi r22,0
  271. 266 00aa 70E0 ldi r23,0
  272. 267 00ac A0E0 ldi r26,0
  273. 268 00ae B0E0 ldi r27,0
  274. 269 00b0 4817 cp r20,r24
  275. 270 00b2 5907 cpc r21,r25
  276. 271 00b4 6A07 cpc r22,r26
  277. 272 00b6 7B07 cpc r23,r27
  278. 273 00b8 00F4 brsh .L16
  279. 274 00ba DB01 movw r26,r22
  280. 275 00bc CA01 movw r24,r20
  281. 276 .L16:
  282. 277 00be 9A83 std Y+2,r25
  283. 278 00c0 8983 std Y+1,r24
  284. 279 00c2 AD85 ldd r26,Y+13
  285. 280 00c4 BE85 ldd r27,Y+14
  286. 281 00c6 1796 adiw r26,7
  287. 282 00c8 1C91 ld r17,X
  288. 283 00ca 4B81 ldd r20,Y+3
  289. 284 00cc 5C81 ldd r21,Y+4
  290. 285 00ce 9A01 movw r18,r20
  291. GAS LISTING /tmp/ccTIJMRp.s page 6
  292. 286 00d0 40E0 ldi r20,0
  293. 287 00d2 50E0 ldi r21,0
  294. 288 00d4 2987 std Y+9,r18
  295. 289 00d6 3A87 std Y+10,r19
  296. 290 00d8 4B87 std Y+11,r20
  297. 291 00da 5C87 std Y+12,r21
  298. 292 .L18:
  299. 293 00dc AD85 ldd r26,Y+13
  300. 294 00de BE85 ldd r27,Y+14
  301. 295 00e0 1796 adiw r26,7
  302. 296 00e2 8C90 ld r8,X
  303. 297 00e4 1797 sbiw r26,7
  304. 298 00e6 912C mov r9,__zero_reg__
  305. 299 00e8 A12C mov r10,__zero_reg__
  306. 300 00ea B12C mov r11,__zero_reg__
  307. 301 00ec C980 ldd r12,Y+1
  308. 302 00ee DA80 ldd r13,Y+2
  309. 303 00f0 ED80 ldd r14,Y+5
  310. 304 00f2 FE80 ldd r15,Y+6
  311. 305 00f4 1196 adiw r26,1
  312. 306 00f6 0C91 ld r16,X
  313. 307 00f8 1197 sbiw r26,1
  314. 308 00fa 2985 ldd r18,Y+9
  315. 309 00fc 3A85 ldd r19,Y+10
  316. 310 00fe 4B85 ldd r20,Y+11
  317. 311 0100 5C85 ldd r21,Y+12
  318. 312 0102 6C91 ld r22,X
  319. 313 0104 80E0 ldi r24,lo8(AVRTwiBus)
  320. 314 0106 90E0 ldi r25,hi8(AVRTwiBus)
  321. 315 0108 0E94 0000 call NutTwiMasterRegWrite
  322. 316 010c 7C01 movw r14,r24
  323. 317 010e 1816 cp __zero_reg__,r24
  324. 318 0110 1906 cpc __zero_reg__,r25
  325. 319 0112 04F0 brlt .L17
  326. 320 0114 1150 subi r17,lo8(-(-1))
  327. 321 0116 61E0 ldi r22,lo8(1)
  328. 322 0118 70E0 ldi r23,0
  329. 323 011a 80E0 ldi r24,0
  330. 324 011c 90E0 ldi r25,0
  331. 325 011e 0E94 0000 call NutSleep
  332. 326 0122 1111 cpse r17,__zero_reg__
  333. 327 0124 00C0 rjmp .L18
  334. 328 0126 8EEF ldi r24,lo8(-2)
  335. 329 0128 E82E mov r14,r24
  336. 330 012a FF24 clr r15
  337. 331 012c FA94 dec r15
  338. 332 012e 00C0 rjmp .L19
  339. 333 .L26:
  340. 334 0130 E114 cp r14,__zero_reg__
  341. 335 0132 F104 cpc r15,__zero_reg__
  342. 336 0134 01F0 breq .L19
  343. 337 0136 7201 movw r14,r4
  344. 338 .L19:
  345. 339 0138 8F81 ldd r24,Y+7
  346. 340 013a 9885 ldd r25,Y+8
  347. 341 013c 0E94 0000 call NutEventPost
  348. 342 0140 00C0 rjmp .L22
  349. GAS LISTING /tmp/ccTIJMRp.s page 7
  350. 343 .L17:
  351. 344 0142 092E mov __tmp_reg__,r25
  352. 345 0144 000C lsl r0
  353. 346 0146 AA0B sbc r26,r26
  354. 347 0148 BB0B sbc r27,r27
  355. 348 014a 480E add r4,r24
  356. 349 014c 591E adc r5,r25
  357. 350 014e 6A1E adc r6,r26
  358. 351 0150 7B1E adc r7,r27
  359. 352 0152 ED81 ldd r30,Y+5
  360. 353 0154 FE81 ldd r31,Y+6
  361. 354 0156 2981 ldd r18,Y+1
  362. 355 0158 3A81 ldd r19,Y+2
  363. 356 015a E20F add r30,r18
  364. 357 015c F31F adc r31,r19
  365. 358 015e FE83 std Y+6,r31
  366. 359 0160 ED83 std Y+5,r30
  367. 360 0162 4B81 ldd r20,Y+3
  368. 361 0164 5C81 ldd r21,Y+4
  369. 362 0166 420F add r20,r18
  370. 363 0168 531F adc r21,r19
  371. 364 016a 5C83 std Y+4,r21
  372. 365 016c 4B83 std Y+3,r20
  373. 366 016e 221A sub r2,r18
  374. 367 0170 330A sbc r3,r19
  375. 368 0172 00C0 rjmp .L15
  376. 369 .L22:
  377. 370 0174 C701 movw r24,r14
  378. 371 /* epilogue start */
  379. 372 0176 2E96 adiw r28,14
  380. 373 0178 0FB6 in __tmp_reg__,__SREG__
  381. 374 017a F894 cli
  382. 375 017c DEBF out __SP_H__,r29
  383. 376 017e 0FBE out __SREG__,__tmp_reg__
  384. 377 0180 CDBF out __SP_L__,r28
  385. 378 0182 DF91 pop r29
  386. 379 0184 CF91 pop r28
  387. 380 0186 1F91 pop r17
  388. 381 0188 0F91 pop r16
  389. 382 018a FF90 pop r15
  390. 383 018c EF90 pop r14
  391. 384 018e DF90 pop r13
  392. 385 0190 CF90 pop r12
  393. 386 0192 BF90 pop r11
  394. 387 0194 AF90 pop r10
  395. 388 0196 9F90 pop r9
  396. 389 0198 8F90 pop r8
  397. 390 019a 7F90 pop r7
  398. 391 019c 6F90 pop r6
  399. 392 019e 5F90 pop r5
  400. 393 01a0 4F90 pop r4
  401. 394 01a2 3F90 pop r3
  402. 395 01a4 2F90 pop r2
  403. 396 01a6 0895 ret
  404. 397 .size At24cWrite, .-At24cWrite
  405. 398 .ident "GCC: (GNU) 5.3.0"
  406. GAS LISTING /tmp/ccTIJMRp.s page 8
  407. DEFINED SYMBOLS
  408. *ABS*:0000000000000000 at24c.c
  409. /tmp/ccTIJMRp.s:2 *ABS*:000000000000003e __SP_H__
  410. /tmp/ccTIJMRp.s:3 *ABS*:000000000000003d __SP_L__
  411. /tmp/ccTIJMRp.s:4 *ABS*:000000000000003f __SREG__
  412. /tmp/ccTIJMRp.s:5 *ABS*:000000000000003b __RAMPZ__
  413. /tmp/ccTIJMRp.s:6 *ABS*:0000000000000000 __tmp_reg__
  414. /tmp/ccTIJMRp.s:7 *ABS*:0000000000000001 __zero_reg__
  415. /tmp/ccTIJMRp.s:11 .text.At24cRead:0000000000000000 At24cRead
  416. /tmp/ccTIJMRp.s:178 .text.At24cWrite:0000000000000000 At24cWrite
  417. UNDEFINED SYMBOLS
  418. __udivmodhi4
  419. NutEventWait
  420. AVRTwiBus
  421. NutTwiMasterRegRead
  422. NutSleep
  423. NutEventPost
  424. NutTwiMasterRegWrite