phatio.lst 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665
  1. GAS LISTING /tmp/cccPOPUe.s page 1
  2. 1 .file "phatio.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.PhatSectorWrite,"ax",@progbits
  10. 9 .global PhatSectorWrite
  11. 10 .type PhatSectorWrite, @function
  12. 11 PhatSectorWrite:
  13. 12 0000 2F92 push r2
  14. 13 0002 3F92 push r3
  15. 14 0004 4F92 push r4
  16. 15 0006 5F92 push r5
  17. 16 0008 6F92 push r6
  18. 17 000a 7F92 push r7
  19. 18 000c 8F92 push r8
  20. 19 000e 9F92 push r9
  21. 20 0010 AF92 push r10
  22. 21 0012 BF92 push r11
  23. 22 0014 CF92 push r12
  24. 23 0016 DF92 push r13
  25. 24 0018 EF92 push r14
  26. 25 001a FF92 push r15
  27. 26 001c 0F93 push r16
  28. 27 001e 1F93 push r17
  29. 28 0020 CF93 push r28
  30. 29 0022 DF93 push r29
  31. 30 0024 CDB7 in r28,__SP_L__
  32. 31 0026 DEB7 in r29,__SP_H__
  33. 32 0028 2A97 sbiw r28,10
  34. 33 002a 0FB6 in __tmp_reg__,__SREG__
  35. 34 002c F894 cli
  36. 35 002e DEBF out __SP_H__,r29
  37. 36 0030 0FBE out __SREG__,__tmp_reg__
  38. 37 0032 CDBF out __SP_L__,r28
  39. 38 /* prologue: function */
  40. 39 /* frame size = 10 */
  41. 40 /* stack size = 28 */
  42. 41 .L__stack_usage = 28
  43. 42 0034 2A01 movw r4,r20
  44. 43 0036 3B01 movw r6,r22
  45. 44 0038 2987 std Y+9,r18
  46. 45 003a 3A87 std Y+10,r19
  47. 46 003c DC01 movw r26,r24
  48. 47 003e 5196 adiw r26,17
  49. 48 0040 AD90 ld r10,X+
  50. 49 0042 BC90 ld r11,X
  51. 50 0044 5297 sbiw r26,17+1
  52. 51 0046 1F96 adiw r26,15
  53. 52 0048 8D90 ld r8,X+
  54. 53 004a 9C90 ld r9,X
  55. 54 004c 5097 sbiw r26,15+1
  56. 55 004e F401 movw r30,r8
  57. 56 0050 2080 ld r2,Z
  58. 57 0052 3180 ldd r3,Z+1
  59. GAS LISTING /tmp/cccPOPUe.s page 2
  60. 58 0054 E12C mov r14,__zero_reg__
  61. 59 0056 F12C mov r15,__zero_reg__
  62. 60 0058 C501 movw r24,r10
  63. 61 005a 4696 adiw r24,22
  64. 62 005c 9887 std Y+8,r25
  65. 63 005e 8F83 std Y+7,r24
  66. 64 .L2:
  67. 65 0060 0115 cp r16,__zero_reg__
  68. 66 0062 1105 cpc r17,__zero_reg__
  69. 67 0064 01F4 brne .+2
  70. 68 0066 00C0 rjmp .L12
  71. 69 0068 E114 cp r14,__zero_reg__
  72. 70 006a F104 cpc r15,__zero_reg__
  73. 71 006c 01F0 breq .+2
  74. 72 006e 00C0 rjmp .L12
  75. 73 0070 40E0 ldi r20,0
  76. 74 0072 50E0 ldi r21,0
  77. 75 0074 BA01 movw r22,r20
  78. 76 0076 8F81 ldd r24,Y+7
  79. 77 0078 9885 ldd r25,Y+8
  80. 78 007a 0E94 0000 call NutEventWait
  81. 79 007e D501 movw r26,r10
  82. 80 0080 1C96 adiw r26,12
  83. 81 0082 4D91 ld r20,X+
  84. 82 0084 5D91 ld r21,X+
  85. 83 0086 6D91 ld r22,X+
  86. 84 0088 7C91 ld r23,X
  87. 85 008a 1F97 sbiw r26,12+3
  88. 86 008c 4415 cp r20,r4
  89. 87 008e 5505 cpc r21,r5
  90. 88 0090 6605 cpc r22,r6
  91. 89 0092 7705 cpc r23,r7
  92. 90 0094 00F4 brsh .+2
  93. 91 0096 00C0 rjmp .L3
  94. 92 0098 C801 movw r24,r16
  95. 93 009a 012E mov __tmp_reg__,r17
  96. 94 009c 000C lsl r0
  97. 95 009e AA0B sbc r26,r26
  98. 96 00a0 BB0B sbc r27,r27
  99. 97 00a2 840D add r24,r4
  100. 98 00a4 951D adc r25,r5
  101. 99 00a6 A61D adc r26,r6
  102. 100 00a8 B71D adc r27,r7
  103. 101 00aa 4817 cp r20,r24
  104. 102 00ac 5907 cpc r21,r25
  105. 103 00ae 6A07 cpc r22,r26
  106. 104 00b0 7B07 cpc r23,r27
  107. 105 00b2 00F0 brlo .+2
  108. 106 00b4 00C0 rjmp .L3
  109. 107 00b6 F501 movw r30,r10
  110. 108 00b8 8289 ldd r24,Z+18
  111. 109 00ba 9389 ldd r25,Z+19
  112. 110 00bc 892B or r24,r25
  113. 111 00be 01F4 brne .L4
  114. 112 00c0 118A std Z+17,__zero_reg__
  115. 113 00c2 108A std Z+16,__zero_reg__
  116. 114 00c4 00C0 rjmp .L3
  117. GAS LISTING /tmp/cccPOPUe.s page 3
  118. 115 .L6:
  119. 116 00c6 081B sub r16,r24
  120. 117 00c8 190B sbc r17,r25
  121. 118 00ca AC01 movw r20,r24
  122. 119 00cc 092E mov __tmp_reg__,r25
  123. 120 00ce 000C lsl r0
  124. 121 00d0 660B sbc r22,r22
  125. 122 00d2 770B sbc r23,r23
  126. 123 00d4 440E add r4,r20
  127. 124 00d6 551E adc r5,r21
  128. 125 00d8 661E adc r6,r22
  129. 126 00da 771E adc r7,r23
  130. 127 00dc D501 movw r26,r10
  131. 128 00de 5896 adiw r26,24
  132. 129 00e0 4D91 ld r20,X+
  133. 130 00e2 5C91 ld r21,X
  134. 131 00e4 5997 sbiw r26,24+1
  135. 132 00e6 849F mul r24,r20
  136. 133 00e8 9001 movw r18,r0
  137. 134 00ea 859F mul r24,r21
  138. 135 00ec 300D add r19,r0
  139. 136 00ee 949F mul r25,r20
  140. 137 00f0 300D add r19,r0
  141. 138 00f2 1124 clr r1
  142. 139 00f4 C20E add r12,r18
  143. 140 00f6 D31E adc r13,r19
  144. 141 00f8 0115 cp r16,__zero_reg__
  145. 142 00fa 1105 cpc r17,__zero_reg__
  146. 143 00fc 01F0 breq .L4
  147. 144 .L7:
  148. 145 00fe 9A82 std Y+2,r9
  149. 146 0100 8982 std Y+1,r8
  150. 147 0102 4B82 std Y+3,r4
  151. 148 0104 5C82 std Y+4,r5
  152. 149 0106 6D82 std Y+5,r6
  153. 150 0108 7E82 std Y+6,r7
  154. 151 010a D101 movw r26,r2
  155. 152 010c 5596 adiw r26,21
  156. 153 010e ED91 ld r30,X+
  157. 154 0110 FC91 ld r31,X
  158. 155 0112 5697 sbiw r26,21+1
  159. 156 0114 AE01 movw r20,r28
  160. 157 0116 4F5F subi r20,-1
  161. 158 0118 5F4F sbci r21,-1
  162. 159 011a 63E0 ldi r22,lo8(3)
  163. 160 011c 72E1 ldi r23,lo8(18)
  164. 161 011e C101 movw r24,r2
  165. 162 0120 1995 eicall
  166. 163 0122 7C01 movw r14,r24
  167. 164 0124 892B or r24,r25
  168. 165 0126 01F0 breq .L5
  169. 166 0128 E5E0 ldi r30,lo8(5)
  170. 167 012a F0E0 ldi r31,0
  171. 168 012c F093 0000 sts errno+1,r31
  172. 169 0130 E093 0000 sts errno,r30
  173. 170 .L4:
  174. 171 0134 8F81 ldd r24,Y+7
  175. GAS LISTING /tmp/cccPOPUe.s page 4
  176. 172 0136 9885 ldd r25,Y+8
  177. 173 0138 0E94 0000 call NutEventPost
  178. 174 013c 00C0 rjmp .L2
  179. 175 .L3:
  180. 176 013e C984 ldd r12,Y+9
  181. 177 0140 DA84 ldd r13,Y+10
  182. 178 0142 00C0 rjmp .L7
  183. 179 .L5:
  184. 180 0144 D101 movw r26,r2
  185. 181 0146 5996 adiw r26,25
  186. 182 0148 ED91 ld r30,X+
  187. 183 014a FC91 ld r31,X
  188. 184 014c 5A97 sbiw r26,25+1
  189. 185 014e A801 movw r20,r16
  190. 186 0150 B601 movw r22,r12
  191. 187 0152 C401 movw r24,r8
  192. 188 0154 1995 eicall
  193. 189 0156 1816 cp __zero_reg__,r24
  194. 190 0158 1906 cpc __zero_reg__,r25
  195. 191 015a 04F4 brge .+2
  196. 192 015c 00C0 rjmp .L6
  197. 193 015e E5E0 ldi r30,lo8(5)
  198. 194 0160 F0E0 ldi r31,0
  199. 195 0162 F093 0000 sts errno+1,r31
  200. 196 0166 E093 0000 sts errno,r30
  201. 197 016a EE24 clr r14
  202. 198 016c EA94 dec r14
  203. 199 016e FE2C mov r15,r14
  204. 200 0170 00C0 rjmp .L4
  205. 201 .L12:
  206. 202 0172 C701 movw r24,r14
  207. 203 /* epilogue start */
  208. 204 0174 2A96 adiw r28,10
  209. 205 0176 0FB6 in __tmp_reg__,__SREG__
  210. 206 0178 F894 cli
  211. 207 017a DEBF out __SP_H__,r29
  212. 208 017c 0FBE out __SREG__,__tmp_reg__
  213. 209 017e CDBF out __SP_L__,r28
  214. 210 0180 DF91 pop r29
  215. 211 0182 CF91 pop r28
  216. 212 0184 1F91 pop r17
  217. 213 0186 0F91 pop r16
  218. 214 0188 FF90 pop r15
  219. 215 018a EF90 pop r14
  220. 216 018c DF90 pop r13
  221. 217 018e CF90 pop r12
  222. 218 0190 BF90 pop r11
  223. 219 0192 AF90 pop r10
  224. 220 0194 9F90 pop r9
  225. 221 0196 8F90 pop r8
  226. 222 0198 7F90 pop r7
  227. 223 019a 6F90 pop r6
  228. 224 019c 5F90 pop r5
  229. 225 019e 4F90 pop r4
  230. 226 01a0 3F90 pop r3
  231. 227 01a2 2F90 pop r2
  232. 228 01a4 0895 ret
  233. GAS LISTING /tmp/cccPOPUe.s page 5
  234. 229 .size PhatSectorWrite, .-PhatSectorWrite
  235. 230 .section .text.PhatSectorFlush,"ax",@progbits
  236. 231 .global PhatSectorFlush
  237. 232 .type PhatSectorFlush, @function
  238. 233 PhatSectorFlush:
  239. 234 0000 7F92 push r7
  240. 235 0002 8F92 push r8
  241. 236 0004 9F92 push r9
  242. 237 0006 AF92 push r10
  243. 238 0008 BF92 push r11
  244. 239 000a CF92 push r12
  245. 240 000c DF92 push r13
  246. 241 000e EF92 push r14
  247. 242 0010 FF92 push r15
  248. 243 0012 0F93 push r16
  249. 244 0014 1F93 push r17
  250. 245 0016 CF93 push r28
  251. 246 0018 DF93 push r29
  252. 247 001a 00D0 rcall .
  253. 248 001c 00D0 rcall .
  254. 249 001e CDB7 in r28,__SP_L__
  255. 250 0020 DEB7 in r29,__SP_H__
  256. 251 /* prologue: function */
  257. 252 /* frame size = 6 */
  258. 253 /* stack size = 19 */
  259. 254 .L__stack_usage = 19
  260. 255 0022 DC01 movw r26,r24
  261. 256 0024 5196 adiw r26,17
  262. 257 0026 8D90 ld r8,X+
  263. 258 0028 9C90 ld r9,X
  264. 259 002a 5297 sbiw r26,17+1
  265. 260 002c 1F96 adiw r26,15
  266. 261 002e CD90 ld r12,X+
  267. 262 0030 DC90 ld r13,X
  268. 263 0032 5097 sbiw r26,15+1
  269. 264 0034 F601 movw r30,r12
  270. 265 0036 A080 ld r10,Z
  271. 266 0038 B180 ldd r11,Z+1
  272. 267 003a 8B01 movw r16,r22
  273. 268 003c 77FF sbrs r23,7
  274. 269 003e 00C0 rjmp .L15
  275. 270 0040 00E0 ldi r16,0
  276. 271 0042 10E0 ldi r17,0
  277. 272 .L15:
  278. 273 0044 8AE0 ldi r24,lo8(10)
  279. 274 0046 782E mov r7,r24
  280. 275 0048 709E mul r7,r16
  281. 276 004a 7001 movw r14,r0
  282. 277 004c 719E mul r7,r17
  283. 278 004e F00C add r15,r0
  284. 279 0050 1124 clr __zero_reg__
  285. 280 0052 E80C add r14,r8
  286. 281 0054 F91C adc r15,r9
  287. 282 0056 D701 movw r26,r14
  288. 283 0058 5096 adiw r26,16
  289. 284 005a 8D91 ld r24,X+
  290. 285 005c 9C91 ld r25,X
  291. GAS LISTING /tmp/cccPOPUe.s page 6
  292. 286 005e 5197 sbiw r26,16+1
  293. 287 0060 892B or r24,r25
  294. 288 0062 01F0 breq .L16
  295. 289 0064 DA82 std Y+2,r13
  296. 290 0066 C982 std Y+1,r12
  297. 291 0068 1C96 adiw r26,12
  298. 292 006a 8D91 ld r24,X+
  299. 293 006c 9D91 ld r25,X+
  300. 294 006e 0D90 ld __tmp_reg__,X+
  301. 295 0070 BC91 ld r27,X
  302. 296 0072 A02D mov r26,__tmp_reg__
  303. 297 0074 8B83 std Y+3,r24
  304. 298 0076 9C83 std Y+4,r25
  305. 299 0078 AD83 std Y+5,r26
  306. 300 007a BE83 std Y+6,r27
  307. 301 007c D501 movw r26,r10
  308. 302 007e 5596 adiw r26,21
  309. 303 0080 ED91 ld r30,X+
  310. 304 0082 FC91 ld r31,X
  311. 305 0084 5697 sbiw r26,21+1
  312. 306 0086 AE01 movw r20,r28
  313. 307 0088 4F5F subi r20,-1
  314. 308 008a 5F4F sbci r21,-1
  315. 309 008c 63E0 ldi r22,lo8(3)
  316. 310 008e 72E1 ldi r23,lo8(18)
  317. 311 0090 C501 movw r24,r10
  318. 312 0092 1995 eicall
  319. 313 0094 892B or r24,r25
  320. 314 0096 01F0 breq .L17
  321. 315 .L19:
  322. 316 0098 85E0 ldi r24,lo8(5)
  323. 317 009a 90E0 ldi r25,0
  324. 318 009c 9093 0000 sts errno+1,r25
  325. 319 00a0 8093 0000 sts errno,r24
  326. 320 00a4 8FEF ldi r24,lo8(-1)
  327. 321 00a6 9FEF ldi r25,lo8(-1)
  328. 322 00a8 00C0 rjmp .L18
  329. 323 .L17:
  330. 324 00aa 0F5F subi r16,-1
  331. 325 00ac 1F4F sbci r17,-1
  332. 326 00ae 709E mul r7,r16
  333. 327 00b0 F001 movw r30,r0
  334. 328 00b2 719E mul r7,r17
  335. 329 00b4 F00D add r31,r0
  336. 330 00b6 1124 clr __zero_reg__
  337. 331 00b8 E80D add r30,r8
  338. 332 00ba F91D adc r31,r9
  339. 333 00bc 6081 ld r22,Z
  340. 334 00be 7181 ldd r23,Z+1
  341. 335 00c0 D501 movw r26,r10
  342. 336 00c2 5996 adiw r26,25
  343. 337 00c4 ED91 ld r30,X+
  344. 338 00c6 FC91 ld r31,X
  345. 339 00c8 5A97 sbiw r26,25+1
  346. 340 00ca 41E0 ldi r20,lo8(1)
  347. 341 00cc 50E0 ldi r21,0
  348. 342 00ce C601 movw r24,r12
  349. GAS LISTING /tmp/cccPOPUe.s page 7
  350. 343 00d0 1995 eicall
  351. 344 00d2 0197 sbiw r24,1
  352. 345 00d4 01F4 brne .L19
  353. 346 00d6 F701 movw r30,r14
  354. 347 00d8 118A std Z+17,__zero_reg__
  355. 348 00da 108A std Z+16,__zero_reg__
  356. 349 .L16:
  357. 350 00dc 80E0 ldi r24,0
  358. 351 00de 90E0 ldi r25,0
  359. 352 .L18:
  360. 353 /* epilogue start */
  361. 354 00e0 2696 adiw r28,6
  362. 355 00e2 0FB6 in __tmp_reg__,__SREG__
  363. 356 00e4 F894 cli
  364. 357 00e6 DEBF out __SP_H__,r29
  365. 358 00e8 0FBE out __SREG__,__tmp_reg__
  366. 359 00ea CDBF out __SP_L__,r28
  367. 360 00ec DF91 pop r29
  368. 361 00ee CF91 pop r28
  369. 362 00f0 1F91 pop r17
  370. 363 00f2 0F91 pop r16
  371. 364 00f4 FF90 pop r15
  372. 365 00f6 EF90 pop r14
  373. 366 00f8 DF90 pop r13
  374. 367 00fa CF90 pop r12
  375. 368 00fc BF90 pop r11
  376. 369 00fe AF90 pop r10
  377. 370 0100 9F90 pop r9
  378. 371 0102 8F90 pop r8
  379. 372 0104 7F90 pop r7
  380. 373 0106 0895 ret
  381. 374 .size PhatSectorFlush, .-PhatSectorFlush
  382. 375 .section .text.PhatSectorRead,"ax",@progbits
  383. 376 .global PhatSectorRead
  384. 377 .type PhatSectorRead, @function
  385. 378 PhatSectorRead:
  386. 379 0000 AF92 push r10
  387. 380 0002 BF92 push r11
  388. 381 0004 CF92 push r12
  389. 382 0006 DF92 push r13
  390. 383 0008 EF92 push r14
  391. 384 000a FF92 push r15
  392. 385 000c 0F93 push r16
  393. 386 000e 1F93 push r17
  394. 387 0010 CF93 push r28
  395. 388 0012 DF93 push r29
  396. 389 0014 00D0 rcall .
  397. 390 0016 00D0 rcall .
  398. 391 0018 CDB7 in r28,__SP_L__
  399. 392 001a DEB7 in r29,__SP_H__
  400. 393 /* prologue: function */
  401. 394 /* frame size = 6 */
  402. 395 /* stack size = 16 */
  403. 396 .L__stack_usage = 16
  404. 397 001c 7C01 movw r14,r24
  405. 398 001e 5901 movw r10,r18
  406. 399 0020 DC01 movw r26,r24
  407. GAS LISTING /tmp/cccPOPUe.s page 8
  408. 400 0022 CD90 ld r12,X+
  409. 401 0024 DC90 ld r13,X
  410. 402 0026 9A83 std Y+2,r25
  411. 403 0028 8983 std Y+1,r24
  412. 404 002a 4B83 std Y+3,r20
  413. 405 002c 5C83 std Y+4,r21
  414. 406 002e 6D83 std Y+5,r22
  415. 407 0030 7E83 std Y+6,r23
  416. 408 0032 D601 movw r26,r12
  417. 409 0034 5596 adiw r26,21
  418. 410 0036 ED91 ld r30,X+
  419. 411 0038 FC91 ld r31,X
  420. 412 003a 5697 sbiw r26,21+1
  421. 413 003c AE01 movw r20,r28
  422. 414 003e 4F5F subi r20,-1
  423. 415 0040 5F4F sbci r21,-1
  424. 416 0042 63E0 ldi r22,lo8(3)
  425. 417 0044 72E1 ldi r23,lo8(18)
  426. 418 0046 C601 movw r24,r12
  427. 419 0048 1995 eicall
  428. 420 004a 8C01 movw r16,r24
  429. 421 004c 892B or r24,r25
  430. 422 004e 01F0 breq .L24
  431. 423 .L26:
  432. 424 0050 85E0 ldi r24,lo8(5)
  433. 425 0052 90E0 ldi r25,0
  434. 426 0054 9093 0000 sts errno+1,r25
  435. 427 0058 8093 0000 sts errno,r24
  436. 428 005c 0FEF ldi r16,lo8(-1)
  437. 429 005e 1FEF ldi r17,lo8(-1)
  438. 430 0060 00C0 rjmp .L25
  439. 431 .L24:
  440. 432 0062 D601 movw r26,r12
  441. 433 0064 5796 adiw r26,23
  442. 434 0066 ED91 ld r30,X+
  443. 435 0068 FC91 ld r31,X
  444. 436 006a 5897 sbiw r26,23+1
  445. 437 006c 41E0 ldi r20,lo8(1)
  446. 438 006e 50E0 ldi r21,0
  447. 439 0070 B501 movw r22,r10
  448. 440 0072 C701 movw r24,r14
  449. 441 0074 1995 eicall
  450. 442 0076 0197 sbiw r24,1
  451. 443 0078 01F4 brne .L26
  452. 444 .L25:
  453. 445 007a C801 movw r24,r16
  454. 446 /* epilogue start */
  455. 447 007c 2696 adiw r28,6
  456. 448 007e 0FB6 in __tmp_reg__,__SREG__
  457. 449 0080 F894 cli
  458. 450 0082 DEBF out __SP_H__,r29
  459. 451 0084 0FBE out __SREG__,__tmp_reg__
  460. 452 0086 CDBF out __SP_L__,r28
  461. 453 0088 DF91 pop r29
  462. 454 008a CF91 pop r28
  463. 455 008c 1F91 pop r17
  464. 456 008e 0F91 pop r16
  465. GAS LISTING /tmp/cccPOPUe.s page 9
  466. 457 0090 FF90 pop r15
  467. 458 0092 EF90 pop r14
  468. 459 0094 DF90 pop r13
  469. 460 0096 CF90 pop r12
  470. 461 0098 BF90 pop r11
  471. 462 009a AF90 pop r10
  472. 463 009c 0895 ret
  473. 464 .size PhatSectorRead, .-PhatSectorRead
  474. 465 .section .text.PhatSectorLoad,"ax",@progbits
  475. 466 .global PhatSectorLoad
  476. 467 .type PhatSectorLoad, @function
  477. 468 PhatSectorLoad:
  478. 469 0000 8F92 push r8
  479. 470 0002 9F92 push r9
  480. 471 0004 AF92 push r10
  481. 472 0006 BF92 push r11
  482. 473 0008 EF92 push r14
  483. 474 000a FF92 push r15
  484. 475 000c 0F93 push r16
  485. 476 000e 1F93 push r17
  486. 477 0010 CF93 push r28
  487. 478 0012 DF93 push r29
  488. 479 /* prologue: function */
  489. 480 /* frame size = 0 */
  490. 481 /* stack size = 10 */
  491. 482 .L__stack_usage = 10
  492. 483 0014 7C01 movw r14,r24
  493. 484 0016 4A01 movw r8,r20
  494. 485 0018 5B01 movw r10,r22
  495. 486 001a FC01 movw r30,r24
  496. 487 001c C189 ldd r28,Z+17
  497. 488 001e D289 ldd r29,Z+18
  498. 489 0020 8E01 movw r16,r28
  499. 490 0022 0A5E subi r16,-22
  500. 491 0024 1F4F sbci r17,-1
  501. 492 .L31:
  502. 493 0026 40E0 ldi r20,0
  503. 494 0028 50E0 ldi r21,0
  504. 495 002a BA01 movw r22,r20
  505. 496 002c C801 movw r24,r16
  506. 497 002e 0E94 0000 call NutEventWait
  507. 498 0032 4C85 ldd r20,Y+12
  508. 499 0034 5D85 ldd r21,Y+13
  509. 500 0036 6E85 ldd r22,Y+14
  510. 501 0038 7F85 ldd r23,Y+15
  511. 502 003a 8A89 ldd r24,Y+18
  512. 503 003c 9B89 ldd r25,Y+19
  513. 504 003e 4815 cp r20,r8
  514. 505 0040 5905 cpc r21,r9
  515. 506 0042 6A05 cpc r22,r10
  516. 507 0044 7B05 cpc r23,r11
  517. 508 0046 01F4 brne .L28
  518. 509 0048 0196 adiw r24,1
  519. 510 004a 9B8B std Y+19,r25
  520. 511 004c 8A8B std Y+18,r24
  521. 512 004e C801 movw r24,r16
  522. 513 0050 0E94 0000 call NutEventPost
  523. GAS LISTING /tmp/cccPOPUe.s page 10
  524. 514 0054 C0E0 ldi r28,0
  525. 515 0056 D0E0 ldi r29,0
  526. 516 0058 00C0 rjmp .L29
  527. 517 .L28:
  528. 518 005a 892B or r24,r25
  529. 519 005c 01F0 breq .L30
  530. 520 005e C801 movw r24,r16
  531. 521 0060 0E94 0000 call NutEventPost
  532. 522 0064 61E0 ldi r22,lo8(1)
  533. 523 0066 70E0 ldi r23,0
  534. 524 0068 80E0 ldi r24,0
  535. 525 006a 90E0 ldi r25,0
  536. 526 006c 0E94 0000 call NutSleep
  537. 527 0070 00C0 rjmp .L31
  538. 528 .L30:
  539. 529 0072 60E0 ldi r22,0
  540. 530 0074 70E0 ldi r23,0
  541. 531 0076 C701 movw r24,r14
  542. 532 0078 0E94 0000 call PhatSectorFlush
  543. 533 007c 892B or r24,r25
  544. 534 007e 01F0 breq .L32
  545. 535 .L34:
  546. 536 0080 CFEF ldi r28,lo8(-1)
  547. 537 0082 DFEF ldi r29,lo8(-1)
  548. 538 0084 00C0 rjmp .L33
  549. 539 .L32:
  550. 540 0086 2A85 ldd r18,Y+10
  551. 541 0088 3B85 ldd r19,Y+11
  552. 542 008a B501 movw r22,r10
  553. 543 008c A401 movw r20,r8
  554. 544 008e F701 movw r30,r14
  555. 545 0090 8785 ldd r24,Z+15
  556. 546 0092 9089 ldd r25,Z+16
  557. 547 0094 0E94 0000 call PhatSectorRead
  558. 548 0098 892B or r24,r25
  559. 549 009a 01F4 brne .L34
  560. 550 009c 8C86 std Y+12,r8
  561. 551 009e 9D86 std Y+13,r9
  562. 552 00a0 AE86 std Y+14,r10
  563. 553 00a2 BF86 std Y+15,r11
  564. 554 00a4 8A89 ldd r24,Y+18
  565. 555 00a6 9B89 ldd r25,Y+19
  566. 556 00a8 0196 adiw r24,1
  567. 557 00aa 9B8B std Y+19,r25
  568. 558 00ac 8A8B std Y+18,r24
  569. 559 00ae C0E0 ldi r28,0
  570. 560 00b0 D0E0 ldi r29,0
  571. 561 .L33:
  572. 562 00b2 C801 movw r24,r16
  573. 563 00b4 0E94 0000 call NutEventPost
  574. 564 .L29:
  575. 565 00b8 CE01 movw r24,r28
  576. 566 /* epilogue start */
  577. 567 00ba DF91 pop r29
  578. 568 00bc CF91 pop r28
  579. 569 00be 1F91 pop r17
  580. 570 00c0 0F91 pop r16
  581. GAS LISTING /tmp/cccPOPUe.s page 11
  582. 571 00c2 FF90 pop r15
  583. 572 00c4 EF90 pop r14
  584. 573 00c6 BF90 pop r11
  585. 574 00c8 AF90 pop r10
  586. 575 00ca 9F90 pop r9
  587. 576 00cc 8F90 pop r8
  588. 577 00ce 0895 ret
  589. 578 .size PhatSectorLoad, .-PhatSectorLoad
  590. 579 .section .text.PhatSectorBufferRelease,"ax",@progbits
  591. 580 .global PhatSectorBufferRelease
  592. 581 .type PhatSectorBufferRelease, @function
  593. 582 PhatSectorBufferRelease:
  594. 583 /* prologue: function */
  595. 584 /* frame size = 0 */
  596. 585 /* stack size = 0 */
  597. 586 .L__stack_usage = 0
  598. 587 0000 DC01 movw r26,r24
  599. 588 0002 5196 adiw r26,17
  600. 589 0004 ED91 ld r30,X+
  601. 590 0006 FC91 ld r31,X
  602. 591 0008 5297 sbiw r26,17+1
  603. 592 000a 2AE0 ldi r18,lo8(10)
  604. 593 000c 269F mul r18,r22
  605. 594 000e C001 movw r24,r0
  606. 595 0010 279F mul r18,r23
  607. 596 0012 900D add r25,r0
  608. 597 0014 1124 clr __zero_reg__
  609. 598 0016 E80F add r30,r24
  610. 599 0018 F91F adc r31,r25
  611. 600 001a 8289 ldd r24,Z+18
  612. 601 001c 9389 ldd r25,Z+19
  613. 602 001e 0097 sbiw r24,0
  614. 603 0020 01F0 breq .L35
  615. 604 0022 0197 sbiw r24,1
  616. 605 0024 938B std Z+19,r25
  617. 606 0026 828B std Z+18,r24
  618. 607 .L35:
  619. 608 0028 0895 ret
  620. 609 .size PhatSectorBufferRelease, .-PhatSectorBufferRelease
  621. 610 .ident "GCC: (GNU) 5.3.0"
  622. GAS LISTING /tmp/cccPOPUe.s page 12
  623. DEFINED SYMBOLS
  624. *ABS*:0000000000000000 phatio.c
  625. /tmp/cccPOPUe.s:2 *ABS*:000000000000003e __SP_H__
  626. /tmp/cccPOPUe.s:3 *ABS*:000000000000003d __SP_L__
  627. /tmp/cccPOPUe.s:4 *ABS*:000000000000003f __SREG__
  628. /tmp/cccPOPUe.s:5 *ABS*:000000000000003b __RAMPZ__
  629. /tmp/cccPOPUe.s:6 *ABS*:0000000000000000 __tmp_reg__
  630. /tmp/cccPOPUe.s:7 *ABS*:0000000000000001 __zero_reg__
  631. /tmp/cccPOPUe.s:11 .text.PhatSectorWrite:0000000000000000 PhatSectorWrite
  632. /tmp/cccPOPUe.s:233 .text.PhatSectorFlush:0000000000000000 PhatSectorFlush
  633. /tmp/cccPOPUe.s:378 .text.PhatSectorRead:0000000000000000 PhatSectorRead
  634. /tmp/cccPOPUe.s:468 .text.PhatSectorLoad:0000000000000000 PhatSectorLoad
  635. /tmp/cccPOPUe.s:582 .text.PhatSectorBufferRelease:0000000000000000 PhatSectorBufferRelease
  636. UNDEFINED SYMBOLS
  637. NutEventWait
  638. errno
  639. NutEventPost
  640. NutSleep