phat32.lst 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754
  1. GAS LISTING /tmp/cc4OuBMn.s page 1
  2. 1 .file "phat32.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.Phat32FreeClusters,"ax",@progbits
  10. 9 .global Phat32FreeClusters
  11. 10 .type Phat32FreeClusters, @function
  12. 11 Phat32FreeClusters:
  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 00D0 rcall .
  32. 31 0026 00D0 rcall .
  33. 32 0028 CDB7 in r28,__SP_L__
  34. 33 002a DEB7 in r29,__SP_H__
  35. 34 /* prologue: function */
  36. 35 /* frame size = 6 */
  37. 36 /* stack size = 24 */
  38. 37 .L__stack_usage = 24
  39. 38 002c 9E83 std Y+6,r25
  40. 39 002e 8D83 std Y+5,r24
  41. 40 0030 DC01 movw r26,r24
  42. 41 0032 5196 adiw r26,17
  43. 42 0034 2D90 ld r2,X+
  44. 43 0036 3C90 ld r3,X
  45. 44 0038 5297 sbiw r26,17+1
  46. 45 003a D101 movw r26,r2
  47. 46 003c D296 adiw r26,50
  48. 47 003e 0D91 ld r16,X+
  49. 48 0040 1D91 ld r17,X+
  50. 49 0042 2D91 ld r18,X+
  51. 50 0044 3C91 ld r19,X
  52. 51 0046 D597 sbiw r26,50+3
  53. 52 0048 0983 std Y+1,r16
  54. 53 004a 1A83 std Y+2,r17
  55. 54 004c 2B83 std Y+3,r18
  56. 55 004e 3C83 std Y+4,r19
  57. 56 0050 083F cpi r16,-8
  58. 57 0052 1F4F sbci r17,-1
  59. GAS LISTING /tmp/cc4OuBMn.s page 2
  60. 58 0054 2F4F sbci r18,-1
  61. 59 0056 3F40 sbci r19,15
  62. 60 0058 00F0 brlo .L2
  63. 61 005a 07EF ldi r16,lo8(-9)
  64. 62 005c 1FEF ldi r17,lo8(-1)
  65. 63 005e 2FEF ldi r18,lo8(-1)
  66. 64 0060 3FE0 ldi r19,lo8(15)
  67. 65 0062 0983 std Y+1,r16
  68. 66 0064 1A83 std Y+2,r17
  69. 67 0066 2B83 std Y+3,r18
  70. 68 0068 3C83 std Y+4,r19
  71. 69 .L2:
  72. 70 006a D101 movw r26,r2
  73. 71 006c 9096 adiw r26,32
  74. 72 006e 8D90 ld r8,X+
  75. 73 0070 9D90 ld r9,X+
  76. 74 0072 AD90 ld r10,X+
  77. 75 0074 BC90 ld r11,X
  78. 76 0076 9397 sbiw r26,32+3
  79. 77 0078 B501 movw r22,r10
  80. 78 007a A401 movw r20,r8
  81. 79 007c 8D81 ldd r24,Y+5
  82. 80 007e 9E81 ldd r25,Y+6
  83. 81 0080 0E94 0000 call PhatSectorLoad
  84. 82 0084 97FD sbrc r25,7
  85. 83 0086 00C0 rjmp .L9
  86. 84 0088 9C01 movw r18,r24
  87. 85 008a 2F5F subi r18,-1
  88. 86 008c 3F4F sbci r19,-1
  89. 87 008e 4AE0 ldi r20,lo8(10)
  90. 88 0090 429F mul r20,r18
  91. 89 0092 F001 movw r30,r0
  92. 90 0094 439F mul r20,r19
  93. 91 0096 F00D add r31,r0
  94. 92 0098 1124 clr __zero_reg__
  95. 93 009a E20D add r30,r2
  96. 94 009c F31D adc r31,r3
  97. 95 009e A081 ld r26,Z
  98. 96 00a0 B181 ldd r27,Z+1
  99. 97 00a2 4CEF ldi r20,lo8(-4)
  100. 98 00a4 5FEF ldi r21,lo8(-1)
  101. 99 00a6 6FEF ldi r22,lo8(-1)
  102. 100 00a8 7FEF ldi r23,lo8(-1)
  103. 101 00aa 412C mov r4,__zero_reg__
  104. 102 00ac 512C mov r5,__zero_reg__
  105. 103 00ae 3201 movw r6,r4
  106. 104 00b0 C12C mov r12,__zero_reg__
  107. 105 00b2 D12C mov r13,__zero_reg__
  108. 106 00b4 7601 movw r14,r12
  109. 107 .L4:
  110. 108 00b6 0981 ldd r16,Y+1
  111. 109 00b8 1A81 ldd r17,Y+2
  112. 110 00ba 2B81 ldd r18,Y+3
  113. 111 00bc 3C81 ldd r19,Y+4
  114. 112 00be 4016 cp r4,r16
  115. 113 00c0 5106 cpc r5,r17
  116. 114 00c2 6206 cpc r6,r18
  117. GAS LISTING /tmp/cc4OuBMn.s page 3
  118. 115 00c4 7306 cpc r7,r19
  119. 116 00c6 01F4 brne .+2
  120. 117 00c8 00C0 rjmp .L6
  121. 118 00ca 4C5F subi r20,-4
  122. 119 00cc 5F4F sbci r21,-1
  123. 120 00ce 6F4F sbci r22,-1
  124. 121 00d0 7F4F sbci r23,-1
  125. 122 00d2 F101 movw r30,r2
  126. 123 00d4 208D ldd r18,Z+24
  127. 124 00d6 318D ldd r19,Z+25
  128. 125 00d8 8901 movw r16,r18
  129. 126 00da 20E0 ldi r18,0
  130. 127 00dc 30E0 ldi r19,0
  131. 128 00de 4017 cp r20,r16
  132. 129 00e0 5107 cpc r21,r17
  133. 130 00e2 6207 cpc r22,r18
  134. 131 00e4 7307 cpc r23,r19
  135. 132 00e6 00F0 brlo .L5
  136. 133 00e8 BC01 movw r22,r24
  137. 134 00ea 8D81 ldd r24,Y+5
  138. 135 00ec 9E81 ldd r25,Y+6
  139. 136 00ee 0E94 0000 call PhatSectorBufferRelease
  140. 137 00f2 FFEF ldi r31,-1
  141. 138 00f4 8F1A sub r8,r31
  142. 139 00f6 9F0A sbc r9,r31
  143. 140 00f8 AF0A sbc r10,r31
  144. 141 00fa BF0A sbc r11,r31
  145. 142 00fc B501 movw r22,r10
  146. 143 00fe A401 movw r20,r8
  147. 144 0100 8D81 ldd r24,Y+5
  148. 145 0102 9E81 ldd r25,Y+6
  149. 146 0104 0E94 0000 call PhatSectorLoad
  150. 147 0108 97FD sbrc r25,7
  151. 148 010a 00C0 rjmp .L6
  152. 149 010c AC01 movw r20,r24
  153. 150 010e 4F5F subi r20,-1
  154. 151 0110 5F4F sbci r21,-1
  155. 152 0112 0AE0 ldi r16,lo8(10)
  156. 153 0114 049F mul r16,r20
  157. 154 0116 9001 movw r18,r0
  158. 155 0118 059F mul r16,r21
  159. 156 011a 300D add r19,r0
  160. 157 011c 1124 clr __zero_reg__
  161. 158 011e F101 movw r30,r2
  162. 159 0120 E20F add r30,r18
  163. 160 0122 F31F adc r31,r19
  164. 161 0124 A081 ld r26,Z
  165. 162 0126 B181 ldd r27,Z+1
  166. 163 0128 40E0 ldi r20,0
  167. 164 012a 50E0 ldi r21,0
  168. 165 012c BA01 movw r22,r20
  169. 166 .L5:
  170. 167 012e FD01 movw r30,r26
  171. 168 0130 E40F add r30,r20
  172. 169 0132 F51F adc r31,r21
  173. 170 0134 3181 ldd r19,Z+1
  174. 171 0136 2281 ldd r18,Z+2
  175. GAS LISTING /tmp/cc4OuBMn.s page 4
  176. 172 0138 322B or r19,r18
  177. 173 013a 2081 ld r18,Z
  178. 174 013c 232B or r18,r19
  179. 175 013e 3381 ldd r19,Z+3
  180. 176 0140 232B or r18,r19
  181. 177 0142 01F4 brne .L7
  182. 178 0144 1FEF ldi r17,-1
  183. 179 0146 C11A sub r12,r17
  184. 180 0148 D10A sbc r13,r17
  185. 181 014a E10A sbc r14,r17
  186. 182 014c F10A sbc r15,r17
  187. 183 .L7:
  188. 184 014e 2FEF ldi r18,-1
  189. 185 0150 421A sub r4,r18
  190. 186 0152 520A sbc r5,r18
  191. 187 0154 620A sbc r6,r18
  192. 188 0156 720A sbc r7,r18
  193. 189 0158 00C0 rjmp .L4
  194. 190 .L6:
  195. 191 015a BC01 movw r22,r24
  196. 192 015c 8D81 ldd r24,Y+5
  197. 193 015e 9E81 ldd r25,Y+6
  198. 194 0160 0E94 0000 call PhatSectorBufferRelease
  199. 195 0164 00C0 rjmp .L3
  200. 196 .L9:
  201. 197 0166 C12C mov r12,__zero_reg__
  202. 198 0168 D12C mov r13,__zero_reg__
  203. 199 016a 7601 movw r14,r12
  204. 200 .L3:
  205. 201 016c C701 movw r24,r14
  206. 202 016e B601 movw r22,r12
  207. 203 /* epilogue start */
  208. 204 0170 2696 adiw r28,6
  209. 205 0172 0FB6 in __tmp_reg__,__SREG__
  210. 206 0174 F894 cli
  211. 207 0176 DEBF out __SP_H__,r29
  212. 208 0178 0FBE out __SREG__,__tmp_reg__
  213. 209 017a CDBF out __SP_L__,r28
  214. 210 017c DF91 pop r29
  215. 211 017e CF91 pop r28
  216. 212 0180 1F91 pop r17
  217. 213 0182 0F91 pop r16
  218. 214 0184 FF90 pop r15
  219. 215 0186 EF90 pop r14
  220. 216 0188 DF90 pop r13
  221. 217 018a CF90 pop r12
  222. 218 018c BF90 pop r11
  223. 219 018e AF90 pop r10
  224. 220 0190 9F90 pop r9
  225. 221 0192 8F90 pop r8
  226. 222 0194 7F90 pop r7
  227. 223 0196 6F90 pop r6
  228. 224 0198 5F90 pop r5
  229. 225 019a 4F90 pop r4
  230. 226 019c 3F90 pop r3
  231. 227 019e 2F90 pop r2
  232. 228 01a0 0895 ret
  233. GAS LISTING /tmp/cc4OuBMn.s page 5
  234. 229 .size Phat32FreeClusters, .-Phat32FreeClusters
  235. 230 .section .text.Phat32GetClusterLink,"ax",@progbits
  236. 231 .global Phat32GetClusterLink
  237. 232 .type Phat32GetClusterLink, @function
  238. 233 Phat32GetClusterLink:
  239. 234 0000 8F92 push r8
  240. 235 0002 9F92 push r9
  241. 236 0004 AF92 push r10
  242. 237 0006 BF92 push r11
  243. 238 0008 CF92 push r12
  244. 239 000a DF92 push r13
  245. 240 000c EF92 push r14
  246. 241 000e FF92 push r15
  247. 242 0010 0F93 push r16
  248. 243 0012 1F93 push r17
  249. 244 0014 CF93 push r28
  250. 245 0016 DF93 push r29
  251. 246 /* prologue: function */
  252. 247 /* frame size = 0 */
  253. 248 /* stack size = 12 */
  254. 249 .L__stack_usage = 12
  255. 250 0018 8C01 movw r16,r24
  256. 251 001a E901 movw r28,r18
  257. 252 001c FC01 movw r30,r24
  258. 253 001e E188 ldd r14,Z+17
  259. 254 0020 F288 ldd r15,Z+18
  260. 255 0022 483F cpi r20,-8
  261. 256 0024 FFEF ldi r31,-1
  262. 257 0026 5F07 cpc r21,r31
  263. 258 0028 6F07 cpc r22,r31
  264. 259 002a FFE0 ldi r31,15
  265. 260 002c 7F07 cpc r23,r31
  266. 261 002e 00F0 brlo .L12
  267. 262 .L14:
  268. 263 0030 8FEF ldi r24,lo8(-1)
  269. 264 0032 9FEF ldi r25,lo8(-1)
  270. 265 0034 00C0 rjmp .L13
  271. 266 .L12:
  272. 267 0036 CB01 movw r24,r22
  273. 268 0038 BA01 movw r22,r20
  274. 269 003a F2E0 ldi r31,2
  275. 270 1:
  276. 271 003c 660F lsl r22
  277. 272 003e 771F rol r23
  278. 273 0040 881F rol r24
  279. 274 0042 991F rol r25
  280. 275 0044 FA95 dec r31
  281. 276 0046 01F4 brne 1b
  282. 277 0048 F701 movw r30,r14
  283. 278 004a 208D ldd r18,Z+24
  284. 279 004c 318D ldd r19,Z+25
  285. 280 004e 40E0 ldi r20,0
  286. 281 0050 50E0 ldi r21,0
  287. 282 0052 0E94 0000 call __udivmodsi4
  288. 283 0056 4B01 movw r8,r22
  289. 284 0058 5C01 movw r10,r24
  290. 285 005a F701 movw r30,r14
  291. GAS LISTING /tmp/cc4OuBMn.s page 6
  292. 286 005c 80A1 ldd r24,Z+32
  293. 287 005e 91A1 ldd r25,Z+33
  294. 288 0060 A2A1 ldd r26,Z+34
  295. 289 0062 B3A1 ldd r27,Z+35
  296. 290 0064 BA01 movw r22,r20
  297. 291 0066 A901 movw r20,r18
  298. 292 0068 480F add r20,r24
  299. 293 006a 591F adc r21,r25
  300. 294 006c 6A1F adc r22,r26
  301. 295 006e 7B1F adc r23,r27
  302. 296 0070 C801 movw r24,r16
  303. 297 0072 0E94 0000 call PhatSectorLoad
  304. 298 0076 97FD sbrc r25,7
  305. 299 0078 00C0 rjmp .L14
  306. 300 007a AC01 movw r20,r24
  307. 301 007c 4F5F subi r20,-1
  308. 302 007e 5F4F sbci r21,-1
  309. 303 0080 6AE0 ldi r22,lo8(10)
  310. 304 0082 649F mul r22,r20
  311. 305 0084 9001 movw r18,r0
  312. 306 0086 659F mul r22,r21
  313. 307 0088 300D add r19,r0
  314. 308 008a 1124 clr __zero_reg__
  315. 309 008c F701 movw r30,r14
  316. 310 008e E20F add r30,r18
  317. 311 0090 F31F adc r31,r19
  318. 312 0092 0190 ld __tmp_reg__,Z+
  319. 313 0094 F081 ld r31,Z
  320. 314 0096 E02D mov r30,__tmp_reg__
  321. 315 0098 E80D add r30,r8
  322. 316 009a F91D adc r31,r9
  323. 317 009c C080 ld r12,Z
  324. 318 009e 8C2C mov r8,r12
  325. 319 00a0 912C mov r9,__zero_reg__
  326. 320 00a2 A12C mov r10,__zero_reg__
  327. 321 00a4 B12C mov r11,__zero_reg__
  328. 322 00a6 8882 st Y,r8
  329. 323 00a8 9982 std Y+1,r9
  330. 324 00aa AA82 std Y+2,r10
  331. 325 00ac BB82 std Y+3,r11
  332. 326 00ae 4181 ldd r20,Z+1
  333. 327 00b0 50E0 ldi r21,0
  334. 328 00b2 60E0 ldi r22,0
  335. 329 00b4 70E0 ldi r23,0
  336. 330 00b6 762F mov r23,r22
  337. 331 00b8 652F mov r22,r21
  338. 332 00ba 542F mov r21,r20
  339. 333 00bc 4427 clr r20
  340. 334 00be 6A01 movw r12,r20
  341. 335 00c0 7B01 movw r14,r22
  342. 336 00c2 C80C add r12,r8
  343. 337 00c4 D91C adc r13,r9
  344. 338 00c6 EA1C adc r14,r10
  345. 339 00c8 FB1C adc r15,r11
  346. 340 00ca C882 st Y,r12
  347. 341 00cc D982 std Y+1,r13
  348. 342 00ce EA82 std Y+2,r14
  349. GAS LISTING /tmp/cc4OuBMn.s page 7
  350. 343 00d0 FB82 std Y+3,r15
  351. 344 00d2 4281 ldd r20,Z+2
  352. 345 00d4 50E0 ldi r21,0
  353. 346 00d6 60E0 ldi r22,0
  354. 347 00d8 70E0 ldi r23,0
  355. 348 00da BA01 movw r22,r20
  356. 349 00dc 5527 clr r21
  357. 350 00de 4427 clr r20
  358. 351 00e0 4C0D add r20,r12
  359. 352 00e2 5D1D adc r21,r13
  360. 353 00e4 6E1D adc r22,r14
  361. 354 00e6 7F1D adc r23,r15
  362. 355 00e8 4883 st Y,r20
  363. 356 00ea 5983 std Y+1,r21
  364. 357 00ec 6A83 std Y+2,r22
  365. 358 00ee 7B83 std Y+3,r23
  366. 359 00f0 C380 ldd r12,Z+3
  367. 360 00f2 D12C mov r13,__zero_reg__
  368. 361 00f4 E12C mov r14,__zero_reg__
  369. 362 00f6 F12C mov r15,__zero_reg__
  370. 363 00f8 FC2C mov r15,r12
  371. 364 00fa EE24 clr r14
  372. 365 00fc DD24 clr r13
  373. 366 00fe CC24 clr r12
  374. 367 0100 4C0D add r20,r12
  375. 368 0102 5D1D adc r21,r13
  376. 369 0104 6E1D adc r22,r14
  377. 370 0106 7F1D adc r23,r15
  378. 371 0108 4883 st Y,r20
  379. 372 010a 5983 std Y+1,r21
  380. 373 010c 6A83 std Y+2,r22
  381. 374 010e 7B83 std Y+3,r23
  382. 375 0110 BC01 movw r22,r24
  383. 376 0112 C801 movw r24,r16
  384. 377 0114 0E94 0000 call PhatSectorBufferRelease
  385. 378 0118 80E0 ldi r24,0
  386. 379 011a 90E0 ldi r25,0
  387. 380 .L13:
  388. 381 /* epilogue start */
  389. 382 011c DF91 pop r29
  390. 383 011e CF91 pop r28
  391. 384 0120 1F91 pop r17
  392. 385 0122 0F91 pop r16
  393. 386 0124 FF90 pop r15
  394. 387 0126 EF90 pop r14
  395. 388 0128 DF90 pop r13
  396. 389 012a CF90 pop r12
  397. 390 012c BF90 pop r11
  398. 391 012e AF90 pop r10
  399. 392 0130 9F90 pop r9
  400. 393 0132 8F90 pop r8
  401. 394 0134 0895 ret
  402. 395 .size Phat32GetClusterLink, .-Phat32GetClusterLink
  403. 396 .section .text.Phat32SetClusterLink,"ax",@progbits
  404. 397 .global Phat32SetClusterLink
  405. 398 .type Phat32SetClusterLink, @function
  406. 399 Phat32SetClusterLink:
  407. GAS LISTING /tmp/cc4OuBMn.s page 8
  408. 400 0000 2F92 push r2
  409. 401 0002 3F92 push r3
  410. 402 0004 4F92 push r4
  411. 403 0006 5F92 push r5
  412. 404 0008 6F92 push r6
  413. 405 000a 7F92 push r7
  414. 406 000c 8F92 push r8
  415. 407 000e 9F92 push r9
  416. 408 0010 AF92 push r10
  417. 409 0012 BF92 push r11
  418. 410 0014 CF92 push r12
  419. 411 0016 DF92 push r13
  420. 412 0018 EF92 push r14
  421. 413 001a FF92 push r15
  422. 414 001c 0F93 push r16
  423. 415 001e 1F93 push r17
  424. 416 0020 CF93 push r28
  425. 417 0022 DF93 push r29
  426. 418 0024 CDB7 in r28,__SP_L__
  427. 419 0026 DEB7 in r29,__SP_H__
  428. 420 0028 2897 sbiw r28,8
  429. 421 002a 0FB6 in __tmp_reg__,__SREG__
  430. 422 002c F894 cli
  431. 423 002e DEBF out __SP_H__,r29
  432. 424 0030 0FBE out __SREG__,__tmp_reg__
  433. 425 0032 CDBF out __SP_L__,r28
  434. 426 /* prologue: function */
  435. 427 /* frame size = 8 */
  436. 428 /* stack size = 26 */
  437. 429 .L__stack_usage = 26
  438. 430 0034 1C01 movw r2,r24
  439. 431 0036 6801 movw r12,r16
  440. 432 0038 7901 movw r14,r18
  441. 433 003a DC01 movw r26,r24
  442. 434 003c 5196 adiw r26,17
  443. 435 003e 0D90 ld __tmp_reg__,X+
  444. 436 0040 BC91 ld r27,X
  445. 437 0042 A02D mov r26,__tmp_reg__
  446. 438 0044 B887 std Y+8,r27
  447. 439 0046 AF83 std Y+7,r26
  448. 440 0048 DB01 movw r26,r22
  449. 441 004a CA01 movw r24,r20
  450. 442 004c 22E0 ldi r18,2
  451. 443 1:
  452. 444 004e 880F lsl r24
  453. 445 0050 991F rol r25
  454. 446 0052 AA1F rol r26
  455. 447 0054 BB1F rol r27
  456. 448 0056 2A95 dec r18
  457. 449 0058 01F4 brne 1b
  458. 450 005a 8983 std Y+1,r24
  459. 451 005c 9A83 std Y+2,r25
  460. 452 005e AB83 std Y+3,r26
  461. 453 0060 BC83 std Y+4,r27
  462. 454 0062 0F81 ldd r16,Y+7
  463. 455 0064 1885 ldd r17,Y+8
  464. 456 0066 005E subi r16,-32
  465. GAS LISTING /tmp/cc4OuBMn.s page 9
  466. 457 0068 1F4F sbci r17,-1
  467. 458 006a AF81 ldd r26,Y+7
  468. 459 006c B885 ldd r27,Y+8
  469. 460 006e 9896 adiw r26,40
  470. 461 0070 BE83 std Y+6,r27
  471. 462 0072 AD83 std Y+5,r26
  472. 463 .L16:
  473. 464 0074 D801 movw r26,r16
  474. 465 0076 8D90 ld r8,X+
  475. 466 0078 9D90 ld r9,X+
  476. 467 007a AD90 ld r10,X+
  477. 468 007c BD90 ld r11,X+
  478. 469 007e 8D01 movw r16,r26
  479. 470 0080 8114 cp r8,__zero_reg__
  480. 471 0082 9104 cpc r9,__zero_reg__
  481. 472 0084 A104 cpc r10,__zero_reg__
  482. 473 0086 B104 cpc r11,__zero_reg__
  483. 474 0088 01F4 brne .+2
  484. 475 008a 00C0 rjmp .L19
  485. 476 008c BFE0 ldi r27,15
  486. 477 008e FB22 and r15,r27
  487. 478 0090 EF81 ldd r30,Y+7
  488. 479 0092 F885 ldd r31,Y+8
  489. 480 0094 208D ldd r18,Z+24
  490. 481 0096 318D ldd r19,Z+25
  491. 482 0098 40E0 ldi r20,0
  492. 483 009a 50E0 ldi r21,0
  493. 484 009c 6981 ldd r22,Y+1
  494. 485 009e 7A81 ldd r23,Y+2
  495. 486 00a0 8B81 ldd r24,Y+3
  496. 487 00a2 9C81 ldd r25,Y+4
  497. 488 00a4 0E94 0000 call __udivmodsi4
  498. 489 00a8 2B01 movw r4,r22
  499. 490 00aa 3C01 movw r6,r24
  500. 491 00ac BA01 movw r22,r20
  501. 492 00ae A901 movw r20,r18
  502. 493 00b0 480D add r20,r8
  503. 494 00b2 591D adc r21,r9
  504. 495 00b4 6A1D adc r22,r10
  505. 496 00b6 7B1D adc r23,r11
  506. 497 00b8 C101 movw r24,r2
  507. 498 00ba 0E94 0000 call PhatSectorLoad
  508. 499 00be 97FD sbrc r25,7
  509. 500 00c0 00C0 rjmp .L20
  510. 501 00c2 2AE0 ldi r18,lo8(10)
  511. 502 00c4 289F mul r18,r24
  512. 503 00c6 F001 movw r30,r0
  513. 504 00c8 299F mul r18,r25
  514. 505 00ca F00D add r31,r0
  515. 506 00cc 1124 clr __zero_reg__
  516. 507 00ce AF81 ldd r26,Y+7
  517. 508 00d0 B885 ldd r27,Y+8
  518. 509 00d2 EA0F add r30,r26
  519. 510 00d4 FB1F adc r31,r27
  520. 511 00d6 A285 ldd r26,Z+10
  521. 512 00d8 B385 ldd r27,Z+11
  522. 513 00da A40D add r26,r4
  523. GAS LISTING /tmp/cc4OuBMn.s page 10
  524. 514 00dc B51D adc r27,r5
  525. 515 00de CC92 st X,r12
  526. 516 00e0 A285 ldd r26,Z+10
  527. 517 00e2 B385 ldd r27,Z+11
  528. 518 00e4 A40D add r26,r4
  529. 519 00e6 B51D adc r27,r5
  530. 520 00e8 1196 adiw r26,1
  531. 521 00ea DC92 st X,r13
  532. 522 00ec A285 ldd r26,Z+10
  533. 523 00ee B385 ldd r27,Z+11
  534. 524 00f0 A40D add r26,r4
  535. 525 00f2 B51D adc r27,r5
  536. 526 00f4 1296 adiw r26,2
  537. 527 00f6 EC92 st X,r14
  538. 528 00f8 2285 ldd r18,Z+10
  539. 529 00fa 3385 ldd r19,Z+11
  540. 530 00fc D901 movw r26,r18
  541. 531 00fe A40D add r26,r4
  542. 532 0100 B51D adc r27,r5
  543. 533 0102 1396 adiw r26,3
  544. 534 0104 FC92 st X,r15
  545. 535 0106 21E0 ldi r18,lo8(1)
  546. 536 0108 30E0 ldi r19,0
  547. 537 010a 318B std Z+17,r19
  548. 538 010c 208B std Z+16,r18
  549. 539 010e BC01 movw r22,r24
  550. 540 0110 C101 movw r24,r2
  551. 541 0112 0E94 0000 call PhatSectorBufferRelease
  552. 542 0116 8D81 ldd r24,Y+5
  553. 543 0118 9E81 ldd r25,Y+6
  554. 544 011a 0817 cp r16,r24
  555. 545 011c 1907 cpc r17,r25
  556. 546 011e 01F0 breq .+2
  557. 547 0120 00C0 rjmp .L16
  558. 548 .L19:
  559. 549 0122 80E0 ldi r24,0
  560. 550 0124 90E0 ldi r25,0
  561. 551 0126 00C0 rjmp .L17
  562. 552 .L20:
  563. 553 0128 8FEF ldi r24,lo8(-1)
  564. 554 012a 9FEF ldi r25,lo8(-1)
  565. 555 .L17:
  566. 556 /* epilogue start */
  567. 557 012c 2896 adiw r28,8
  568. 558 012e 0FB6 in __tmp_reg__,__SREG__
  569. 559 0130 F894 cli
  570. 560 0132 DEBF out __SP_H__,r29
  571. 561 0134 0FBE out __SREG__,__tmp_reg__
  572. 562 0136 CDBF out __SP_L__,r28
  573. 563 0138 DF91 pop r29
  574. 564 013a CF91 pop r28
  575. 565 013c 1F91 pop r17
  576. 566 013e 0F91 pop r16
  577. 567 0140 FF90 pop r15
  578. 568 0142 EF90 pop r14
  579. 569 0144 DF90 pop r13
  580. 570 0146 CF90 pop r12
  581. GAS LISTING /tmp/cc4OuBMn.s page 11
  582. 571 0148 BF90 pop r11
  583. 572 014a AF90 pop r10
  584. 573 014c 9F90 pop r9
  585. 574 014e 8F90 pop r8
  586. 575 0150 7F90 pop r7
  587. 576 0152 6F90 pop r6
  588. 577 0154 5F90 pop r5
  589. 578 0156 4F90 pop r4
  590. 579 0158 3F90 pop r3
  591. 580 015a 2F90 pop r2
  592. 581 015c 0895 ret
  593. 582 .size Phat32SetClusterLink, .-Phat32SetClusterLink
  594. 583 .section .text.Phat32ReleaseChain,"ax",@progbits
  595. 584 .global Phat32ReleaseChain
  596. 585 .type Phat32ReleaseChain, @function
  597. 586 Phat32ReleaseChain:
  598. 587 0000 8F92 push r8
  599. 588 0002 9F92 push r9
  600. 589 0004 AF92 push r10
  601. 590 0006 BF92 push r11
  602. 591 0008 CF92 push r12
  603. 592 000a DF92 push r13
  604. 593 000c EF92 push r14
  605. 594 000e FF92 push r15
  606. 595 0010 0F93 push r16
  607. 596 0012 1F93 push r17
  608. 597 0014 CF93 push r28
  609. 598 0016 DF93 push r29
  610. 599 0018 00D0 rcall .
  611. 600 001a 1F92 push __zero_reg__
  612. 601 001c CDB7 in r28,__SP_L__
  613. 602 001e DEB7 in r29,__SP_H__
  614. 603 /* prologue: function */
  615. 604 /* frame size = 4 */
  616. 605 /* stack size = 16 */
  617. 606 .L__stack_usage = 16
  618. 607 0020 5C01 movw r10,r24
  619. 608 0022 6A01 movw r12,r20
  620. 609 0024 7B01 movw r14,r22
  621. 610 0026 FC01 movw r30,r24
  622. 611 0028 8188 ldd r8,Z+17
  623. 612 002a 9288 ldd r9,Z+18
  624. 613 .L23:
  625. 614 002c F8EF ldi r31,-8
  626. 615 002e CF16 cp r12,r31
  627. 616 0030 FFEF ldi r31,-1
  628. 617 0032 DF06 cpc r13,r31
  629. 618 0034 EF06 cpc r14,r31
  630. 619 0036 FFE0 ldi r31,15
  631. 620 0038 FF06 cpc r15,r31
  632. 621 003a 00F4 brsh .L29
  633. 622 003c 9E01 movw r18,r28
  634. 623 003e 2F5F subi r18,-1
  635. 624 0040 3F4F sbci r19,-1
  636. 625 0042 B701 movw r22,r14
  637. 626 0044 A601 movw r20,r12
  638. 627 0046 C501 movw r24,r10
  639. GAS LISTING /tmp/cc4OuBMn.s page 12
  640. 628 0048 0E94 0000 call Phat32GetClusterLink
  641. 629 004c 892B or r24,r25
  642. 630 004e 01F0 breq .L24
  643. 631 .L27:
  644. 632 0050 8FEF ldi r24,lo8(-1)
  645. 633 0052 9FEF ldi r25,lo8(-1)
  646. 634 0054 00C0 rjmp .L25
  647. 635 .L24:
  648. 636 0056 8981 ldd r24,Y+1
  649. 637 0058 9A81 ldd r25,Y+2
  650. 638 005a AB81 ldd r26,Y+3
  651. 639 005c BC81 ldd r27,Y+4
  652. 640 005e 0297 sbiw r24,2
  653. 641 0060 A105 cpc r26,__zero_reg__
  654. 642 0062 B105 cpc r27,__zero_reg__
  655. 643 0064 00F4 brsh .L26
  656. 644 .L29:
  657. 645 0066 80E0 ldi r24,0
  658. 646 0068 90E0 ldi r25,0
  659. 647 006a 00C0 rjmp .L25
  660. 648 .L26:
  661. 649 006c 00E0 ldi r16,0
  662. 650 006e 10E0 ldi r17,0
  663. 651 0070 9801 movw r18,r16
  664. 652 0072 B701 movw r22,r14
  665. 653 0074 A601 movw r20,r12
  666. 654 0076 C501 movw r24,r10
  667. 655 0078 0E94 0000 call Phat32SetClusterLink
  668. 656 007c 892B or r24,r25
  669. 657 007e 01F4 brne .L27
  670. 658 0080 F401 movw r30,r8
  671. 659 0082 8281 ldd r24,Z+2
  672. 660 0084 9381 ldd r25,Z+3
  673. 661 0086 A481 ldd r26,Z+4
  674. 662 0088 B581 ldd r27,Z+5
  675. 663 008a 0196 adiw r24,1
  676. 664 008c A11D adc r26,__zero_reg__
  677. 665 008e B11D adc r27,__zero_reg__
  678. 666 0090 8283 std Z+2,r24
  679. 667 0092 9383 std Z+3,r25
  680. 668 0094 A483 std Z+4,r26
  681. 669 0096 B583 std Z+5,r27
  682. 670 0098 C980 ldd r12,Y+1
  683. 671 009a DA80 ldd r13,Y+2
  684. 672 009c EB80 ldd r14,Y+3
  685. 673 009e FC80 ldd r15,Y+4
  686. 674 00a0 00C0 rjmp .L23
  687. 675 .L25:
  688. 676 /* epilogue start */
  689. 677 00a2 0F90 pop __tmp_reg__
  690. 678 00a4 0F90 pop __tmp_reg__
  691. 679 00a6 0F90 pop __tmp_reg__
  692. 680 00a8 0F90 pop __tmp_reg__
  693. 681 00aa DF91 pop r29
  694. 682 00ac CF91 pop r28
  695. 683 00ae 1F91 pop r17
  696. 684 00b0 0F91 pop r16
  697. GAS LISTING /tmp/cc4OuBMn.s page 13
  698. 685 00b2 FF90 pop r15
  699. 686 00b4 EF90 pop r14
  700. 687 00b6 DF90 pop r13
  701. 688 00b8 CF90 pop r12
  702. 689 00ba BF90 pop r11
  703. 690 00bc AF90 pop r10
  704. 691 00be 9F90 pop r9
  705. 692 00c0 8F90 pop r8
  706. 693 00c2 0895 ret
  707. 694 .size Phat32ReleaseChain, .-Phat32ReleaseChain
  708. 695 .ident "GCC: (GNU) 5.3.0"
  709. GAS LISTING /tmp/cc4OuBMn.s page 14
  710. DEFINED SYMBOLS
  711. *ABS*:0000000000000000 phat32.c
  712. /tmp/cc4OuBMn.s:2 *ABS*:000000000000003e __SP_H__
  713. /tmp/cc4OuBMn.s:3 *ABS*:000000000000003d __SP_L__
  714. /tmp/cc4OuBMn.s:4 *ABS*:000000000000003f __SREG__
  715. /tmp/cc4OuBMn.s:5 *ABS*:000000000000003b __RAMPZ__
  716. /tmp/cc4OuBMn.s:6 *ABS*:0000000000000000 __tmp_reg__
  717. /tmp/cc4OuBMn.s:7 *ABS*:0000000000000001 __zero_reg__
  718. /tmp/cc4OuBMn.s:11 .text.Phat32FreeClusters:0000000000000000 Phat32FreeClusters
  719. /tmp/cc4OuBMn.s:233 .text.Phat32GetClusterLink:0000000000000000 Phat32GetClusterLink
  720. /tmp/cc4OuBMn.s:399 .text.Phat32SetClusterLink:0000000000000000 Phat32SetClusterLink
  721. /tmp/cc4OuBMn.s:586 .text.Phat32ReleaseChain:0000000000000000 Phat32ReleaseChain
  722. UNDEFINED SYMBOLS
  723. PhatSectorLoad
  724. PhatSectorBufferRelease
  725. __udivmodsi4