at49bv.lst 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588
  1. GAS LISTING /tmp/ccQvkAJ6.s page 1
  2. 1 .file "at49bv.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.At49bvInit,"ax",@progbits
  10. 9 .global At49bvInit
  11. 10 .type At49bvInit, @function
  12. 11 At49bvInit:
  13. 12 0000 EF92 push r14
  14. 13 0002 FF92 push r15
  15. 14 0004 0F93 push r16
  16. 15 0006 1F93 push r17
  17. 16 0008 CF93 push r28
  18. 17 000a DF93 push r29
  19. 18 /* prologue: function */
  20. 19 /* frame size = 0 */
  21. 20 /* stack size = 6 */
  22. 21 .L__stack_usage = 6
  23. 22 000c 00E0 ldi r16,0
  24. 23 000e 10E0 ldi r17,0
  25. 24 0010 EAEA ldi r30,lo8(-86)
  26. 25 0012 FAE0 ldi r31,lo8(10)
  27. 26 0014 4AEA ldi r20,lo8(-86)
  28. 27 0016 50E0 ldi r21,0
  29. 28 0018 5183 std Z+1,r21
  30. 29 001a 4083 st Z,r20
  31. 30 001c 84E5 ldi r24,lo8(84)
  32. 31 001e E82E mov r14,r24
  33. 32 0020 85E1 ldi r24,lo8(21)
  34. 33 0022 F82E mov r15,r24
  35. 34 0024 25E5 ldi r18,lo8(85)
  36. 35 0026 30E0 ldi r19,0
  37. 36 0028 D701 movw r26,r14
  38. 37 002a 1196 adiw r26,1
  39. 38 002c 3C93 st X,r19
  40. 39 002e 2E93 st -X,r18
  41. 40 0030 80E9 ldi r24,lo8(-112)
  42. 41 0032 90E0 ldi r25,0
  43. 42 0034 9183 std Z+1,r25
  44. 43 0036 8083 st Z,r24
  45. 44 0038 E801 movw r28,r16
  46. 45 003a 6881 ld r22,Y
  47. 46 003c 7981 ldd r23,Y+1
  48. 47 003e CB01 movw r24,r22
  49. 48 0040 A0E0 ldi r26,0
  50. 49 0042 B0E0 ldi r27,0
  51. 50 0044 DC01 movw r26,r24
  52. 51 0046 9927 clr r25
  53. 52 0048 8827 clr r24
  54. 53 004a 6A81 ldd r22,Y+2
  55. 54 004c 7B81 ldd r23,Y+3
  56. 55 004e 5183 std Z+1,r21
  57. 56 0050 4083 st Z,r20
  58. 57 0052 E701 movw r28,r14
  59. GAS LISTING /tmp/ccQvkAJ6.s page 2
  60. 58 0054 3983 std Y+1,r19
  61. 59 0056 2883 st Y,r18
  62. 60 0058 20EF ldi r18,lo8(-16)
  63. 61 005a 30E0 ldi r19,0
  64. 62 005c 3183 std Z+1,r19
  65. 63 005e 2083 st Z,r18
  66. 64 0060 AB01 movw r20,r22
  67. 65 0062 60E0 ldi r22,0
  68. 66 0064 70E0 ldi r23,0
  69. 67 0066 8A01 movw r16,r20
  70. 68 0068 9B01 movw r18,r22
  71. 69 006a 082B or r16,r24
  72. 70 006c 192B or r17,r25
  73. 71 006e 2A2B or r18,r26
  74. 72 0070 3B2B or r19,r27
  75. 73 0072 C901 movw r24,r18
  76. 74 0074 B801 movw r22,r16
  77. 75 /* epilogue start */
  78. 76 0076 DF91 pop r29
  79. 77 0078 CF91 pop r28
  80. 78 007a 1F91 pop r17
  81. 79 007c 0F91 pop r16
  82. 80 007e FF90 pop r15
  83. 81 0080 EF90 pop r14
  84. 82 0082 0895 ret
  85. 83 .size At49bvInit, .-At49bvInit
  86. 84 .section .text.AT49bvReadProtectionRegister,"ax",@progbits
  87. 85 .global AT49bvReadProtectionRegister
  88. 86 .type AT49bvReadProtectionRegister, @function
  89. 87 AT49bvReadProtectionRegister:
  90. 88 0000 8F92 push r8
  91. 89 0002 9F92 push r9
  92. 90 0004 AF92 push r10
  93. 91 0006 BF92 push r11
  94. 92 0008 CF92 push r12
  95. 93 000a DF92 push r13
  96. 94 000c EF92 push r14
  97. 95 000e FF92 push r15
  98. 96 0010 0F93 push r16
  99. 97 /* prologue: function */
  100. 98 /* frame size = 0 */
  101. 99 /* stack size = 9 */
  102. 100 .L__stack_usage = 9
  103. 101 0012 2AEA ldi r18,lo8(-86)
  104. 102 0014 30E0 ldi r19,0
  105. 103 0016 3093 AB0A sts 2730+1,r19
  106. 104 001a 2093 AA0A sts 2730,r18
  107. 105 001e 25E5 ldi r18,lo8(85)
  108. 106 0020 30E0 ldi r19,0
  109. 107 0022 3093 5515 sts 5460+1,r19
  110. 108 0026 2093 5415 sts 5460,r18
  111. 109 002a 20E9 ldi r18,lo8(-112)
  112. 110 002c 30E0 ldi r19,0
  113. 111 002e 3093 AB0A sts 2730+1,r19
  114. 112 0032 2093 AA0A sts 2730,r18
  115. 113 0036 892B or r24,r25
  116. 114 0038 01F0 breq .L3
  117. GAS LISTING /tmp/ccQvkAJ6.s page 3
  118. 115 003a 8090 0201 lds r8,258
  119. 116 003e 9090 0301 lds r9,258+1
  120. 117 0042 9401 movw r18,r8
  121. 118 0044 40E0 ldi r20,0
  122. 119 0046 50E0 ldi r21,0
  123. 120 0048 60E0 ldi r22,0
  124. 121 004a 70E0 ldi r23,0
  125. 122 004c 80E0 ldi r24,0
  126. 123 004e 90E0 ldi r25,0
  127. 124 0050 00E1 ldi r16,lo8(16)
  128. 125 0052 0E94 0000 call __ashldi3
  129. 126 0056 8090 0401 lds r8,260
  130. 127 005a 9090 0501 lds r9,260+1
  131. 128 005e 2829 or r18,r8
  132. 129 0060 3929 or r19,r9
  133. 130 0062 0E94 0000 call __ashldi3
  134. 131 0066 8090 0601 lds r8,262
  135. 132 006a 9090 0701 lds r9,262+1
  136. 133 006e 2829 or r18,r8
  137. 134 0070 3929 or r19,r9
  138. 135 0072 0E94 0000 call __ashldi3
  139. 136 0076 8090 0801 lds r8,264
  140. 137 007a 9090 0901 lds r9,264+1
  141. 138 007e 00C0 rjmp .L5
  142. 139 .L3:
  143. 140 0080 8090 0A01 lds r8,266
  144. 141 0084 9090 0B01 lds r9,266+1
  145. 142 0088 9401 movw r18,r8
  146. 143 008a 40E0 ldi r20,0
  147. 144 008c 50E0 ldi r21,0
  148. 145 008e 60E0 ldi r22,0
  149. 146 0090 70E0 ldi r23,0
  150. 147 0092 80E0 ldi r24,0
  151. 148 0094 90E0 ldi r25,0
  152. 149 0096 00E1 ldi r16,lo8(16)
  153. 150 0098 0E94 0000 call __ashldi3
  154. 151 009c 8090 0C01 lds r8,268
  155. 152 00a0 9090 0D01 lds r9,268+1
  156. 153 00a4 2829 or r18,r8
  157. 154 00a6 3929 or r19,r9
  158. 155 00a8 0E94 0000 call __ashldi3
  159. 156 00ac 8090 0E01 lds r8,270
  160. 157 00b0 9090 0F01 lds r9,270+1
  161. 158 00b4 2829 or r18,r8
  162. 159 00b6 3929 or r19,r9
  163. 160 00b8 0E94 0000 call __ashldi3
  164. 161 00bc 8090 1001 lds r8,272
  165. 162 00c0 9090 1101 lds r9,272+1
  166. 163 .L5:
  167. 164 00c4 2829 or r18,r8
  168. 165 00c6 3929 or r19,r9
  169. 166 00c8 EAEA ldi r30,lo8(-86)
  170. 167 00ca F0E0 ldi r31,0
  171. 168 00cc F093 AB0A sts 2730+1,r31
  172. 169 00d0 E093 AA0A sts 2730,r30
  173. 170 00d4 E5E5 ldi r30,lo8(85)
  174. 171 00d6 F0E0 ldi r31,0
  175. GAS LISTING /tmp/ccQvkAJ6.s page 4
  176. 172 00d8 F093 5515 sts 5460+1,r31
  177. 173 00dc E093 5415 sts 5460,r30
  178. 174 00e0 E0EF ldi r30,lo8(-16)
  179. 175 00e2 F0E0 ldi r31,0
  180. 176 00e4 F093 AB0A sts 2730+1,r31
  181. 177 00e8 E093 AA0A sts 2730,r30
  182. 178 /* epilogue start */
  183. 179 00ec 0F91 pop r16
  184. 180 00ee FF90 pop r15
  185. 181 00f0 EF90 pop r14
  186. 182 00f2 DF90 pop r13
  187. 183 00f4 CF90 pop r12
  188. 184 00f6 BF90 pop r11
  189. 185 00f8 AF90 pop r10
  190. 186 00fa 9F90 pop r9
  191. 187 00fc 8F90 pop r8
  192. 188 00fe 0895 ret
  193. 189 .size AT49bvReadProtectionRegister, .-AT49bvReadProtectionRegister
  194. 190 .section .text.At49bvSectorErase,"ax",@progbits
  195. 191 .global At49bvSectorErase
  196. 192 .type At49bvSectorErase, @function
  197. 193 At49bvSectorErase:
  198. 194 0000 0F93 push r16
  199. 195 0002 1F93 push r17
  200. 196 0004 CF93 push r28
  201. 197 0006 DF93 push r29
  202. 198 /* prologue: function */
  203. 199 /* frame size = 0 */
  204. 200 /* stack size = 4 */
  205. 201 .L__stack_usage = 4
  206. 202 0008 8C01 movw r16,r24
  207. 203 000a 2AEA ldi r18,lo8(-86)
  208. 204 000c 30E0 ldi r19,0
  209. 205 000e 3093 AB0A sts 2730+1,r19
  210. 206 0012 2093 AA0A sts 2730,r18
  211. 207 0016 85E5 ldi r24,lo8(85)
  212. 208 0018 90E0 ldi r25,0
  213. 209 001a 9093 5515 sts 5460+1,r25
  214. 210 001e 8093 5415 sts 5460,r24
  215. 211 0022 40E8 ldi r20,lo8(-128)
  216. 212 0024 50E0 ldi r21,0
  217. 213 0026 5093 AB0A sts 2730+1,r21
  218. 214 002a 4093 AA0A sts 2730,r20
  219. 215 002e 3093 AB0A sts 2730+1,r19
  220. 216 0032 2093 AA0A sts 2730,r18
  221. 217 0036 9093 5515 sts 5460+1,r25
  222. 218 003a 8093 5415 sts 5460,r24
  223. 219 003e 80E3 ldi r24,lo8(48)
  224. 220 0040 90E0 ldi r25,0
  225. 221 0042 F801 movw r30,r16
  226. 222 0044 9183 std Z+1,r25
  227. 223 0046 8083 st Z,r24
  228. 224 0048 C0E0 ldi r28,0
  229. 225 004a D0E0 ldi r29,0
  230. 226 .L8:
  231. 227 004c F801 movw r30,r16
  232. 228 004e 8081 ld r24,Z
  233. GAS LISTING /tmp/ccQvkAJ6.s page 5
  234. 229 0050 9181 ldd r25,Z+1
  235. 230 0052 0196 adiw r24,1
  236. 231 0054 01F0 breq .L12
  237. 232 0056 61E0 ldi r22,lo8(1)
  238. 233 0058 70E0 ldi r23,0
  239. 234 005a 80E0 ldi r24,0
  240. 235 005c 90E0 ldi r25,0
  241. 236 005e 0E94 0000 call NutSleep
  242. 237 0062 2196 adiw r28,1
  243. 238 0064 C93B cpi r28,-71
  244. 239 0066 FBE0 ldi r31,11
  245. 240 0068 DF07 cpc r29,r31
  246. 241 006a 01F4 brne .L8
  247. 242 006c 8FEF ldi r24,lo8(-1)
  248. 243 006e 9FEF ldi r25,lo8(-1)
  249. 244 0070 00C0 rjmp .L9
  250. 245 .L12:
  251. 246 0072 80E0 ldi r24,0
  252. 247 0074 90E0 ldi r25,0
  253. 248 .L9:
  254. 249 /* epilogue start */
  255. 250 0076 DF91 pop r29
  256. 251 0078 CF91 pop r28
  257. 252 007a 1F91 pop r17
  258. 253 007c 0F91 pop r16
  259. 254 007e 0895 ret
  260. 255 .size At49bvSectorErase, .-At49bvSectorErase
  261. 256 .section .text.At49bvChipErase,"ax",@progbits
  262. 257 .global At49bvChipErase
  263. 258 .type At49bvChipErase, @function
  264. 259 At49bvChipErase:
  265. 260 0000 CF93 push r28
  266. 261 0002 DF93 push r29
  267. 262 /* prologue: function */
  268. 263 /* frame size = 0 */
  269. 264 /* stack size = 2 */
  270. 265 .L__stack_usage = 2
  271. 266 0004 2AEA ldi r18,lo8(-86)
  272. 267 0006 30E0 ldi r19,0
  273. 268 0008 3093 AB0A sts 2730+1,r19
  274. 269 000c 2093 AA0A sts 2730,r18
  275. 270 0010 85E5 ldi r24,lo8(85)
  276. 271 0012 90E0 ldi r25,0
  277. 272 0014 9093 5515 sts 5460+1,r25
  278. 273 0018 8093 5415 sts 5460,r24
  279. 274 001c 40E8 ldi r20,lo8(-128)
  280. 275 001e 50E0 ldi r21,0
  281. 276 0020 5093 AB0A sts 2730+1,r21
  282. 277 0024 4093 AA0A sts 2730,r20
  283. 278 0028 3093 AB0A sts 2730+1,r19
  284. 279 002c 2093 AA0A sts 2730,r18
  285. 280 0030 9093 5515 sts 5460+1,r25
  286. 281 0034 8093 5415 sts 5460,r24
  287. 282 0038 80E1 ldi r24,lo8(16)
  288. 283 003a 90E0 ldi r25,0
  289. 284 003c 9093 AB0A sts 2730+1,r25
  290. 285 0040 8093 AA0A sts 2730,r24
  291. GAS LISTING /tmp/ccQvkAJ6.s page 6
  292. 286 0044 C0E0 ldi r28,0
  293. 287 0046 D0E0 ldi r29,0
  294. 288 .L14:
  295. 289 0048 8091 0000 lds r24,0
  296. 290 004c 9091 0100 lds r25,0+1
  297. 291 0050 0196 adiw r24,1
  298. 292 0052 01F0 breq .L18
  299. 293 0054 61E0 ldi r22,lo8(1)
  300. 294 0056 70E0 ldi r23,0
  301. 295 0058 80E0 ldi r24,0
  302. 296 005a 90E0 ldi r25,0
  303. 297 005c 0E94 0000 call NutSleep
  304. 298 0060 2196 adiw r28,1
  305. 299 0062 C135 cpi r28,81
  306. 300 0064 23EC ldi r18,-61
  307. 301 0066 D207 cpc r29,r18
  308. 302 0068 01F4 brne .L14
  309. 303 006a 8FEF ldi r24,lo8(-1)
  310. 304 006c 9FEF ldi r25,lo8(-1)
  311. 305 006e 00C0 rjmp .L15
  312. 306 .L18:
  313. 307 0070 80E0 ldi r24,0
  314. 308 0072 90E0 ldi r25,0
  315. 309 .L15:
  316. 310 /* epilogue start */
  317. 311 0074 DF91 pop r29
  318. 312 0076 CF91 pop r28
  319. 313 0078 0895 ret
  320. 314 .size At49bvChipErase, .-At49bvChipErase
  321. 315 .section .text.At49bvSectorRead,"ax",@progbits
  322. 316 .global At49bvSectorRead
  323. 317 .type At49bvSectorRead, @function
  324. 318 At49bvSectorRead:
  325. 319 /* prologue: function */
  326. 320 /* frame size = 0 */
  327. 321 /* stack size = 0 */
  328. 322 .L__stack_usage = 0
  329. 323 0000 9C01 movw r18,r24
  330. 324 0002 CB01 movw r24,r22
  331. 325 0004 B901 movw r22,r18
  332. 326 0006 0E94 0000 call memcpy
  333. 327 000a 80E0 ldi r24,0
  334. 328 000c 90E0 ldi r25,0
  335. 329 000e 0895 ret
  336. 330 .size At49bvSectorRead, .-At49bvSectorRead
  337. 331 .section .text.At49bvSectorWrite,"ax",@progbits
  338. 332 .global At49bvSectorWrite
  339. 333 .type At49bvSectorWrite, @function
  340. 334 At49bvSectorWrite:
  341. 335 0000 8F92 push r8
  342. 336 0002 9F92 push r9
  343. 337 0004 AF92 push r10
  344. 338 0006 BF92 push r11
  345. 339 0008 CF92 push r12
  346. 340 000a DF92 push r13
  347. 341 000c EF92 push r14
  348. 342 000e FF92 push r15
  349. GAS LISTING /tmp/ccQvkAJ6.s page 7
  350. 343 0010 0F93 push r16
  351. 344 0012 1F93 push r17
  352. 345 0014 CF93 push r28
  353. 346 0016 DF93 push r29
  354. 347 /* prologue: function */
  355. 348 /* frame size = 0 */
  356. 349 /* stack size = 12 */
  357. 350 .L__stack_usage = 12
  358. 351 0018 20E0 ldi r18,0
  359. 352 001a 30E0 ldi r19,0
  360. 353 001c EAEA ldi r30,lo8(-86)
  361. 354 001e AE2E mov r10,r30
  362. 355 0020 B12C mov r11,__zero_reg__
  363. 356 0022 F5E5 ldi r31,lo8(85)
  364. 357 0024 8F2E mov r8,r31
  365. 358 0026 912C mov r9,__zero_reg__
  366. 359 0028 00EA ldi r16,lo8(-96)
  367. 360 002a 10E0 ldi r17,0
  368. 361 .L21:
  369. 362 002c D901 movw r26,r18
  370. 363 002e A80F add r26,r24
  371. 364 0030 B91F adc r27,r25
  372. 365 0032 FB01 movw r30,r22
  373. 366 0034 E20F add r30,r18
  374. 367 0036 F31F adc r31,r19
  375. 368 0038 2417 cp r18,r20
  376. 369 003a 3507 cpc r19,r21
  377. 370 003c 00F4 brsh .L29
  378. 371 003e E080 ld r14,Z
  379. 372 0040 F180 ldd r15,Z+1
  380. 373 0042 EF20 and r14,r15
  381. 374 0044 E094 com r14
  382. 375 0046 01F4 brne .L22
  383. 376 .L26:
  384. 377 0048 2E5F subi r18,-2
  385. 378 004a 3F4F sbci r19,-1
  386. 379 004c 00C0 rjmp .L21
  387. 380 .L22:
  388. 381 004e B092 AB0A sts 2730+1,r11
  389. 382 0052 A092 AA0A sts 2730,r10
  390. 383 0056 9092 5515 sts 5460+1,r9
  391. 384 005a 8092 5415 sts 5460,r8
  392. 385 005e 1093 AB0A sts 2730+1,r17
  393. 386 0062 0093 AA0A sts 2730,r16
  394. 387 0066 E080 ld r14,Z
  395. 388 0068 F180 ldd r15,Z+1
  396. 389 006a 1196 adiw r26,1
  397. 390 006c FC92 st X,r15
  398. 391 006e EE92 st -X,r14
  399. 392 0070 C080 ld r12,Z
  400. 393 0072 D180 ldd r13,Z+1
  401. 394 0074 E0E0 ldi r30,0
  402. 395 0076 F0E0 ldi r31,0
  403. 396 .L23:
  404. 397 0078 ED90 ld r14,X+
  405. 398 007a FC90 ld r15,X
  406. 399 007c 1197 sbiw r26,1
  407. GAS LISTING /tmp/ccQvkAJ6.s page 8
  408. 400 007e CE14 cp r12,r14
  409. 401 0080 DF04 cpc r13,r15
  410. 402 0082 01F0 breq .L26
  411. 403 0084 3196 adiw r30,1
  412. 404 0086 E93E cpi r30,-23
  413. 405 0088 C3E0 ldi r28,3
  414. 406 008a FC07 cpc r31,r28
  415. 407 008c 01F4 brne .L23
  416. 408 008e 8FEF ldi r24,lo8(-1)
  417. 409 0090 9FEF ldi r25,lo8(-1)
  418. 410 0092 00C0 rjmp .L24
  419. 411 .L29:
  420. 412 0094 80E0 ldi r24,0
  421. 413 0096 90E0 ldi r25,0
  422. 414 .L24:
  423. 415 /* epilogue start */
  424. 416 0098 DF91 pop r29
  425. 417 009a CF91 pop r28
  426. 418 009c 1F91 pop r17
  427. 419 009e 0F91 pop r16
  428. 420 00a0 FF90 pop r15
  429. 421 00a2 EF90 pop r14
  430. 422 00a4 DF90 pop r13
  431. 423 00a6 CF90 pop r12
  432. 424 00a8 BF90 pop r11
  433. 425 00aa AF90 pop r10
  434. 426 00ac 9F90 pop r9
  435. 427 00ae 8F90 pop r8
  436. 428 00b0 0895 ret
  437. 429 .size At49bvSectorWrite, .-At49bvSectorWrite
  438. 430 .section .text.At49bvParamRead,"ax",@progbits
  439. 431 .global At49bvParamRead
  440. 432 .type At49bvParamRead, @function
  441. 433 At49bvParamRead:
  442. 434 /* prologue: function */
  443. 435 /* frame size = 0 */
  444. 436 /* stack size = 0 */
  445. 437 .L__stack_usage = 0
  446. 438 0000 9B01 movw r18,r22
  447. 439 0002 BC01 movw r22,r24
  448. 440 0004 705A subi r23,-96
  449. 441 0006 C901 movw r24,r18
  450. 442 0008 0E94 0000 call memcpy
  451. 443 000c 80E0 ldi r24,0
  452. 444 000e 90E0 ldi r25,0
  453. 445 0010 0895 ret
  454. 446 .size At49bvParamRead, .-At49bvParamRead
  455. 447 .section .text.At49bvParamWrite,"ax",@progbits
  456. 448 .global At49bvParamWrite
  457. 449 .type At49bvParamWrite, @function
  458. 450 At49bvParamWrite:
  459. 451 0000 CF92 push r12
  460. 452 0002 DF92 push r13
  461. 453 0004 EF92 push r14
  462. 454 0006 FF92 push r15
  463. 455 0008 0F93 push r16
  464. 456 000a 1F93 push r17
  465. GAS LISTING /tmp/ccQvkAJ6.s page 9
  466. 457 000c CF93 push r28
  467. 458 000e DF93 push r29
  468. 459 /* prologue: function */
  469. 460 /* frame size = 0 */
  470. 461 /* stack size = 8 */
  471. 462 .L__stack_usage = 8
  472. 463 0010 EC01 movw r28,r24
  473. 464 0012 7B01 movw r14,r22
  474. 465 0014 6A01 movw r12,r20
  475. 466 0016 80E0 ldi r24,0
  476. 467 0018 92E0 ldi r25,lo8(2)
  477. 468 001a 0E94 0000 call malloc
  478. 469 001e 8C01 movw r16,r24
  479. 470 0020 892B or r24,r25
  480. 471 0022 01F0 breq .L34
  481. 472 0024 80E0 ldi r24,0
  482. 473 0026 92E0 ldi r25,lo8(2)
  483. 474 0028 E0E0 ldi r30,0
  484. 475 002a F0E6 ldi r31,lo8(96)
  485. 476 002c D801 movw r26,r16
  486. 477 0:
  487. 478 002e 0190 ld r0,Z+
  488. 479 0030 0D92 st X+,r0
  489. 480 0032 0197 sbiw r24,1
  490. 481 0034 01F4 brne 0b
  491. 482 0036 C00F add r28,r16
  492. 483 0038 D11F adc r29,r17
  493. 484 003a A601 movw r20,r12
  494. 485 003c B701 movw r22,r14
  495. 486 003e CE01 movw r24,r28
  496. 487 0040 0E94 0000 call memcmp
  497. 488 0044 892B or r24,r25
  498. 489 0046 01F0 breq .L35
  499. 490 0048 A601 movw r20,r12
  500. 491 004a B701 movw r22,r14
  501. 492 004c CE01 movw r24,r28
  502. 493 004e 0E94 0000 call memcpy
  503. 494 0052 80E0 ldi r24,0
  504. 495 0054 90E6 ldi r25,lo8(96)
  505. 496 0056 0E94 0000 call At49bvSectorErase
  506. 497 005a EC01 movw r28,r24
  507. 498 005c 892B or r24,r25
  508. 499 005e 01F4 brne .L33
  509. 500 0060 40E0 ldi r20,0
  510. 501 0062 52E0 ldi r21,lo8(2)
  511. 502 0064 B801 movw r22,r16
  512. 503 0066 80E0 ldi r24,0
  513. 504 0068 90E6 ldi r25,lo8(96)
  514. 505 006a 0E94 0000 call At49bvSectorWrite
  515. 506 006e EC01 movw r28,r24
  516. 507 0070 00C0 rjmp .L33
  517. 508 .L35:
  518. 509 0072 C0E0 ldi r28,0
  519. 510 0074 D0E0 ldi r29,0
  520. 511 .L33:
  521. 512 0076 C801 movw r24,r16
  522. 513 0078 0E94 0000 call free
  523. GAS LISTING /tmp/ccQvkAJ6.s page 10
  524. 514 007c 00C0 rjmp .L32
  525. 515 .L34:
  526. 516 007e CFEF ldi r28,lo8(-1)
  527. 517 0080 DFEF ldi r29,lo8(-1)
  528. 518 .L32:
  529. 519 0082 CE01 movw r24,r28
  530. 520 /* epilogue start */
  531. 521 0084 DF91 pop r29
  532. 522 0086 CF91 pop r28
  533. 523 0088 1F91 pop r17
  534. 524 008a 0F91 pop r16
  535. 525 008c FF90 pop r15
  536. 526 008e EF90 pop r14
  537. 527 0090 DF90 pop r13
  538. 528 0092 CF90 pop r12
  539. 529 0094 0895 ret
  540. 530 .size At49bvParamWrite, .-At49bvParamWrite
  541. 531 .ident "GCC: (GNU) 5.3.0"
  542. GAS LISTING /tmp/ccQvkAJ6.s page 11
  543. DEFINED SYMBOLS
  544. *ABS*:0000000000000000 at49bv.c
  545. /tmp/ccQvkAJ6.s:2 *ABS*:000000000000003e __SP_H__
  546. /tmp/ccQvkAJ6.s:3 *ABS*:000000000000003d __SP_L__
  547. /tmp/ccQvkAJ6.s:4 *ABS*:000000000000003f __SREG__
  548. /tmp/ccQvkAJ6.s:5 *ABS*:000000000000003b __RAMPZ__
  549. /tmp/ccQvkAJ6.s:6 *ABS*:0000000000000000 __tmp_reg__
  550. /tmp/ccQvkAJ6.s:7 *ABS*:0000000000000001 __zero_reg__
  551. /tmp/ccQvkAJ6.s:11 .text.At49bvInit:0000000000000000 At49bvInit
  552. /tmp/ccQvkAJ6.s:87 .text.AT49bvReadProtectionRegister:0000000000000000 AT49bvReadProtectionRegister
  553. /tmp/ccQvkAJ6.s:193 .text.At49bvSectorErase:0000000000000000 At49bvSectorErase
  554. /tmp/ccQvkAJ6.s:259 .text.At49bvChipErase:0000000000000000 At49bvChipErase
  555. /tmp/ccQvkAJ6.s:318 .text.At49bvSectorRead:0000000000000000 At49bvSectorRead
  556. /tmp/ccQvkAJ6.s:334 .text.At49bvSectorWrite:0000000000000000 At49bvSectorWrite
  557. /tmp/ccQvkAJ6.s:433 .text.At49bvParamRead:0000000000000000 At49bvParamRead
  558. /tmp/ccQvkAJ6.s:450 .text.At49bvParamWrite:0000000000000000 At49bvParamWrite
  559. UNDEFINED SYMBOLS
  560. __ashldi3
  561. NutSleep
  562. memcpy
  563. malloc
  564. memcmp
  565. free