spi_flash_at45d.lst 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352
  1. GAS LISTING /tmp/cc60iCvq.s page 1
  2. 1 .file "spi_flash_at45d.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.SpiAt45dFlashCheck,"ax",@progbits
  10. 9 .type SpiAt45dFlashCheck, @function
  11. 10 SpiAt45dFlashCheck:
  12. 11 /* prologue: function */
  13. 12 /* frame size = 0 */
  14. 13 /* stack size = 0 */
  15. 14 .L__stack_usage = 0
  16. 15 0000 80E0 ldi r24,0
  17. 16 0002 90E0 ldi r25,0
  18. 17 0004 0895 ret
  19. 18 .size SpiAt45dFlashCheck, .-SpiAt45dFlashCheck
  20. 19 .section .text.SpiAt45dFlashErase,"ax",@progbits
  21. 20 .type SpiAt45dFlashErase, @function
  22. 21 SpiAt45dFlashErase:
  23. 22 0000 9F92 push r9
  24. 23 0002 AF92 push r10
  25. 24 0004 BF92 push r11
  26. 25 0006 CF92 push r12
  27. 26 0008 DF92 push r13
  28. 27 000a EF92 push r14
  29. 28 000c FF92 push r15
  30. 29 000e 0F93 push r16
  31. 30 0010 1F93 push r17
  32. 31 0012 CF93 push r28
  33. 32 0014 DF93 push r29
  34. 33 /* prologue: function */
  35. 34 /* frame size = 0 */
  36. 35 /* stack size = 11 */
  37. 36 .L__stack_usage = 11
  38. 37 0016 6C01 movw r12,r24
  39. 38 0018 5B01 movw r10,r22
  40. 39 001a FC01 movw r30,r24
  41. 40 001c C281 ldd r28,Z+2
  42. 41 001e D381 ldd r29,Z+3
  43. 42 0020 8881 ld r24,Y
  44. 43 0022 9981 ldd r25,Y+1
  45. 44 0024 8617 cp r24,r22
  46. 45 0026 9707 cpc r25,r23
  47. 46 0028 00F0 brlo .L3
  48. 47 002a 9A01 movw r18,r20
  49. 48 002c 260F add r18,r22
  50. 49 002e 371F adc r19,r23
  51. 50 0030 8217 cp r24,r18
  52. 51 0032 9307 cpc r25,r19
  53. 52 0034 00F4 brsh .L3
  54. 53 0036 8FEF ldi r24,lo8(-1)
  55. 54 0038 9FEF ldi r25,lo8(-1)
  56. 55 003a 9983 std Y+1,r25
  57. 56 003c 8883 st Y,r24
  58. 57 003e 8C81 ldd r24,Y+4
  59. GAS LISTING /tmp/cc60iCvq.s page 2
  60. 58 0040 8E7F andi r24,lo8(-2)
  61. 59 0042 8C83 std Y+4,r24
  62. 60 .L3:
  63. 61 0044 8A81 ldd r24,Y+2
  64. 62 0046 9B81 ldd r25,Y+3
  65. 63 0048 8A15 cp r24,r10
  66. 64 004a 9B05 cpc r25,r11
  67. 65 004c 00F0 brlo .L4
  68. 66 004e 9A01 movw r18,r20
  69. 67 0050 2A0D add r18,r10
  70. 68 0052 3B1D adc r19,r11
  71. 69 0054 8217 cp r24,r18
  72. 70 0056 9307 cpc r25,r19
  73. 71 0058 00F4 brsh .L4
  74. 72 005a 8FEF ldi r24,lo8(-1)
  75. 73 005c 9FEF ldi r25,lo8(-1)
  76. 74 005e 9B83 std Y+3,r25
  77. 75 0060 8A83 std Y+2,r24
  78. 76 0062 8D81 ldd r24,Y+5
  79. 77 0064 8E7F andi r24,lo8(-2)
  80. 78 0066 8D83 std Y+5,r24
  81. 79 .L4:
  82. 80 0068 7A01 movw r14,r20
  83. 81 006a F1E0 ldi r31,1
  84. 82 006c EF1A sub r14,r31
  85. 83 006e F108 sbc r15,__zero_reg__
  86. 84 .L5:
  87. 85 0070 8FEF ldi r24,-1
  88. 86 0072 E816 cp r14,r24
  89. 87 0074 F806 cpc r15,r24
  90. 88 0076 01F0 breq .L10
  91. 89 0078 9C84 ldd r9,Y+12
  92. 90 007a F601 movw r30,r12
  93. 91 007c 8081 ld r24,Z
  94. 92 007e 9181 ldd r25,Z+1
  95. 93 0080 0E94 0000 call At45dNodeLock
  96. 94 0084 8C01 movw r16,r24
  97. 95 0086 892B or r24,r25
  98. 96 0088 01F4 brne .L6
  99. 97 008a 9701 movw r18,r14
  100. 98 008c 2A0D add r18,r10
  101. 99 008e 3B1D adc r19,r11
  102. 100 0090 C901 movw r24,r18
  103. 101 0092 A0E0 ldi r26,0
  104. 102 0094 B0E0 ldi r27,0
  105. 103 0096 9C01 movw r18,r24
  106. 104 0098 AD01 movw r20,r26
  107. 105 009a 00C0 rjmp 2f
  108. 106 1:
  109. 107 009c 220F lsl r18
  110. 108 009e 331F rol r19
  111. 109 00a0 441F rol r20
  112. 110 00a2 551F rol r21
  113. 111 2:
  114. 112 00a4 9A94 dec r9
  115. 113 00a6 02F4 brpl 1b
  116. 114 00a8 04E0 ldi r16,lo8(4)
  117. GAS LISTING /tmp/cc60iCvq.s page 3
  118. 115 00aa 61E8 ldi r22,lo8(-127)
  119. 116 00ac F601 movw r30,r12
  120. 117 00ae 8081 ld r24,Z
  121. 118 00b0 9181 ldd r25,Z+1
  122. 119 00b2 0E94 0000 call At45dNodeCommand
  123. 120 00b6 8C01 movw r16,r24
  124. 121 00b8 892B or r24,r25
  125. 122 00ba 01F4 brne .L7
  126. 123 00bc 20E0 ldi r18,0
  127. 124 00be 30E0 ldi r19,0
  128. 125 00c0 48EE ldi r20,lo8(-24)
  129. 126 00c2 53E0 ldi r21,lo8(3)
  130. 127 00c4 60E0 ldi r22,0
  131. 128 00c6 70E0 ldi r23,0
  132. 129 00c8 F601 movw r30,r12
  133. 130 00ca 8081 ld r24,Z
  134. 131 00cc 9181 ldd r25,Z+1
  135. 132 00ce 0E94 0000 call At45dNodeWaitReady
  136. 133 .L7:
  137. 134 00d2 F601 movw r30,r12
  138. 135 00d4 8081 ld r24,Z
  139. 136 00d6 9181 ldd r25,Z+1
  140. 137 00d8 0E94 0000 call At45dNodeUnlock
  141. 138 00dc F1E0 ldi r31,1
  142. 139 00de EF1A sub r14,r31
  143. 140 00e0 F108 sbc r15,__zero_reg__
  144. 141 00e2 0115 cp r16,__zero_reg__
  145. 142 00e4 1105 cpc r17,__zero_reg__
  146. 143 00e6 01F0 breq .L5
  147. 144 00e8 00C0 rjmp .L6
  148. 145 .L10:
  149. 146 00ea 00E0 ldi r16,0
  150. 147 00ec 10E0 ldi r17,0
  151. 148 .L6:
  152. 149 00ee C801 movw r24,r16
  153. 150 /* epilogue start */
  154. 151 00f0 DF91 pop r29
  155. 152 00f2 CF91 pop r28
  156. 153 00f4 1F91 pop r17
  157. 154 00f6 0F91 pop r16
  158. 155 00f8 FF90 pop r15
  159. 156 00fa EF90 pop r14
  160. 157 00fc DF90 pop r13
  161. 158 00fe CF90 pop r12
  162. 159 0100 BF90 pop r11
  163. 160 0102 AF90 pop r10
  164. 161 0104 9F90 pop r9
  165. 162 0106 0895 ret
  166. 163 .size SpiAt45dFlashErase, .-SpiAt45dFlashErase
  167. 164 .section .text.At45dFlashSaveUnit,"ax",@progbits
  168. 165 .type At45dFlashSaveUnit, @function
  169. 166 At45dFlashSaveUnit:
  170. 167 0000 4F92 push r4
  171. 168 0002 5F92 push r5
  172. 169 0004 6F92 push r6
  173. 170 0006 7F92 push r7
  174. 171 0008 8F92 push r8
  175. GAS LISTING /tmp/cc60iCvq.s page 4
  176. 172 000a 9F92 push r9
  177. 173 000c AF92 push r10
  178. 174 000e BF92 push r11
  179. 175 0010 CF92 push r12
  180. 176 0012 DF92 push r13
  181. 177 0014 EF92 push r14
  182. 178 0016 FF92 push r15
  183. 179 0018 0F93 push r16
  184. 180 001a 1F93 push r17
  185. 181 001c CF93 push r28
  186. 182 001e DF93 push r29
  187. 183 /* prologue: function */
  188. 184 /* frame size = 0 */
  189. 185 /* stack size = 16 */
  190. 186 .L__stack_usage = 16
  191. 187 0020 4C01 movw r8,r24
  192. 188 0022 C62F mov r28,r22
  193. 189 0024 FC01 movw r30,r24
  194. 190 0026 6280 ldd r6,Z+2
  195. 191 0028 7380 ldd r7,Z+3
  196. 192 002a 8081 ld r24,Z
  197. 193 002c 9181 ldd r25,Z+1
  198. 194 002e 0E94 0000 call At45dNodeLock
  199. 195 0032 8C01 movw r16,r24
  200. 196 0034 892B or r24,r25
  201. 197 0036 01F0 breq .+2
  202. 198 0038 00C0 rjmp .L12
  203. 199 003a 0C2E mov __tmp_reg__,r28
  204. 200 003c 000C lsl r0
  205. 201 003e DD0B sbc r29,r29
  206. 202 0040 F401 movw r30,r8
  207. 203 0042 A480 ldd r10,Z+4
  208. 204 0044 B580 ldd r11,Z+5
  209. 205 0046 2E01 movw r4,r28
  210. 206 0048 440C lsl r4
  211. 207 004a 551C rol r5
  212. 208 004c 460C add r4,r6
  213. 209 004e 571C adc r5,r7
  214. 210 0050 F201 movw r30,r4
  215. 211 0052 E584 ldd r14,Z+13
  216. 212 0054 F684 ldd r15,Z+14
  217. 213 0056 C12C mov r12,__zero_reg__
  218. 214 0058 D12C mov r13,__zero_reg__
  219. 215 005a 04E0 ldi r16,lo8(4)
  220. 216 005c 20E0 ldi r18,0
  221. 217 005e 30E0 ldi r19,0
  222. 218 0060 A901 movw r20,r18
  223. 219 0062 67E8 ldi r22,lo8(-121)
  224. 220 0064 F401 movw r30,r8
  225. 221 0066 8081 ld r24,Z
  226. 222 0068 9181 ldd r25,Z+1
  227. 223 006a 0E94 0000 call At45dNodeTransfer
  228. 224 006e 8C01 movw r16,r24
  229. 225 0070 892B or r24,r25
  230. 226 0072 01F4 brne .L12
  231. 227 0074 F201 movw r30,r4
  232. 228 0076 2081 ld r18,Z
  233. GAS LISTING /tmp/cc60iCvq.s page 5
  234. 229 0078 3181 ldd r19,Z+1
  235. 230 007a C901 movw r24,r18
  236. 231 007c A0E0 ldi r26,0
  237. 232 007e B0E0 ldi r27,0
  238. 233 0080 9C01 movw r18,r24
  239. 234 0082 AD01 movw r20,r26
  240. 235 0084 F301 movw r30,r6
  241. 236 0086 0484 ldd r0,Z+12
  242. 237 0088 00C0 rjmp 2f
  243. 238 1:
  244. 239 008a 220F lsl r18
  245. 240 008c 331F rol r19
  246. 241 008e 441F rol r20
  247. 242 0090 551F rol r21
  248. 243 2:
  249. 244 0092 0A94 dec r0
  250. 245 0094 02F4 brpl 1b
  251. 246 0096 04E0 ldi r16,lo8(4)
  252. 247 0098 69E8 ldi r22,lo8(-119)
  253. 248 009a F401 movw r30,r8
  254. 249 009c 8081 ld r24,Z
  255. 250 009e 9181 ldd r25,Z+1
  256. 251 00a0 0E94 0000 call At45dNodeCommand
  257. 252 00a4 8C01 movw r16,r24
  258. 253 00a6 892B or r24,r25
  259. 254 00a8 01F4 brne .L13
  260. 255 00aa 20E0 ldi r18,0
  261. 256 00ac 30E0 ldi r19,0
  262. 257 00ae 48EE ldi r20,lo8(-24)
  263. 258 00b0 53E0 ldi r21,lo8(3)
  264. 259 00b2 60E0 ldi r22,0
  265. 260 00b4 70E0 ldi r23,0
  266. 261 00b6 F401 movw r30,r8
  267. 262 00b8 8081 ld r24,Z
  268. 263 00ba 9181 ldd r25,Z+1
  269. 264 00bc 0E94 0000 call At45dNodeWaitReady
  270. 265 00c0 8C01 movw r16,r24
  271. 266 .L13:
  272. 267 00c2 F401 movw r30,r8
  273. 268 00c4 8081 ld r24,Z
  274. 269 00c6 9181 ldd r25,Z+1
  275. 270 00c8 0E94 0000 call At45dNodeUnlock
  276. 271 00cc 0115 cp r16,__zero_reg__
  277. 272 00ce 1105 cpc r17,__zero_reg__
  278. 273 00d0 01F4 brne .L12
  279. 274 00d2 C60D add r28,r6
  280. 275 00d4 D71D adc r29,r7
  281. 276 00d6 8C81 ldd r24,Y+4
  282. 277 00d8 8E7F andi r24,lo8(-2)
  283. 278 00da 8C83 std Y+4,r24
  284. 279 .L12:
  285. 280 00dc C801 movw r24,r16
  286. 281 /* epilogue start */
  287. 282 00de DF91 pop r29
  288. 283 00e0 CF91 pop r28
  289. 284 00e2 1F91 pop r17
  290. 285 00e4 0F91 pop r16
  291. GAS LISTING /tmp/cc60iCvq.s page 6
  292. 286 00e6 FF90 pop r15
  293. 287 00e8 EF90 pop r14
  294. 288 00ea DF90 pop r13
  295. 289 00ec CF90 pop r12
  296. 290 00ee BF90 pop r11
  297. 291 00f0 AF90 pop r10
  298. 292 00f2 9F90 pop r9
  299. 293 00f4 8F90 pop r8
  300. 294 00f6 7F90 pop r7
  301. 295 00f8 6F90 pop r6
  302. 296 00fa 5F90 pop r5
  303. 297 00fc 4F90 pop r4
  304. 298 00fe 0895 ret
  305. 299 .size At45dFlashSaveUnit, .-At45dFlashSaveUnit
  306. 300 .section .text.SpiAt45dFlashCommit,"ax",@progbits
  307. 301 .type SpiAt45dFlashCommit, @function
  308. 302 SpiAt45dFlashCommit:
  309. 303 /* prologue: function */
  310. 304 /* frame size = 0 */
  311. 305 /* stack size = 0 */
  312. 306 .L__stack_usage = 0
  313. 307 0000 DC01 movw r26,r24
  314. 308 0002 1296 adiw r26,2
  315. 309 0004 ED91 ld r30,X+
  316. 310 0006 FC91 ld r31,X
  317. 311 0008 1397 sbiw r26,2+1
  318. 312 000a 2081 ld r18,Z
  319. 313 000c 3181 ldd r19,Z+1
  320. 314 000e 6217 cp r22,r18
  321. 315 0010 7307 cpc r23,r19
  322. 316 0012 01F0 breq .L18
  323. 317 0014 2281 ldd r18,Z+2
  324. 318 0016 3381 ldd r19,Z+3
  325. 319 0018 6217 cp r22,r18
  326. 320 001a 7307 cpc r23,r19
  327. 321 001c 01F4 brne .L20
  328. 322 001e 61E0 ldi r22,lo8(1)
  329. 323 0020 00C0 rjmp .L15
  330. 324 .L18:
  331. 325 0022 60E0 ldi r22,0
  332. 326 .L15:
  333. 327 0024 E60F add r30,r22
  334. 328 0026 F11D adc r31,__zero_reg__
  335. 329 0028 2481 ldd r18,Z+4
  336. 330 002a 20FD sbrc r18,0
  337. 331 002c 0C94 0000 jmp At45dFlashSaveUnit
  338. 332 .L20:
  339. 333 0030 80E0 ldi r24,0
  340. 334 0032 90E0 ldi r25,0
  341. 335 0034 0895 ret
  342. 336 .size SpiAt45dFlashCommit, .-SpiAt45dFlashCommit
  343. 337 .section .text.SpiAt45dFlashExit,"ax",@progbits
  344. 338 .type SpiAt45dFlashExit, @function
  345. 339 SpiAt45dFlashExit:
  346. 340 0000 0F93 push r16
  347. 341 0002 1F93 push r17
  348. 342 0004 CF93 push r28
  349. GAS LISTING /tmp/cc60iCvq.s page 7
  350. 343 0006 DF93 push r29
  351. 344 /* prologue: function */
  352. 345 /* frame size = 0 */
  353. 346 /* stack size = 4 */
  354. 347 .L__stack_usage = 4
  355. 348 0008 EC01 movw r28,r24
  356. 349 000a 0A81 ldd r16,Y+2
  357. 350 000c 1B81 ldd r17,Y+3
  358. 351 000e F801 movw r30,r16
  359. 352 0010 8585 ldd r24,Z+13
  360. 353 0012 9685 ldd r25,Z+14
  361. 354 0014 0E94 0000 call free
  362. 355 0018 F801 movw r30,r16
  363. 356 001a 8785 ldd r24,Z+15
  364. 357 001c 9089 ldd r25,Z+16
  365. 358 001e 0E94 0000 call free
  366. 359 0022 8A81 ldd r24,Y+2
  367. 360 0024 9B81 ldd r25,Y+3
  368. 361 /* epilogue start */
  369. 362 0026 DF91 pop r29
  370. 363 0028 CF91 pop r28
  371. 364 002a 1F91 pop r17
  372. 365 002c 0F91 pop r16
  373. 366 002e 0C94 0000 jmp free
  374. 367 .size SpiAt45dFlashExit, .-SpiAt45dFlashExit
  375. 368 .section .text.SpiAt45dFlashInit,"ax",@progbits
  376. 369 .type SpiAt45dFlashInit, @function
  377. 370 SpiAt45dFlashInit:
  378. 371 0000 AF92 push r10
  379. 372 0002 BF92 push r11
  380. 373 0004 CF92 push r12
  381. 374 0006 DF92 push r13
  382. 375 0008 EF92 push r14
  383. 376 000a FF92 push r15
  384. 377 000c 0F93 push r16
  385. 378 000e 1F93 push r17
  386. 379 0010 CF93 push r28
  387. 380 0012 DF93 push r29
  388. 381 /* prologue: function */
  389. 382 /* frame size = 0 */
  390. 383 /* stack size = 10 */
  391. 384 .L__stack_usage = 10
  392. 385 0014 8C01 movw r16,r24
  393. 386 0016 FC01 movw r30,r24
  394. 387 0018 8081 ld r24,Z
  395. 388 001a 9181 ldd r25,Z+1
  396. 389 001c 0E94 0000 call At45dNodeProbe
  397. 390 0020 7C01 movw r14,r24
  398. 391 0022 892B or r24,r25
  399. 392 0024 01F4 brne .L23
  400. 393 .L25:
  401. 394 0026 8FEF ldi r24,lo8(-1)
  402. 395 0028 9FEF ldi r25,lo8(-1)
  403. 396 002a 00C0 rjmp .L24
  404. 397 .L23:
  405. 398 002c 61E1 ldi r22,lo8(17)
  406. 399 002e 70E0 ldi r23,0
  407. GAS LISTING /tmp/cc60iCvq.s page 8
  408. 400 0030 81E0 ldi r24,lo8(1)
  409. 401 0032 90E0 ldi r25,0
  410. 402 0034 0E94 0000 call calloc
  411. 403 0038 EC01 movw r28,r24
  412. 404 003a 892B or r24,r25
  413. 405 003c 01F0 breq .L25
  414. 406 003e F701 movw r30,r14
  415. 407 0040 8081 ld r24,Z
  416. 408 0042 8C87 std Y+12,r24
  417. 409 0044 AA24 clr r10
  418. 410 0046 AA94 dec r10
  419. 411 0048 BA2C mov r11,r10
  420. 412 004a B982 std Y+1,r11
  421. 413 004c A882 st Y,r10
  422. 414 004e C580 ldd r12,Z+5
  423. 415 0050 D680 ldd r13,Z+6
  424. 416 0052 C601 movw r24,r12
  425. 417 0054 0E94 0000 call malloc
  426. 418 0058 9E87 std Y+14,r25
  427. 419 005a 8D87 std Y+13,r24
  428. 420 005c BB82 std Y+3,r11
  429. 421 005e AA82 std Y+2,r10
  430. 422 0060 C601 movw r24,r12
  431. 423 0062 0E94 0000 call malloc
  432. 424 0066 988B std Y+16,r25
  433. 425 0068 8F87 std Y+15,r24
  434. 426 006a F801 movw r30,r16
  435. 427 006c D383 std Z+3,r29
  436. 428 006e C283 std Z+2,r28
  437. 429 0070 F701 movw r30,r14
  438. 430 0072 8181 ldd r24,Z+1
  439. 431 0074 9281 ldd r25,Z+2
  440. 432 0076 F801 movw r30,r16
  441. 433 0078 9783 std Z+7,r25
  442. 434 007a 8683 std Z+6,r24
  443. 435 007c D582 std Z+5,r13
  444. 436 007e C482 std Z+4,r12
  445. 437 0080 80E0 ldi r24,0
  446. 438 0082 90E0 ldi r25,0
  447. 439 .L24:
  448. 440 /* epilogue start */
  449. 441 0084 DF91 pop r29
  450. 442 0086 CF91 pop r28
  451. 443 0088 1F91 pop r17
  452. 444 008a 0F91 pop r16
  453. 445 008c FF90 pop r15
  454. 446 008e EF90 pop r14
  455. 447 0090 DF90 pop r13
  456. 448 0092 CF90 pop r12
  457. 449 0094 BF90 pop r11
  458. 450 0096 AF90 pop r10
  459. 451 0098 0895 ret
  460. 452 .size SpiAt45dFlashInit, .-SpiAt45dFlashInit
  461. 453 .section .text.At45dFlashLoadUnit,"ax",@progbits
  462. 454 .type At45dFlashLoadUnit, @function
  463. 455 At45dFlashLoadUnit:
  464. 456 0000 3F92 push r3
  465. GAS LISTING /tmp/cc60iCvq.s page 9
  466. 457 0002 4F92 push r4
  467. 458 0004 5F92 push r5
  468. 459 0006 6F92 push r6
  469. 460 0008 7F92 push r7
  470. 461 000a 8F92 push r8
  471. 462 000c 9F92 push r9
  472. 463 000e AF92 push r10
  473. 464 0010 BF92 push r11
  474. 465 0012 CF92 push r12
  475. 466 0014 DF92 push r13
  476. 467 0016 EF92 push r14
  477. 468 0018 FF92 push r15
  478. 469 001a 0F93 push r16
  479. 470 001c 1F93 push r17
  480. 471 001e CF93 push r28
  481. 472 0020 DF93 push r29
  482. 473 0022 00D0 rcall .
  483. 474 0024 1F92 push __zero_reg__
  484. 475 0026 CDB7 in r28,__SP_L__
  485. 476 0028 DEB7 in r29,__SP_H__
  486. 477 /* prologue: function */
  487. 478 /* frame size = 4 */
  488. 479 /* stack size = 21 */
  489. 480 .L__stack_usage = 21
  490. 481 002a 4C01 movw r8,r24
  491. 482 002c 3B01 movw r6,r22
  492. 483 002e 342E mov r3,r20
  493. 484 0030 FC01 movw r30,r24
  494. 485 0032 E280 ldd r14,Z+2
  495. 486 0034 F380 ldd r15,Z+3
  496. 487 0036 6701 movw r12,r14
  497. 488 0038 FAE0 ldi r31,10
  498. 489 003a CF0E add r12,r31
  499. 490 003c D11C adc r13,__zero_reg__
  500. 491 .L49:
  501. 492 003e F701 movw r30,r14
  502. 493 0040 8081 ld r24,Z
  503. 494 0042 9181 ldd r25,Z+1
  504. 495 0044 6816 cp r6,r24
  505. 496 0046 7906 cpc r7,r25
  506. 497 0048 01F0 breq .L51
  507. 498 004a 8281 ldd r24,Z+2
  508. 499 004c 9381 ldd r25,Z+3
  509. 500 004e 6816 cp r6,r24
  510. 501 0050 7906 cpc r7,r25
  511. 502 0052 01F4 brne .L31
  512. 503 0054 81E0 ldi r24,lo8(1)
  513. 504 0056 90E0 ldi r25,0
  514. 505 0058 11E0 ldi r17,lo8(1)
  515. 506 005a 00C0 rjmp .L30
  516. 507 .L51:
  517. 508 005c 80E0 ldi r24,0
  518. 509 005e 90E0 ldi r25,0
  519. 510 0060 10E0 ldi r17,0
  520. 511 .L30:
  521. 512 0062 3320 tst r3
  522. 513 0064 01F4 brne .+2
  523. GAS LISTING /tmp/cc60iCvq.s page 10
  524. 514 0066 00C0 rjmp .L52
  525. 515 0068 FC01 movw r30,r24
  526. 516 006a EE0F lsl r30
  527. 517 006c FF1F rol r31
  528. 518 006e EE0D add r30,r14
  529. 519 0070 FF1D adc r31,r15
  530. 520 0072 2681 ldd r18,Z+6
  531. 521 0074 3781 ldd r19,Z+7
  532. 522 0076 2F5F subi r18,-1
  533. 523 0078 3F4F sbci r19,-1
  534. 524 007a 3783 std Z+7,r19
  535. 525 007c 2683 std Z+6,r18
  536. 526 007e F701 movw r30,r14
  537. 527 0080 E80F add r30,r24
  538. 528 0082 F91F adc r31,r25
  539. 529 0084 8481 ldd r24,Z+4
  540. 530 0086 8160 ori r24,lo8(1)
  541. 531 0088 8483 std Z+4,r24
  542. 532 008a 00C0 rjmp .L52
  543. 533 .L31:
  544. 534 008c 8091 0000 lds r24,bnxt.2710
  545. 535 0090 182F mov r17,r24
  546. 536 .L33:
  547. 537 0092 212F mov r18,r17
  548. 538 0094 012E mov __tmp_reg__,r17
  549. 539 0096 000C lsl r0
  550. 540 0098 330B sbc r19,r19
  551. 541 009a 3C83 std Y+4,r19
  552. 542 009c 2B83 std Y+3,r18
  553. 543 009e F901 movw r30,r18
  554. 544 00a0 3396 adiw r30,3
  555. 545 00a2 EE0F lsl r30
  556. 546 00a4 FF1F rol r31
  557. 547 00a6 EE0D add r30,r14
  558. 548 00a8 FF1D adc r31,r15
  559. 549 00aa 2081 ld r18,Z
  560. 550 00ac 3181 ldd r19,Z+1
  561. 551 00ae 232B or r18,r19
  562. 552 00b0 01F4 brne .L34
  563. 553 00b2 4B80 ldd r4,Y+3
  564. 554 00b4 5C80 ldd r5,Y+4
  565. 555 00b6 4E0C add r4,r14
  566. 556 00b8 5F1C adc r5,r15
  567. 557 00ba F201 movw r30,r4
  568. 558 00bc 9481 ldd r25,Z+4
  569. 559 00be 90FF sbrs r25,0
  570. 560 00c0 00C0 rjmp .L35
  571. 561 .L34:
  572. 562 00c2 1F5F subi r17,lo8(-(1))
  573. 563 00c4 1230 cpi r17,lo8(2)
  574. 564 00c6 04F0 brlt .+2
  575. 565 00c8 00C0 rjmp .L36
  576. 566 00ca 8117 cp r24,r17
  577. 567 00cc 01F0 breq .L37
  578. 568 00ce 17FF sbrs r17,7
  579. 569 00d0 00C0 rjmp .L33
  580. 570 00d2 00C0 rjmp .L37
  581. GAS LISTING /tmp/cc60iCvq.s page 11
  582. 571 .L35:
  583. 572 00d4 17FF sbrs r17,7
  584. 573 00d6 00C0 rjmp .L39
  585. 574 .L37:
  586. 575 00d8 F701 movw r30,r14
  587. 576 00da 8681 ldd r24,Z+6
  588. 577 00dc 9781 ldd r25,Z+7
  589. 578 00de 892B or r24,r25
  590. 579 00e0 01F4 brne .L40
  591. 580 00e2 8481 ldd r24,Z+4
  592. 581 00e4 80FD sbrc r24,0
  593. 582 00e6 00C0 rjmp .L53
  594. 583 .L40:
  595. 584 00e8 F701 movw r30,r14
  596. 585 00ea 8085 ldd r24,Z+8
  597. 586 00ec 9185 ldd r25,Z+9
  598. 587 00ee 892B or r24,r25
  599. 588 00f0 01F0 breq .+2
  600. 589 00f2 00C0 rjmp .L42
  601. 590 00f4 8581 ldd r24,Z+5
  602. 591 00f6 80FF sbrs r24,0
  603. 592 00f8 00C0 rjmp .L42
  604. 593 00fa 61E0 ldi r22,lo8(1)
  605. 594 00fc 00C0 rjmp .L41
  606. 595 .L39:
  607. 596 00fe 5301 movw r10,r6
  608. 597 0100 C12C mov r12,__zero_reg__
  609. 598 0102 D12C mov r13,__zero_reg__
  610. 599 0104 F401 movw r30,r8
  611. 600 0106 8081 ld r24,Z
  612. 601 0108 9181 ldd r25,Z+1
  613. 602 010a 0E94 0000 call At45dNodeLock
  614. 603 010e 892B or r24,r25
  615. 604 0110 01F0 breq .+2
  616. 605 0112 00C0 rjmp .L68
  617. 606 0114 A601 movw r20,r12
  618. 607 0116 9501 movw r18,r10
  619. 608 0118 F701 movw r30,r14
  620. 609 011a 0484 ldd r0,Z+12
  621. 610 011c 00C0 rjmp 2f
  622. 611 1:
  623. 612 011e 220F lsl r18
  624. 613 0120 331F rol r19
  625. 614 0122 441F rol r20
  626. 615 0124 551F rol r21
  627. 616 2:
  628. 617 0126 0A94 dec r0
  629. 618 0128 02F4 brpl 1b
  630. 619 012a 6B81 ldd r22,Y+3
  631. 620 012c 7C81 ldd r23,Y+4
  632. 621 012e 660F lsl r22
  633. 622 0130 771F rol r23
  634. 623 0132 3320 tst r3
  635. 624 0134 01F0 breq .L44
  636. 625 0136 E60F add r30,r22
  637. 626 0138 F71F adc r31,r23
  638. 627 013a 8681 ldd r24,Z+6
  639. GAS LISTING /tmp/cc60iCvq.s page 12
  640. 628 013c 9781 ldd r25,Z+7
  641. 629 013e 0196 adiw r24,1
  642. 630 0140 9783 std Z+7,r25
  643. 631 0142 8683 std Z+6,r24
  644. 632 .L44:
  645. 633 0144 F401 movw r30,r8
  646. 634 0146 A480 ldd r10,Z+4
  647. 635 0148 B580 ldd r11,Z+5
  648. 636 014a C701 movw r24,r14
  649. 637 014c 860F add r24,r22
  650. 638 014e 971F adc r25,r23
  651. 639 0150 9A83 std Y+2,r25
  652. 640 0152 8983 std Y+1,r24
  653. 641 0154 FC01 movw r30,r24
  654. 642 0156 C584 ldd r12,Z+13
  655. 643 0158 D684 ldd r13,Z+14
  656. 644 015a E12C mov r14,__zero_reg__
  657. 645 015c F12C mov r15,__zero_reg__
  658. 646 015e 08E0 ldi r16,lo8(8)
  659. 647 0160 62ED ldi r22,lo8(-46)
  660. 648 0162 F401 movw r30,r8
  661. 649 0164 8081 ld r24,Z
  662. 650 0166 9181 ldd r25,Z+1
  663. 651 0168 0E94 0000 call At45dNodeTransfer
  664. 652 016c 7C01 movw r14,r24
  665. 653 016e F401 movw r30,r8
  666. 654 0170 8081 ld r24,Z
  667. 655 0172 9181 ldd r25,Z+1
  668. 656 0174 0E94 0000 call At45dNodeUnlock
  669. 657 0178 EF28 or r14,r15
  670. 658 017a 01F4 brne .L45
  671. 659 017c E981 ldd r30,Y+1
  672. 660 017e FA81 ldd r31,Y+2
  673. 661 0180 7182 std Z+1,r7
  674. 662 0182 6082 st Z,r6
  675. 663 0184 3320 tst r3
  676. 664 0186 01F0 breq .L46
  677. 665 0188 F201 movw r30,r4
  678. 666 018a 8481 ldd r24,Z+4
  679. 667 018c 8160 ori r24,lo8(1)
  680. 668 018e 8483 std Z+4,r24
  681. 669 .L46:
  682. 670 0190 8091 0000 lds r24,bnxt.2710
  683. 671 0194 8F5F subi r24,lo8(-(1))
  684. 672 0196 8230 cpi r24,lo8(2)
  685. 673 0198 04F4 brge .L47
  686. 674 019a 8093 0000 sts bnxt.2710,r24
  687. 675 019e 00C0 rjmp .L52
  688. 676 .L47:
  689. 677 01a0 1092 0000 sts bnxt.2710,__zero_reg__
  690. 678 01a4 00C0 rjmp .L52
  691. 679 .L45:
  692. 680 01a6 3320 tst r3
  693. 681 01a8 01F0 breq .L68
  694. 682 01aa F401 movw r30,r8
  695. 683 01ac 8281 ldd r24,Z+2
  696. 684 01ae 9381 ldd r25,Z+3
  697. GAS LISTING /tmp/cc60iCvq.s page 13
  698. 685 01b0 EB81 ldd r30,Y+3
  699. 686 01b2 FC81 ldd r31,Y+4
  700. 687 01b4 EE0F lsl r30
  701. 688 01b6 FF1F rol r31
  702. 689 01b8 E80F add r30,r24
  703. 690 01ba F91F adc r31,r25
  704. 691 01bc 2681 ldd r18,Z+6
  705. 692 01be 3781 ldd r19,Z+7
  706. 693 01c0 2150 subi r18,1
  707. 694 01c2 3109 sbc r19,__zero_reg__
  708. 695 01c4 3783 std Z+7,r19
  709. 696 01c6 2683 std Z+6,r18
  710. 697 01c8 0A96 adiw r24,10
  711. 698 01ca 0E94 0000 call NutEventPost
  712. 699 .L68:
  713. 700 01ce 8FEF ldi r24,lo8(-1)
  714. 701 01d0 00C0 rjmp .L67
  715. 702 .L53:
  716. 703 01d2 60E0 ldi r22,0
  717. 704 .L41:
  718. 705 01d4 C401 movw r24,r8
  719. 706 01d6 0E94 0000 call At45dFlashSaveUnit
  720. 707 01da 892B or r24,r25
  721. 708 01dc 01F4 brne .+2
  722. 709 01de 00C0 rjmp .L49
  723. 710 01e0 00C0 rjmp .L68
  724. 711 .L52:
  725. 712 01e2 812F mov r24,r17
  726. 713 01e4 00C0 rjmp .L67
  727. 714 .L42:
  728. 715 01e6 40E0 ldi r20,0
  729. 716 01e8 50E0 ldi r21,0
  730. 717 01ea BA01 movw r22,r20
  731. 718 01ec C601 movw r24,r12
  732. 719 01ee 0E94 0000 call NutEventWait
  733. 720 01f2 00C0 rjmp .L49
  734. 721 .L36:
  735. 722 01f4 8823 tst r24
  736. 723 01f6 01F4 brne .+2
  737. 724 01f8 00C0 rjmp .L37
  738. 725 01fa 10E0 ldi r17,0
  739. 726 01fc 00C0 rjmp .L33
  740. 727 .L67:
  741. 728 /* epilogue start */
  742. 729 01fe 0F90 pop __tmp_reg__
  743. 730 0200 0F90 pop __tmp_reg__
  744. 731 0202 0F90 pop __tmp_reg__
  745. 732 0204 0F90 pop __tmp_reg__
  746. 733 0206 DF91 pop r29
  747. 734 0208 CF91 pop r28
  748. 735 020a 1F91 pop r17
  749. 736 020c 0F91 pop r16
  750. 737 020e FF90 pop r15
  751. 738 0210 EF90 pop r14
  752. 739 0212 DF90 pop r13
  753. 740 0214 CF90 pop r12
  754. 741 0216 BF90 pop r11
  755. GAS LISTING /tmp/cc60iCvq.s page 14
  756. 742 0218 AF90 pop r10
  757. 743 021a 9F90 pop r9
  758. 744 021c 8F90 pop r8
  759. 745 021e 7F90 pop r7
  760. 746 0220 6F90 pop r6
  761. 747 0222 5F90 pop r5
  762. 748 0224 4F90 pop r4
  763. 749 0226 3F90 pop r3
  764. 750 0228 0895 ret
  765. 751 .size At45dFlashLoadUnit, .-At45dFlashLoadUnit
  766. 752 .section .text.SpiAt45dFlashUsed,"ax",@progbits
  767. 753 .type SpiAt45dFlashUsed, @function
  768. 754 SpiAt45dFlashUsed:
  769. 755 0000 EF92 push r14
  770. 756 0002 FF92 push r15
  771. 757 0004 0F93 push r16
  772. 758 0006 1F93 push r17
  773. 759 0008 CF93 push r28
  774. 760 000a DF93 push r29
  775. 761 /* prologue: function */
  776. 762 /* frame size = 0 */
  777. 763 /* stack size = 6 */
  778. 764 .L__stack_usage = 6
  779. 765 000c EA01 movw r28,r20
  780. 766 000e FC01 movw r30,r24
  781. 767 0010 E280 ldd r14,Z+2
  782. 768 0012 F380 ldd r15,Z+3
  783. 769 0014 0481 ldd r16,Z+4
  784. 770 0016 1581 ldd r17,Z+5
  785. 771 0018 57FF sbrs r21,7
  786. 772 001a 00C0 rjmp .L70
  787. 773 001c 040F add r16,r20
  788. 774 001e 151F adc r17,r21
  789. 775 0020 C0E0 ldi r28,0
  790. 776 0022 D0E0 ldi r29,0
  791. 777 0024 00C0 rjmp .L71
  792. 778 .L70:
  793. 779 0026 041B sub r16,r20
  794. 780 0028 150B sbc r17,r21
  795. 781 .L71:
  796. 782 002a 40E0 ldi r20,0
  797. 783 002c 0E94 0000 call At45dFlashLoadUnit
  798. 784 0030 87FD sbrc r24,7
  799. 785 0032 00C0 rjmp .L76
  800. 786 0034 0115 cp r16,__zero_reg__
  801. 787 0036 1105 cpc r17,__zero_reg__
  802. 788 0038 01F0 breq .L77
  803. 789 003a E82F mov r30,r24
  804. 790 003c EE0F lsl r30
  805. 791 003e FF0B sbc r31,r31
  806. 792 0040 EE0D add r30,r14
  807. 793 0042 FF1D adc r31,r15
  808. 794 0044 8585 ldd r24,Z+13
  809. 795 0046 9685 ldd r25,Z+14
  810. 796 0048 C80F add r28,r24
  811. 797 004a D91F adc r29,r25
  812. 798 004c 20E0 ldi r18,0
  813. GAS LISTING /tmp/cc60iCvq.s page 15
  814. 799 004e 30E0 ldi r19,0
  815. 800 0050 80E0 ldi r24,0
  816. 801 0052 90E0 ldi r25,0
  817. 802 .L73:
  818. 803 0054 2017 cp r18,r16
  819. 804 0056 3107 cpc r19,r17
  820. 805 0058 04F4 brge .L72
  821. 806 005a 4991 ld r20,Y+
  822. 807 005c 2F5F subi r18,-1
  823. 808 005e 3F4F sbci r19,-1
  824. 809 0060 4F3F cpi r20,lo8(-1)
  825. 810 0062 01F0 breq .L73
  826. 811 0064 C901 movw r24,r18
  827. 812 0066 00C0 rjmp .L73
  828. 813 .L76:
  829. 814 0068 8FEF ldi r24,lo8(-1)
  830. 815 006a 9FEF ldi r25,lo8(-1)
  831. 816 006c 00C0 rjmp .L72
  832. 817 .L77:
  833. 818 006e 80E0 ldi r24,0
  834. 819 0070 90E0 ldi r25,0
  835. 820 .L72:
  836. 821 /* epilogue start */
  837. 822 0072 DF91 pop r29
  838. 823 0074 CF91 pop r28
  839. 824 0076 1F91 pop r17
  840. 825 0078 0F91 pop r16
  841. 826 007a FF90 pop r15
  842. 827 007c EF90 pop r14
  843. 828 007e 0895 ret
  844. 829 .size SpiAt45dFlashUsed, .-SpiAt45dFlashUsed
  845. 830 .section .text.SpiAt45dFlashRead,"ax",@progbits
  846. 831 .type SpiAt45dFlashRead, @function
  847. 832 SpiAt45dFlashRead:
  848. 833 0000 CF92 push r12
  849. 834 0002 DF92 push r13
  850. 835 0004 EF92 push r14
  851. 836 0006 FF92 push r15
  852. 837 0008 0F93 push r16
  853. 838 000a 1F93 push r17
  854. 839 000c CF93 push r28
  855. 840 000e DF93 push r29
  856. 841 /* prologue: function */
  857. 842 /* frame size = 0 */
  858. 843 /* stack size = 8 */
  859. 844 .L__stack_usage = 8
  860. 845 0010 EA01 movw r28,r20
  861. 846 0012 7901 movw r14,r18
  862. 847 0014 0115 cp r16,__zero_reg__
  863. 848 0016 1105 cpc r17,__zero_reg__
  864. 849 0018 01F0 breq .L84
  865. 850 001a FC01 movw r30,r24
  866. 851 001c C280 ldd r12,Z+2
  867. 852 001e D380 ldd r13,Z+3
  868. 853 0020 57FF sbrs r21,7
  869. 854 0022 00C0 rjmp .L83
  870. 855 0024 2481 ldd r18,Z+4
  871. GAS LISTING /tmp/cc60iCvq.s page 16
  872. 856 0026 3581 ldd r19,Z+5
  873. 857 0028 C20F add r28,r18
  874. 858 002a D31F adc r29,r19
  875. 859 .L83:
  876. 860 002c 40E0 ldi r20,0
  877. 861 002e 0E94 0000 call At45dFlashLoadUnit
  878. 862 0032 87FD sbrc r24,7
  879. 863 0034 00C0 rjmp .L85
  880. 864 0036 E82F mov r30,r24
  881. 865 0038 EE0F lsl r30
  882. 866 003a FF0B sbc r31,r31
  883. 867 003c EC0D add r30,r12
  884. 868 003e FD1D adc r31,r13
  885. 869 0040 6585 ldd r22,Z+13
  886. 870 0042 7685 ldd r23,Z+14
  887. 871 0044 6C0F add r22,r28
  888. 872 0046 7D1F adc r23,r29
  889. 873 0048 A801 movw r20,r16
  890. 874 004a C701 movw r24,r14
  891. 875 004c 0E94 0000 call memcpy
  892. 876 .L84:
  893. 877 0050 80E0 ldi r24,0
  894. 878 0052 90E0 ldi r25,0
  895. 879 0054 00C0 rjmp .L82
  896. 880 .L85:
  897. 881 0056 8FEF ldi r24,lo8(-1)
  898. 882 0058 9FEF ldi r25,lo8(-1)
  899. 883 .L82:
  900. 884 /* epilogue start */
  901. 885 005a DF91 pop r29
  902. 886 005c CF91 pop r28
  903. 887 005e 1F91 pop r17
  904. 888 0060 0F91 pop r16
  905. 889 0062 FF90 pop r15
  906. 890 0064 EF90 pop r14
  907. 891 0066 DF90 pop r13
  908. 892 0068 CF90 pop r12
  909. 893 006a 0895 ret
  910. 894 .size SpiAt45dFlashRead, .-SpiAt45dFlashRead
  911. 895 .section .text.SpiAt45dFlashCompare,"ax",@progbits
  912. 896 .type SpiAt45dFlashCompare, @function
  913. 897 SpiAt45dFlashCompare:
  914. 898 0000 CF92 push r12
  915. 899 0002 DF92 push r13
  916. 900 0004 EF92 push r14
  917. 901 0006 FF92 push r15
  918. 902 0008 0F93 push r16
  919. 903 000a 1F93 push r17
  920. 904 000c CF93 push r28
  921. 905 000e DF93 push r29
  922. 906 /* prologue: function */
  923. 907 /* frame size = 0 */
  924. 908 /* stack size = 8 */
  925. 909 .L__stack_usage = 8
  926. 910 0010 EA01 movw r28,r20
  927. 911 0012 7901 movw r14,r18
  928. 912 0014 0115 cp r16,__zero_reg__
  929. GAS LISTING /tmp/cc60iCvq.s page 17
  930. 913 0016 1105 cpc r17,__zero_reg__
  931. 914 0018 01F4 brne .L87
  932. 915 .L90:
  933. 916 001a 80E0 ldi r24,0
  934. 917 001c 90E0 ldi r25,0
  935. 918 001e 00C0 rjmp .L88
  936. 919 .L87:
  937. 920 0020 FC01 movw r30,r24
  938. 921 0022 C280 ldd r12,Z+2
  939. 922 0024 D380 ldd r13,Z+3
  940. 923 0026 57FF sbrs r21,7
  941. 924 0028 00C0 rjmp .L89
  942. 925 002a 2481 ldd r18,Z+4
  943. 926 002c 3581 ldd r19,Z+5
  944. 927 002e C20F add r28,r18
  945. 928 0030 D31F adc r29,r19
  946. 929 .L89:
  947. 930 0032 40E0 ldi r20,0
  948. 931 0034 0E94 0000 call At45dFlashLoadUnit
  949. 932 0038 87FD sbrc r24,7
  950. 933 003a 00C0 rjmp .L91
  951. 934 003c E82F mov r30,r24
  952. 935 003e EE0F lsl r30
  953. 936 0040 FF0B sbc r31,r31
  954. 937 0042 EC0D add r30,r12
  955. 938 0044 FD1D adc r31,r13
  956. 939 0046 8585 ldd r24,Z+13
  957. 940 0048 9685 ldd r25,Z+14
  958. 941 004a A801 movw r20,r16
  959. 942 004c B701 movw r22,r14
  960. 943 004e 8C0F add r24,r28
  961. 944 0050 9D1F adc r25,r29
  962. 945 0052 0E94 0000 call memcmp
  963. 946 0056 892B or r24,r25
  964. 947 0058 01F0 breq .L90
  965. 948 .L91:
  966. 949 005a 8FEF ldi r24,lo8(-1)
  967. 950 005c 9FEF ldi r25,lo8(-1)
  968. 951 .L88:
  969. 952 /* epilogue start */
  970. 953 005e DF91 pop r29
  971. 954 0060 CF91 pop r28
  972. 955 0062 1F91 pop r17
  973. 956 0064 0F91 pop r16
  974. 957 0066 FF90 pop r15
  975. 958 0068 EF90 pop r14
  976. 959 006a DF90 pop r13
  977. 960 006c CF90 pop r12
  978. 961 006e 0895 ret
  979. 962 .size SpiAt45dFlashCompare, .-SpiAt45dFlashCompare
  980. 963 .section .text.SpiAt45dFlashWrite,"ax",@progbits
  981. 964 .type SpiAt45dFlashWrite, @function
  982. 965 SpiAt45dFlashWrite:
  983. 966 0000 8F92 push r8
  984. 967 0002 9F92 push r9
  985. 968 0004 AF92 push r10
  986. 969 0006 BF92 push r11
  987. GAS LISTING /tmp/cc60iCvq.s page 18
  988. 970 0008 CF92 push r12
  989. 971 000a DF92 push r13
  990. 972 000c EF92 push r14
  991. 973 000e FF92 push r15
  992. 974 0010 0F93 push r16
  993. 975 0012 1F93 push r17
  994. 976 0014 CF93 push r28
  995. 977 0016 DF93 push r29
  996. 978 /* prologue: function */
  997. 979 /* frame size = 0 */
  998. 980 /* stack size = 12 */
  999. 981 .L__stack_usage = 12
  1000. 982 0018 7C01 movw r14,r24
  1001. 983 001a 6A01 movw r12,r20
  1002. 984 001c 4901 movw r8,r18
  1003. 985 001e 0115 cp r16,__zero_reg__
  1004. 986 0020 1105 cpc r17,__zero_reg__
  1005. 987 0022 01F0 breq .L98
  1006. 988 0024 FC01 movw r30,r24
  1007. 989 0026 A280 ldd r10,Z+2
  1008. 990 0028 B380 ldd r11,Z+3
  1009. 991 002a 57FF sbrs r21,7
  1010. 992 002c 00C0 rjmp .L97
  1011. 993 002e 8481 ldd r24,Z+4
  1012. 994 0030 9581 ldd r25,Z+5
  1013. 995 0032 C80E add r12,r24
  1014. 996 0034 D91E adc r13,r25
  1015. 997 .L97:
  1016. 998 0036 41E0 ldi r20,lo8(1)
  1017. 999 0038 C701 movw r24,r14
  1018. 1000 003a 0E94 0000 call At45dFlashLoadUnit
  1019. 1001 003e 87FD sbrc r24,7
  1020. 1002 0040 00C0 rjmp .L99
  1021. 1003 0042 C82F mov r28,r24
  1022. 1004 0044 CC0F lsl r28
  1023. 1005 0046 DD0B sbc r29,r29
  1024. 1006 0048 F501 movw r30,r10
  1025. 1007 004a EC0F add r30,r28
  1026. 1008 004c FD1F adc r31,r29
  1027. 1009 004e 8585 ldd r24,Z+13
  1028. 1010 0050 9685 ldd r25,Z+14
  1029. 1011 0052 A801 movw r20,r16
  1030. 1012 0054 B401 movw r22,r8
  1031. 1013 0056 8C0D add r24,r12
  1032. 1014 0058 9D1D adc r25,r13
  1033. 1015 005a 0E94 0000 call memcpy
  1034. 1016 005e F701 movw r30,r14
  1035. 1017 0060 8281 ldd r24,Z+2
  1036. 1018 0062 9381 ldd r25,Z+3
  1037. 1019 0064 C80F add r28,r24
  1038. 1020 0066 D91F adc r29,r25
  1039. 1021 0068 2E81 ldd r18,Y+6
  1040. 1022 006a 3F81 ldd r19,Y+7
  1041. 1023 006c 2150 subi r18,1
  1042. 1024 006e 3109 sbc r19,__zero_reg__
  1043. 1025 0070 3F83 std Y+7,r19
  1044. 1026 0072 2E83 std Y+6,r18
  1045. GAS LISTING /tmp/cc60iCvq.s page 19
  1046. 1027 0074 0A96 adiw r24,10
  1047. 1028 0076 0E94 0000 call NutEventPost
  1048. 1029 .L98:
  1049. 1030 007a 80E0 ldi r24,0
  1050. 1031 007c 90E0 ldi r25,0
  1051. 1032 007e 00C0 rjmp .L96
  1052. 1033 .L99:
  1053. 1034 0080 8FEF ldi r24,lo8(-1)
  1054. 1035 0082 9FEF ldi r25,lo8(-1)
  1055. 1036 .L96:
  1056. 1037 /* epilogue start */
  1057. 1038 0084 DF91 pop r29
  1058. 1039 0086 CF91 pop r28
  1059. 1040 0088 1F91 pop r17
  1060. 1041 008a 0F91 pop r16
  1061. 1042 008c FF90 pop r15
  1062. 1043 008e EF90 pop r14
  1063. 1044 0090 DF90 pop r13
  1064. 1045 0092 CF90 pop r12
  1065. 1046 0094 BF90 pop r11
  1066. 1047 0096 AF90 pop r10
  1067. 1048 0098 9F90 pop r9
  1068. 1049 009a 8F90 pop r8
  1069. 1050 009c 0895 ret
  1070. 1051 .size SpiAt45dFlashWrite, .-SpiAt45dFlashWrite
  1071. 1052 .section .text.SpiAt45dFlashCopy,"ax",@progbits
  1072. 1053 .type SpiAt45dFlashCopy, @function
  1073. 1054 SpiAt45dFlashCopy:
  1074. 1055 0000 EF92 push r14
  1075. 1056 0002 FF92 push r15
  1076. 1057 0004 0F93 push r16
  1077. 1058 0006 1F93 push r17
  1078. 1059 0008 CF93 push r28
  1079. 1060 000a DF93 push r29
  1080. 1061 /* prologue: function */
  1081. 1062 /* frame size = 0 */
  1082. 1063 /* stack size = 6 */
  1083. 1064 .L__stack_usage = 6
  1084. 1065 000c 8C01 movw r16,r24
  1085. 1066 000e 7A01 movw r14,r20
  1086. 1067 0010 6417 cp r22,r20
  1087. 1068 0012 7507 cpc r23,r21
  1088. 1069 0014 01F4 brne .L101
  1089. 1070 0016 41E0 ldi r20,lo8(1)
  1090. 1071 0018 0E94 0000 call At45dFlashLoadUnit
  1091. 1072 001c 87FF sbrs r24,7
  1092. 1073 001e 00C0 rjmp .L102
  1093. 1074 .L105:
  1094. 1075 0020 8FEF ldi r24,lo8(-1)
  1095. 1076 0022 9FEF ldi r25,lo8(-1)
  1096. 1077 0024 00C0 rjmp .L103
  1097. 1078 .L101:
  1098. 1079 0026 FC01 movw r30,r24
  1099. 1080 0028 C281 ldd r28,Z+2
  1100. 1081 002a D381 ldd r29,Z+3
  1101. 1082 002c 8881 ld r24,Y
  1102. 1083 002e 9981 ldd r25,Y+1
  1103. GAS LISTING /tmp/cc60iCvq.s page 20
  1104. 1084 0030 4817 cp r20,r24
  1105. 1085 0032 5907 cpc r21,r25
  1106. 1086 0034 01F4 brne .L104
  1107. 1087 0036 8E81 ldd r24,Y+6
  1108. 1088 0038 9F81 ldd r25,Y+7
  1109. 1089 003a 892B or r24,r25
  1110. 1090 003c 01F4 brne .L105
  1111. 1091 003e 8FEF ldi r24,lo8(-1)
  1112. 1092 0040 9FEF ldi r25,lo8(-1)
  1113. 1093 0042 9983 std Y+1,r25
  1114. 1094 0044 8883 st Y,r24
  1115. 1095 .L104:
  1116. 1096 0046 8A81 ldd r24,Y+2
  1117. 1097 0048 9B81 ldd r25,Y+3
  1118. 1098 004a E816 cp r14,r24
  1119. 1099 004c F906 cpc r15,r25
  1120. 1100 004e 01F4 brne .L106
  1121. 1101 0050 8885 ldd r24,Y+8
  1122. 1102 0052 9985 ldd r25,Y+9
  1123. 1103 0054 892B or r24,r25
  1124. 1104 0056 01F4 brne .L105
  1125. 1105 0058 8FEF ldi r24,lo8(-1)
  1126. 1106 005a 9FEF ldi r25,lo8(-1)
  1127. 1107 005c 9B83 std Y+3,r25
  1128. 1108 005e 8A83 std Y+2,r24
  1129. 1109 .L106:
  1130. 1110 0060 41E0 ldi r20,lo8(1)
  1131. 1111 0062 C801 movw r24,r16
  1132. 1112 0064 0E94 0000 call At45dFlashLoadUnit
  1133. 1113 0068 87FD sbrc r24,7
  1134. 1114 006a 00C0 rjmp .L105
  1135. 1115 006c 282F mov r18,r24
  1136. 1116 006e 220F lsl r18
  1137. 1117 0070 330B sbc r19,r19
  1138. 1118 0072 C20F add r28,r18
  1139. 1119 0074 D31F adc r29,r19
  1140. 1120 0076 F982 std Y+1,r15
  1141. 1121 0078 E882 st Y,r14
  1142. 1122 .L102:
  1143. 1123 007a F801 movw r30,r16
  1144. 1124 007c 4281 ldd r20,Z+2
  1145. 1125 007e 5381 ldd r21,Z+3
  1146. 1126 0080 E82F mov r30,r24
  1147. 1127 0082 EE0F lsl r30
  1148. 1128 0084 FF0B sbc r31,r31
  1149. 1129 0086 E40F add r30,r20
  1150. 1130 0088 F51F adc r31,r21
  1151. 1131 008a 2681 ldd r18,Z+6
  1152. 1132 008c 3781 ldd r19,Z+7
  1153. 1133 008e 2150 subi r18,1
  1154. 1134 0090 3109 sbc r19,__zero_reg__
  1155. 1135 0092 3783 std Z+7,r19
  1156. 1136 0094 2683 std Z+6,r18
  1157. 1137 0096 CA01 movw r24,r20
  1158. 1138 0098 0A96 adiw r24,10
  1159. 1139 009a 0E94 0000 call NutEventPost
  1160. 1140 009e 80E0 ldi r24,0
  1161. GAS LISTING /tmp/cc60iCvq.s page 21
  1162. 1141 00a0 90E0 ldi r25,0
  1163. 1142 .L103:
  1164. 1143 /* epilogue start */
  1165. 1144 00a2 DF91 pop r29
  1166. 1145 00a4 CF91 pop r28
  1167. 1146 00a6 1F91 pop r17
  1168. 1147 00a8 0F91 pop r16
  1169. 1148 00aa FF90 pop r15
  1170. 1149 00ac EF90 pop r14
  1171. 1150 00ae 0895 ret
  1172. 1151 .size SpiAt45dFlashCopy, .-SpiAt45dFlashCopy
  1173. 1152 .local bnxt.2710
  1174. 1153 .comm bnxt.2710,1,1
  1175. 1154 .global flashAt45d3
  1176. 1155 .data
  1177. 1156 .type flashAt45d3, @object
  1178. 1157 .size flashAt45d3, 32
  1179. 1158 flashAt45d3:
  1180. 1159 0000 0000 .word nodeAt45d3
  1181. 1160 0002 0000 .word 0
  1182. 1161 0004 0000 .word 0
  1183. 1162 0006 0000 .word 0
  1184. 1163 0008 0000 .word 0
  1185. 1164 000a 0100 .word 1
  1186. 1165 000c 0000 .word gs(SpiAt45dFlashInit)
  1187. 1166 000e 0000 .word gs(SpiAt45dFlashExit)
  1188. 1167 0010 0000 .word gs(SpiAt45dFlashCheck)
  1189. 1168 0012 0000 .word gs(SpiAt45dFlashRead)
  1190. 1169 0014 0000 .word gs(SpiAt45dFlashCompare)
  1191. 1170 0016 0000 .word gs(SpiAt45dFlashUsed)
  1192. 1171 0018 0000 .word gs(SpiAt45dFlashWrite)
  1193. 1172 001a 0000 .word gs(SpiAt45dFlashCopy)
  1194. 1173 001c 0000 .word gs(SpiAt45dFlashCommit)
  1195. 1174 001e 0000 .word gs(SpiAt45dFlashErase)
  1196. 1175 .global flashAt45d2
  1197. 1176 .type flashAt45d2, @object
  1198. 1177 .size flashAt45d2, 32
  1199. 1178 flashAt45d2:
  1200. 1179 0020 0000 .word nodeAt45d2
  1201. 1180 0022 0000 .word 0
  1202. 1181 0024 0000 .word 0
  1203. 1182 0026 0000 .word 0
  1204. 1183 0028 0000 .word 0
  1205. 1184 002a 0100 .word 1
  1206. 1185 002c 0000 .word gs(SpiAt45dFlashInit)
  1207. 1186 002e 0000 .word gs(SpiAt45dFlashExit)
  1208. 1187 0030 0000 .word gs(SpiAt45dFlashCheck)
  1209. 1188 0032 0000 .word gs(SpiAt45dFlashRead)
  1210. 1189 0034 0000 .word gs(SpiAt45dFlashCompare)
  1211. 1190 0036 0000 .word gs(SpiAt45dFlashUsed)
  1212. 1191 0038 0000 .word gs(SpiAt45dFlashWrite)
  1213. 1192 003a 0000 .word gs(SpiAt45dFlashCopy)
  1214. 1193 003c 0000 .word gs(SpiAt45dFlashCommit)
  1215. 1194 003e 0000 .word gs(SpiAt45dFlashErase)
  1216. 1195 .global flashAt45d1
  1217. 1196 .type flashAt45d1, @object
  1218. 1197 .size flashAt45d1, 32
  1219. GAS LISTING /tmp/cc60iCvq.s page 22
  1220. 1198 flashAt45d1:
  1221. 1199 0040 0000 .word nodeAt45d1
  1222. 1200 0042 0000 .word 0
  1223. 1201 0044 0000 .word 0
  1224. 1202 0046 0000 .word 0
  1225. 1203 0048 0000 .word 0
  1226. 1204 004a 0100 .word 1
  1227. 1205 004c 0000 .word gs(SpiAt45dFlashInit)
  1228. 1206 004e 0000 .word gs(SpiAt45dFlashExit)
  1229. 1207 0050 0000 .word gs(SpiAt45dFlashCheck)
  1230. 1208 0052 0000 .word gs(SpiAt45dFlashRead)
  1231. 1209 0054 0000 .word gs(SpiAt45dFlashCompare)
  1232. 1210 0056 0000 .word gs(SpiAt45dFlashUsed)
  1233. 1211 0058 0000 .word gs(SpiAt45dFlashWrite)
  1234. 1212 005a 0000 .word gs(SpiAt45dFlashCopy)
  1235. 1213 005c 0000 .word gs(SpiAt45dFlashCommit)
  1236. 1214 005e 0000 .word gs(SpiAt45dFlashErase)
  1237. 1215 .global flashAt45d0
  1238. 1216 .type flashAt45d0, @object
  1239. 1217 .size flashAt45d0, 32
  1240. 1218 flashAt45d0:
  1241. 1219 0060 0000 .word nodeAt45d0
  1242. 1220 0062 0000 .word 0
  1243. 1221 0064 0000 .word 0
  1244. 1222 0066 0000 .word 0
  1245. 1223 0068 0000 .word 0
  1246. 1224 006a 0100 .word 1
  1247. 1225 006c 0000 .word gs(SpiAt45dFlashInit)
  1248. 1226 006e 0000 .word gs(SpiAt45dFlashExit)
  1249. 1227 0070 0000 .word gs(SpiAt45dFlashCheck)
  1250. 1228 0072 0000 .word gs(SpiAt45dFlashRead)
  1251. 1229 0074 0000 .word gs(SpiAt45dFlashCompare)
  1252. 1230 0076 0000 .word gs(SpiAt45dFlashUsed)
  1253. 1231 0078 0000 .word gs(SpiAt45dFlashWrite)
  1254. 1232 007a 0000 .word gs(SpiAt45dFlashCopy)
  1255. 1233 007c 0000 .word gs(SpiAt45dFlashCommit)
  1256. 1234 007e 0000 .word gs(SpiAt45dFlashErase)
  1257. 1235 .ident "GCC: (GNU) 5.3.0"
  1258. 1236 .global __do_copy_data
  1259. 1237 .global __do_clear_bss
  1260. GAS LISTING /tmp/cc60iCvq.s page 23
  1261. DEFINED SYMBOLS
  1262. *ABS*:0000000000000000 spi_flash_at45d.c
  1263. /tmp/cc60iCvq.s:2 *ABS*:000000000000003e __SP_H__
  1264. /tmp/cc60iCvq.s:3 *ABS*:000000000000003d __SP_L__
  1265. /tmp/cc60iCvq.s:4 *ABS*:000000000000003f __SREG__
  1266. /tmp/cc60iCvq.s:5 *ABS*:000000000000003b __RAMPZ__
  1267. /tmp/cc60iCvq.s:6 *ABS*:0000000000000000 __tmp_reg__
  1268. /tmp/cc60iCvq.s:7 *ABS*:0000000000000001 __zero_reg__
  1269. /tmp/cc60iCvq.s:10 .text.SpiAt45dFlashCheck:0000000000000000 SpiAt45dFlashCheck
  1270. /tmp/cc60iCvq.s:21 .text.SpiAt45dFlashErase:0000000000000000 SpiAt45dFlashErase
  1271. /tmp/cc60iCvq.s:166 .text.At45dFlashSaveUnit:0000000000000000 At45dFlashSaveUnit
  1272. /tmp/cc60iCvq.s:302 .text.SpiAt45dFlashCommit:0000000000000000 SpiAt45dFlashCommit
  1273. /tmp/cc60iCvq.s:339 .text.SpiAt45dFlashExit:0000000000000000 SpiAt45dFlashExit
  1274. /tmp/cc60iCvq.s:370 .text.SpiAt45dFlashInit:0000000000000000 SpiAt45dFlashInit
  1275. /tmp/cc60iCvq.s:455 .text.At45dFlashLoadUnit:0000000000000000 At45dFlashLoadUnit
  1276. .bss:0000000000000000 bnxt.2710
  1277. /tmp/cc60iCvq.s:754 .text.SpiAt45dFlashUsed:0000000000000000 SpiAt45dFlashUsed
  1278. /tmp/cc60iCvq.s:832 .text.SpiAt45dFlashRead:0000000000000000 SpiAt45dFlashRead
  1279. /tmp/cc60iCvq.s:897 .text.SpiAt45dFlashCompare:0000000000000000 SpiAt45dFlashCompare
  1280. /tmp/cc60iCvq.s:965 .text.SpiAt45dFlashWrite:0000000000000000 SpiAt45dFlashWrite
  1281. /tmp/cc60iCvq.s:1054 .text.SpiAt45dFlashCopy:0000000000000000 SpiAt45dFlashCopy
  1282. /tmp/cc60iCvq.s:1158 .data:0000000000000000 flashAt45d3
  1283. /tmp/cc60iCvq.s:1178 .data:0000000000000020 flashAt45d2
  1284. /tmp/cc60iCvq.s:1198 .data:0000000000000040 flashAt45d1
  1285. /tmp/cc60iCvq.s:1218 .data:0000000000000060 flashAt45d0
  1286. UNDEFINED SYMBOLS
  1287. At45dNodeLock
  1288. At45dNodeCommand
  1289. At45dNodeWaitReady
  1290. At45dNodeUnlock
  1291. At45dNodeTransfer
  1292. free
  1293. At45dNodeProbe
  1294. calloc
  1295. malloc
  1296. NutEventPost
  1297. NutEventWait
  1298. memcpy
  1299. memcmp
  1300. nodeAt45d3
  1301. nodeAt45d2
  1302. nodeAt45d1
  1303. nodeAt45d0
  1304. __do_copy_data
  1305. __do_clear_bss