mmcard.lst 57 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726
  1. GAS LISTING /tmp/ccan3UjN.s page 1
  2. 1 .file "mmcard.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.MmCardTxCmd,"ax",@progbits
  10. 9 .type MmCardTxCmd, @function
  11. 10 MmCardTxCmd:
  12. 11 0000 BF92 push r11
  13. 12 0002 CF92 push r12
  14. 13 0004 DF92 push r13
  15. 14 0006 EF92 push r14
  16. 15 0008 FF92 push r15
  17. 16 000a 0F93 push r16
  18. 17 000c 1F93 push r17
  19. 18 000e CF93 push r28
  20. 19 0010 DF93 push r29
  21. 20 /* prologue: function */
  22. 21 /* frame size = 0 */
  23. 22 /* stack size = 9 */
  24. 23 .L__stack_usage = 9
  25. 24 0012 EC01 movw r28,r24
  26. 25 0014 F62E mov r15,r22
  27. 26 0016 E22E mov r14,r18
  28. 27 0018 D32E mov r13,r19
  29. 28 001a C42E mov r12,r20
  30. 29 001c B52E mov r11,r21
  31. 30 001e EC81 ldd r30,Y+4
  32. 31 0020 FD81 ldd r31,Y+5
  33. 32 0022 81E0 ldi r24,lo8(1)
  34. 33 0024 90E0 ldi r25,0
  35. 34 0026 1995 eicall
  36. 35 0028 00E0 ldi r16,0
  37. 36 002a 14E0 ldi r17,lo8(4)
  38. 37 .L2:
  39. 38 002c EA81 ldd r30,Y+2
  40. 39 002e FB81 ldd r31,Y+3
  41. 40 0030 8FEF ldi r24,lo8(-1)
  42. 41 0032 1995 eicall
  43. 42 0034 8F3F cpi r24,lo8(-1)
  44. 43 0036 01F0 breq .L3
  45. 44 0038 0150 subi r16,1
  46. 45 003a 1109 sbc r17,__zero_reg__
  47. 46 003c 01F0 breq .L3
  48. 47 003e 0F3F cpi r16,-1
  49. 48 0040 1105 cpc r17,__zero_reg__
  50. 49 0042 01F0 breq .+2
  51. 50 0044 00F4 brsh .L2
  52. 51 0046 61E0 ldi r22,lo8(1)
  53. 52 0048 70E0 ldi r23,0
  54. 53 004a 80E0 ldi r24,0
  55. 54 004c 90E0 ldi r25,0
  56. 55 004e 0E94 0000 call NutSleep
  57. 56 0052 00C0 rjmp .L2
  58. 57 .L3:
  59. GAS LISTING /tmp/ccan3UjN.s page 2
  60. 58 0054 EA81 ldd r30,Y+2
  61. 59 0056 FB81 ldd r31,Y+3
  62. 60 0058 8F2D mov r24,r15
  63. 61 005a 8064 ori r24,lo8(64)
  64. 62 005c 1995 eicall
  65. 63 005e EA81 ldd r30,Y+2
  66. 64 0060 FB81 ldd r31,Y+3
  67. 65 0062 8B2D mov r24,r11
  68. 66 0064 1995 eicall
  69. 67 0066 EA81 ldd r30,Y+2
  70. 68 0068 FB81 ldd r31,Y+3
  71. 69 006a 8C2D mov r24,r12
  72. 70 006c 1995 eicall
  73. 71 006e EA81 ldd r30,Y+2
  74. 72 0070 FB81 ldd r31,Y+3
  75. 73 0072 8D2D mov r24,r13
  76. 74 0074 1995 eicall
  77. 75 0076 EA81 ldd r30,Y+2
  78. 76 0078 FB81 ldd r31,Y+3
  79. 77 007a 8E2D mov r24,r14
  80. 78 007c 1995 eicall
  81. 79 007e EA81 ldd r30,Y+2
  82. 80 0080 FB81 ldd r31,Y+3
  83. 81 0082 88E0 ldi r24,lo8(8)
  84. 82 0084 F812 cpse r15,r24
  85. 83 0086 00C0 rjmp .L6
  86. 84 0088 87E8 ldi r24,lo8(-121)
  87. 85 008a 00C0 rjmp .L10
  88. 86 .L6:
  89. 87 008c 85E9 ldi r24,lo8(-107)
  90. 88 .L10:
  91. 89 /* epilogue start */
  92. 90 008e DF91 pop r29
  93. 91 0090 CF91 pop r28
  94. 92 0092 1F91 pop r17
  95. 93 0094 0F91 pop r16
  96. 94 0096 FF90 pop r15
  97. 95 0098 EF90 pop r14
  98. 96 009a DF90 pop r13
  99. 97 009c CF90 pop r12
  100. 98 009e BF90 pop r11
  101. 99 00a0 1994 eijmp
  102. 100 .size MmCardTxCmd, .-MmCardTxCmd
  103. 101 .section .text.MmCardRxR1.isra.0,"ax",@progbits
  104. 102 .type MmCardRxR1.isra.0, @function
  105. 103 MmCardRxR1.isra.0:
  106. 104 0000 0F93 push r16
  107. 105 0002 1F93 push r17
  108. 106 0004 CF93 push r28
  109. 107 0006 DF93 push r29
  110. 108 /* prologue: function */
  111. 109 /* frame size = 0 */
  112. 110 /* stack size = 4 */
  113. 111 .L__stack_usage = 4
  114. 112 0008 8C01 movw r16,r24
  115. 113 000a C0E0 ldi r28,0
  116. 114 000c D4E0 ldi r29,lo8(4)
  117. GAS LISTING /tmp/ccan3UjN.s page 3
  118. 115 .L14:
  119. 116 000e D801 movw r26,r16
  120. 117 0010 ED91 ld r30,X+
  121. 118 0012 FC91 ld r31,X
  122. 119 0014 8FEF ldi r24,lo8(-1)
  123. 120 0016 1995 eicall
  124. 121 0018 8F3F cpi r24,lo8(-1)
  125. 122 001a 01F4 brne .L13
  126. 123 001c 2197 sbiw r28,1
  127. 124 001e 01F4 brne .L14
  128. 125 .L13:
  129. 126 /* epilogue start */
  130. 127 0020 DF91 pop r29
  131. 128 0022 CF91 pop r28
  132. 129 0024 1F91 pop r17
  133. 130 0026 0F91 pop r16
  134. 131 0028 0895 ret
  135. 132 .size MmCardRxR1.isra.0, .-MmCardRxR1.isra.0
  136. 133 .section .text.MmCardReset,"ax",@progbits
  137. 134 .type MmCardReset, @function
  138. 135 MmCardReset:
  139. 136 0000 BF92 push r11
  140. 137 0002 CF92 push r12
  141. 138 0004 DF92 push r13
  142. 139 0006 EF92 push r14
  143. 140 0008 FF92 push r15
  144. 141 000a 0F93 push r16
  145. 142 000c 1F93 push r17
  146. 143 000e CF93 push r28
  147. 144 0010 DF93 push r29
  148. 145 /* prologue: function */
  149. 146 /* frame size = 0 */
  150. 147 /* stack size = 9 */
  151. 148 .L__stack_usage = 9
  152. 149 0012 EC01 movw r28,r24
  153. 150 0014 E881 ld r30,Y
  154. 151 0016 F981 ldd r31,Y+1
  155. 152 0018 1995 eicall
  156. 153 001a 8C01 movw r16,r24
  157. 154 001c 892B or r24,r25
  158. 155 001e 01F0 breq .L17
  159. 156 .L21:
  160. 157 0020 0FEF ldi r16,lo8(-1)
  161. 158 0022 1FEF ldi r17,lo8(-1)
  162. 159 0024 00C0 rjmp .L18
  163. 160 .L17:
  164. 161 0026 EC81 ldd r30,Y+4
  165. 162 0028 FD81 ldd r31,Y+5
  166. 163 002a 80E0 ldi r24,0
  167. 164 002c 90E0 ldi r25,0
  168. 165 002e 1995 eicall
  169. 166 0030 9AE0 ldi r25,lo8(10)
  170. 167 0032 E92E mov r14,r25
  171. 168 0034 F12C mov r15,__zero_reg__
  172. 169 .L19:
  173. 170 0036 EA81 ldd r30,Y+2
  174. 171 0038 FB81 ldd r31,Y+3
  175. GAS LISTING /tmp/ccan3UjN.s page 4
  176. 172 003a 8FEF ldi r24,lo8(-1)
  177. 173 003c 1995 eicall
  178. 174 003e 81E0 ldi r24,1
  179. 175 0040 E81A sub r14,r24
  180. 176 0042 F108 sbc r15,__zero_reg__
  181. 177 0044 01F4 brne .L19
  182. 178 0046 EE24 clr r14
  183. 179 0048 EA94 dec r14
  184. 180 004a F12C mov r15,__zero_reg__
  185. 181 004c 6E01 movw r12,r28
  186. 182 004e 82E0 ldi r24,2
  187. 183 0050 C80E add r12,r24
  188. 184 0052 D11C adc r13,__zero_reg__
  189. 185 .L20:
  190. 186 0054 20E0 ldi r18,0
  191. 187 0056 30E0 ldi r19,0
  192. 188 0058 A901 movw r20,r18
  193. 189 005a 60E0 ldi r22,0
  194. 190 005c CE01 movw r24,r28
  195. 191 005e 0E94 0000 call MmCardTxCmd
  196. 192 0062 C601 movw r24,r12
  197. 193 0064 0E94 0000 call MmCardRxR1.isra.0
  198. 194 0068 B82E mov r11,r24
  199. 195 006a EC81 ldd r30,Y+4
  200. 196 006c FD81 ldd r31,Y+5
  201. 197 006e 80E0 ldi r24,0
  202. 198 0070 90E0 ldi r25,0
  203. 199 0072 1995 eicall
  204. 200 0074 81E0 ldi r24,lo8(1)
  205. 201 0076 8B15 cp r24,r11
  206. 202 0078 00F4 brsh .L18
  207. 203 007a 81E0 ldi r24,1
  208. 204 007c E81A sub r14,r24
  209. 205 007e F108 sbc r15,__zero_reg__
  210. 206 0080 01F4 brne .L20
  211. 207 0082 00C0 rjmp .L21
  212. 208 .L18:
  213. 209 0084 C801 movw r24,r16
  214. 210 /* epilogue start */
  215. 211 0086 DF91 pop r29
  216. 212 0088 CF91 pop r28
  217. 213 008a 1F91 pop r17
  218. 214 008c 0F91 pop r16
  219. 215 008e FF90 pop r15
  220. 216 0090 EF90 pop r14
  221. 217 0092 DF90 pop r13
  222. 218 0094 CF90 pop r12
  223. 219 0096 BF90 pop r11
  224. 220 0098 0895 ret
  225. 221 .size MmCardReset, .-MmCardReset
  226. 222 .section .text.MmCardGetReg.constprop.2,"ax",@progbits
  227. 223 .type MmCardGetReg.constprop.2, @function
  228. 224 MmCardGetReg.constprop.2:
  229. 225 0000 BF92 push r11
  230. 226 0002 CF92 push r12
  231. 227 0004 DF92 push r13
  232. 228 0006 EF92 push r14
  233. GAS LISTING /tmp/ccan3UjN.s page 5
  234. 229 0008 FF92 push r15
  235. 230 000a 0F93 push r16
  236. 231 000c 1F93 push r17
  237. 232 000e CF93 push r28
  238. 233 0010 DF93 push r29
  239. 234 /* prologue: function */
  240. 235 /* frame size = 0 */
  241. 236 /* stack size = 9 */
  242. 237 .L__stack_usage = 9
  243. 238 0012 EC01 movw r28,r24
  244. 239 0014 D62E mov r13,r22
  245. 240 0016 C42E mov r12,r20
  246. 241 0018 B52E mov r11,r21
  247. 242 001a 40E0 ldi r20,0
  248. 243 001c 50E0 ldi r21,0
  249. 244 001e BA01 movw r22,r20
  250. 245 0020 80E0 ldi r24,lo8(mutex)
  251. 246 0022 90E0 ldi r25,hi8(mutex)
  252. 247 0024 0E94 0000 call NutEventWait
  253. 248 0028 01E0 ldi r16,lo8(1)
  254. 249 002a 12E0 ldi r17,lo8(2)
  255. 250 002c 7E01 movw r14,r28
  256. 251 002e 82E0 ldi r24,2
  257. 252 0030 E80E add r14,r24
  258. 253 0032 F11C adc r15,__zero_reg__
  259. 254 .L25:
  260. 255 0034 0150 subi r16,1
  261. 256 0036 1109 sbc r17,__zero_reg__
  262. 257 0038 01F0 breq .L31
  263. 258 003a 20E0 ldi r18,0
  264. 259 003c 30E0 ldi r19,0
  265. 260 003e A901 movw r20,r18
  266. 261 0040 6D2D mov r22,r13
  267. 262 0042 CE01 movw r24,r28
  268. 263 0044 0E94 0000 call MmCardTxCmd
  269. 264 0048 C701 movw r24,r14
  270. 265 004a 0E94 0000 call MmCardRxR1.isra.0
  271. 266 004e 8111 cpse r24,__zero_reg__
  272. 267 0050 00C0 rjmp .L26
  273. 268 0052 C701 movw r24,r14
  274. 269 0054 0E94 0000 call MmCardRxR1.isra.0
  275. 270 0058 8E3F cpi r24,lo8(-2)
  276. 271 005a 01F4 brne .L26
  277. 272 005c 0C2D mov r16,r12
  278. 273 005e 1B2D mov r17,r11
  279. 274 0060 7801 movw r14,r16
  280. 275 0062 E0E1 ldi r30,16
  281. 276 0064 EE0E add r14,r30
  282. 277 0066 F11C adc r15,__zero_reg__
  283. 278 .L27:
  284. 279 0068 EA81 ldd r30,Y+2
  285. 280 006a FB81 ldd r31,Y+3
  286. 281 006c 8FEF ldi r24,lo8(-1)
  287. 282 006e 1995 eicall
  288. 283 0070 F801 movw r30,r16
  289. 284 0072 8193 st Z+,r24
  290. 285 0074 8F01 movw r16,r30
  291. GAS LISTING /tmp/ccan3UjN.s page 6
  292. 286 0076 EE15 cp r30,r14
  293. 287 0078 FF05 cpc r31,r15
  294. 288 007a 01F4 brne .L27
  295. 289 007c EA81 ldd r30,Y+2
  296. 290 007e FB81 ldd r31,Y+3
  297. 291 0080 8FEF ldi r24,lo8(-1)
  298. 292 0082 1995 eicall
  299. 293 0084 EA81 ldd r30,Y+2
  300. 294 0086 FB81 ldd r31,Y+3
  301. 295 0088 8FEF ldi r24,lo8(-1)
  302. 296 008a 1995 eicall
  303. 297 008c EC81 ldd r30,Y+4
  304. 298 008e FD81 ldd r31,Y+5
  305. 299 0090 80E0 ldi r24,0
  306. 300 0092 90E0 ldi r25,0
  307. 301 0094 1995 eicall
  308. 302 0096 C0E0 ldi r28,0
  309. 303 0098 D0E0 ldi r29,0
  310. 304 009a 00C0 rjmp .L28
  311. 305 .L26:
  312. 306 009c EC81 ldd r30,Y+4
  313. 307 009e FD81 ldd r31,Y+5
  314. 308 00a0 80E0 ldi r24,0
  315. 309 00a2 90E0 ldi r25,0
  316. 310 00a4 1995 eicall
  317. 311 00a6 00C0 rjmp .L25
  318. 312 .L31:
  319. 313 00a8 CFEF ldi r28,lo8(-1)
  320. 314 00aa DFEF ldi r29,lo8(-1)
  321. 315 .L28:
  322. 316 00ac 80E0 ldi r24,lo8(mutex)
  323. 317 00ae 90E0 ldi r25,hi8(mutex)
  324. 318 00b0 0E94 0000 call NutEventPost
  325. 319 00b4 CE01 movw r24,r28
  326. 320 /* epilogue start */
  327. 321 00b6 DF91 pop r29
  328. 322 00b8 CF91 pop r28
  329. 323 00ba 1F91 pop r17
  330. 324 00bc 0F91 pop r16
  331. 325 00be FF90 pop r15
  332. 326 00c0 EF90 pop r14
  333. 327 00c2 DF90 pop r13
  334. 328 00c4 CF90 pop r12
  335. 329 00c6 BF90 pop r11
  336. 330 00c8 0895 ret
  337. 331 .size MmCardGetReg.constprop.2, .-MmCardGetReg.constprop.2
  338. 332 .section .text.MmCardReadOrVerify.constprop.3,"ax",@progbits
  339. 333 .type MmCardReadOrVerify.constprop.3, @function
  340. 334 MmCardReadOrVerify.constprop.3:
  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/ccan3UjN.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 EC01 movw r28,r24
  359. 352 001a 4A01 movw r8,r20
  360. 353 001c 5B01 movw r10,r22
  361. 354 001e 8901 movw r16,r18
  362. 355 0020 40E0 ldi r20,0
  363. 356 0022 50E0 ldi r21,0
  364. 357 0024 BA01 movw r22,r20
  365. 358 0026 80E0 ldi r24,lo8(mutex)
  366. 359 0028 90E0 ldi r25,hi8(mutex)
  367. 360 002a 0E94 0000 call NutEventWait
  368. 361 002e EC85 ldd r30,Y+12
  369. 362 0030 FD85 ldd r31,Y+13
  370. 363 0032 1995 eicall
  371. 364 0034 892B or r24,r25
  372. 365 0036 01F4 brne .L33
  373. 366 0038 99E0 ldi r25,9
  374. 367 1:
  375. 368 003a 880C lsl r8
  376. 369 003c 991C rol r9
  377. 370 003e AA1C rol r10
  378. 371 0040 BB1C rol r11
  379. 372 0042 9A95 dec r25
  380. 373 0044 01F4 brne 1b
  381. 374 .L33:
  382. 375 0046 81E4 ldi r24,lo8(65)
  383. 376 0048 E82E mov r14,r24
  384. 377 004a F12C mov r15,__zero_reg__
  385. 378 004c 6E01 movw r12,r28
  386. 379 004e 82E0 ldi r24,2
  387. 380 0050 C80E add r12,r24
  388. 381 0052 D11C adc r13,__zero_reg__
  389. 382 .L34:
  390. 383 0054 F1E0 ldi r31,1
  391. 384 0056 EF1A sub r14,r31
  392. 385 0058 F108 sbc r15,__zero_reg__
  393. 386 005a 01F0 breq .L40
  394. 387 005c A501 movw r20,r10
  395. 388 005e 9401 movw r18,r8
  396. 389 0060 61E1 ldi r22,lo8(17)
  397. 390 0062 CE01 movw r24,r28
  398. 391 0064 0E94 0000 call MmCardTxCmd
  399. 392 0068 C601 movw r24,r12
  400. 393 006a 0E94 0000 call MmCardRxR1.isra.0
  401. 394 006e 8111 cpse r24,__zero_reg__
  402. 395 0070 00C0 rjmp .L35
  403. 396 0072 C601 movw r24,r12
  404. 397 0074 0E94 0000 call MmCardRxR1.isra.0
  405. 398 0078 8E3F cpi r24,lo8(-2)
  406. 399 007a 01F4 brne .L35
  407. GAS LISTING /tmp/ccan3UjN.s page 8
  408. 400 007c 7801 movw r14,r16
  409. 401 007e EEEF ldi r30,-2
  410. 402 0080 FE1A sub r15,r30
  411. 403 .L36:
  412. 404 0082 EA81 ldd r30,Y+2
  413. 405 0084 FB81 ldd r31,Y+3
  414. 406 0086 8FEF ldi r24,lo8(-1)
  415. 407 0088 1995 eicall
  416. 408 008a F801 movw r30,r16
  417. 409 008c 8193 st Z+,r24
  418. 410 008e 8F01 movw r16,r30
  419. 411 0090 EE15 cp r30,r14
  420. 412 0092 FF05 cpc r31,r15
  421. 413 0094 01F4 brne .L36
  422. 414 0096 EA81 ldd r30,Y+2
  423. 415 0098 FB81 ldd r31,Y+3
  424. 416 009a 8FEF ldi r24,lo8(-1)
  425. 417 009c 1995 eicall
  426. 418 009e EA81 ldd r30,Y+2
  427. 419 00a0 FB81 ldd r31,Y+3
  428. 420 00a2 8FEF ldi r24,lo8(-1)
  429. 421 00a4 1995 eicall
  430. 422 00a6 EC81 ldd r30,Y+4
  431. 423 00a8 FD81 ldd r31,Y+5
  432. 424 00aa 80E0 ldi r24,0
  433. 425 00ac 90E0 ldi r25,0
  434. 426 00ae 1995 eicall
  435. 427 00b0 C0E0 ldi r28,0
  436. 428 00b2 D0E0 ldi r29,0
  437. 429 00b4 00C0 rjmp .L37
  438. 430 .L35:
  439. 431 00b6 EC81 ldd r30,Y+4
  440. 432 00b8 FD81 ldd r31,Y+5
  441. 433 00ba 80E0 ldi r24,0
  442. 434 00bc 90E0 ldi r25,0
  443. 435 00be 1995 eicall
  444. 436 00c0 00C0 rjmp .L34
  445. 437 .L40:
  446. 438 00c2 CFEF ldi r28,lo8(-1)
  447. 439 00c4 DFEF ldi r29,lo8(-1)
  448. 440 .L37:
  449. 441 00c6 80E0 ldi r24,lo8(mutex)
  450. 442 00c8 90E0 ldi r25,hi8(mutex)
  451. 443 00ca 0E94 0000 call NutEventPost
  452. 444 00ce CE01 movw r24,r28
  453. 445 /* epilogue start */
  454. 446 00d0 DF91 pop r29
  455. 447 00d2 CF91 pop r28
  456. 448 00d4 1F91 pop r17
  457. 449 00d6 0F91 pop r16
  458. 450 00d8 FF90 pop r15
  459. 451 00da EF90 pop r14
  460. 452 00dc DF90 pop r13
  461. 453 00de CF90 pop r12
  462. 454 00e0 BF90 pop r11
  463. 455 00e2 AF90 pop r10
  464. 456 00e4 9F90 pop r9
  465. GAS LISTING /tmp/ccan3UjN.s page 9
  466. 457 00e6 8F90 pop r8
  467. 458 00e8 0895 ret
  468. 459 .size MmCardReadOrVerify.constprop.3, .-MmCardReadOrVerify.constprop.3
  469. 460 .section .text.MmCardBlockRead,"ax",@progbits
  470. 461 .global MmCardBlockRead
  471. 462 .type MmCardBlockRead, @function
  472. 463 MmCardBlockRead:
  473. 464 0000 8F92 push r8
  474. 465 0002 9F92 push r9
  475. 466 0004 AF92 push r10
  476. 467 0006 BF92 push r11
  477. 468 0008 CF92 push r12
  478. 469 000a DF92 push r13
  479. 470 000c EF92 push r14
  480. 471 000e FF92 push r15
  481. 472 0010 0F93 push r16
  482. 473 0012 1F93 push r17
  483. 474 0014 CF93 push r28
  484. 475 0016 DF93 push r29
  485. 476 /* prologue: function */
  486. 477 /* frame size = 0 */
  487. 478 /* stack size = 12 */
  488. 479 .L__stack_usage = 12
  489. 480 0018 7B01 movw r14,r22
  490. 481 001a DC01 movw r26,r24
  491. 482 001c 1296 adiw r26,2
  492. 483 001e CD90 ld r12,X+
  493. 484 0020 DC90 ld r13,X
  494. 485 0022 1397 sbiw r26,2+1
  495. 486 0024 F601 movw r30,r12
  496. 487 0026 8288 ldd r8,Z+18
  497. 488 0028 9388 ldd r9,Z+19
  498. 489 002a A488 ldd r10,Z+20
  499. 490 002c B588 ldd r11,Z+21
  500. 491 002e ED91 ld r30,X+
  501. 492 0030 FC91 ld r31,X
  502. 493 0032 0785 ldd r16,Z+15
  503. 494 0034 1089 ldd r17,Z+16
  504. 495 0036 D801 movw r26,r16
  505. 496 0038 1696 adiw r26,6
  506. 497 003a ED91 ld r30,X+
  507. 498 003c FC91 ld r31,X
  508. 499 003e 1797 sbiw r26,6+1
  509. 500 0040 1995 eicall
  510. 501 0042 EC01 movw r28,r24
  511. 502 0044 0197 sbiw r24,1
  512. 503 0046 01F4 brne .L42
  513. 504 0048 E114 cp r14,__zero_reg__
  514. 505 004a F104 cpc r15,__zero_reg__
  515. 506 004c 01F4 brne .L43
  516. 507 004e 7601 movw r14,r12
  517. 508 0050 B6E1 ldi r27,22
  518. 509 0052 EB0E add r14,r27
  519. 510 0054 F11C adc r15,__zero_reg__
  520. 511 .L43:
  521. 512 0056 F601 movw r30,r12
  522. 513 0058 8285 ldd r24,Z+10
  523. GAS LISTING /tmp/ccan3UjN.s page 10
  524. 514 005a 9385 ldd r25,Z+11
  525. 515 005c A485 ldd r26,Z+12
  526. 516 005e B585 ldd r27,Z+13
  527. 517 0060 B501 movw r22,r10
  528. 518 0062 A401 movw r20,r8
  529. 519 0064 480F add r20,r24
  530. 520 0066 591F adc r21,r25
  531. 521 0068 6A1F adc r22,r26
  532. 522 006a 7B1F adc r23,r27
  533. 523 006c 9701 movw r18,r14
  534. 524 006e C801 movw r24,r16
  535. 525 0070 0E94 0000 call MmCardReadOrVerify.constprop.3
  536. 526 0074 892B or r24,r25
  537. 527 0076 01F0 breq .L44
  538. 528 .L42:
  539. 529 0078 CFEF ldi r28,lo8(-1)
  540. 530 007a DFEF ldi r29,lo8(-1)
  541. 531 .L44:
  542. 532 007c CE01 movw r24,r28
  543. 533 /* epilogue start */
  544. 534 007e DF91 pop r29
  545. 535 0080 CF91 pop r28
  546. 536 0082 1F91 pop r17
  547. 537 0084 0F91 pop r16
  548. 538 0086 FF90 pop r15
  549. 539 0088 EF90 pop r14
  550. 540 008a DF90 pop r13
  551. 541 008c CF90 pop r12
  552. 542 008e BF90 pop r11
  553. 543 0090 AF90 pop r10
  554. 544 0092 9F90 pop r9
  555. 545 0094 8F90 pop r8
  556. 546 0096 0895 ret
  557. 547 .size MmCardBlockRead, .-MmCardBlockRead
  558. 548 .section .text.MmCardBlockWrite,"ax",@progbits
  559. 549 .global MmCardBlockWrite
  560. 550 .type MmCardBlockWrite, @function
  561. 551 MmCardBlockWrite:
  562. 552 0000 4F92 push r4
  563. 553 0002 5F92 push r5
  564. 554 0004 6F92 push r6
  565. 555 0006 7F92 push r7
  566. 556 0008 8F92 push r8
  567. 557 000a 9F92 push r9
  568. 558 000c AF92 push r10
  569. 559 000e BF92 push r11
  570. 560 0010 CF92 push r12
  571. 561 0012 DF92 push r13
  572. 562 0014 EF92 push r14
  573. 563 0016 FF92 push r15
  574. 564 0018 0F93 push r16
  575. 565 001a 1F93 push r17
  576. 566 001c CF93 push r28
  577. 567 001e DF93 push r29
  578. 568 /* prologue: function */
  579. 569 /* frame size = 0 */
  580. 570 /* stack size = 16 */
  581. GAS LISTING /tmp/ccan3UjN.s page 11
  582. 571 .L__stack_usage = 16
  583. 572 0020 8B01 movw r16,r22
  584. 573 0022 DC01 movw r26,r24
  585. 574 0024 1296 adiw r26,2
  586. 575 0026 CD90 ld r12,X+
  587. 576 0028 DC90 ld r13,X
  588. 577 002a 1397 sbiw r26,2+1
  589. 578 002c F601 movw r30,r12
  590. 579 002e 8288 ldd r8,Z+18
  591. 580 0030 9388 ldd r9,Z+19
  592. 581 0032 A488 ldd r10,Z+20
  593. 582 0034 B588 ldd r11,Z+21
  594. 583 0036 ED91 ld r30,X+
  595. 584 0038 FC91 ld r31,X
  596. 585 003a C785 ldd r28,Z+15
  597. 586 003c D089 ldd r29,Z+16
  598. 587 003e EE81 ldd r30,Y+6
  599. 588 0040 FF81 ldd r31,Y+7
  600. 589 0042 1995 eicall
  601. 590 0044 7C01 movw r14,r24
  602. 591 0046 0197 sbiw r24,1
  603. 592 0048 01F0 breq .+2
  604. 593 004a 00C0 rjmp .L49
  605. 594 004c 0115 cp r16,__zero_reg__
  606. 595 004e 1105 cpc r17,__zero_reg__
  607. 596 0050 01F4 brne .L50
  608. 597 0052 8601 movw r16,r12
  609. 598 0054 0A5E subi r16,-22
  610. 599 0056 1F4F sbci r17,-1
  611. 600 .L50:
  612. 601 0058 D601 movw r26,r12
  613. 602 005a 1A96 adiw r26,10
  614. 603 005c 4D90 ld r4,X+
  615. 604 005e 5D90 ld r5,X+
  616. 605 0060 6D90 ld r6,X+
  617. 606 0062 7C90 ld r7,X
  618. 607 0064 1D97 sbiw r26,10+3
  619. 608 0066 480C add r4,r8
  620. 609 0068 591C adc r5,r9
  621. 610 006a 6A1C adc r6,r10
  622. 611 006c 7B1C adc r7,r11
  623. 612 006e 40E0 ldi r20,0
  624. 613 0070 50E0 ldi r21,0
  625. 614 0072 BA01 movw r22,r20
  626. 615 0074 80E0 ldi r24,lo8(mutex)
  627. 616 0076 90E0 ldi r25,hi8(mutex)
  628. 617 0078 0E94 0000 call NutEventWait
  629. 618 007c EC85 ldd r30,Y+12
  630. 619 007e FD85 ldd r31,Y+13
  631. 620 0080 1995 eicall
  632. 621 0082 892B or r24,r25
  633. 622 0084 01F4 brne .L51
  634. 623 0086 29E0 ldi r18,9
  635. 624 1:
  636. 625 0088 440C lsl r4
  637. 626 008a 551C rol r5
  638. 627 008c 661C rol r6
  639. GAS LISTING /tmp/ccan3UjN.s page 12
  640. 628 008e 771C rol r7
  641. 629 0090 2A95 dec r18
  642. 630 0092 01F4 brne 1b
  643. 631 .L51:
  644. 632 0094 91E2 ldi r25,lo8(33)
  645. 633 0096 C92E mov r12,r25
  646. 634 0098 D12C mov r13,__zero_reg__
  647. 635 009a 4E01 movw r8,r28
  648. 636 009c B2E0 ldi r27,2
  649. 637 009e 8B0E add r8,r27
  650. 638 00a0 911C adc r9,__zero_reg__
  651. 639 .L52:
  652. 640 00a2 F1E0 ldi r31,1
  653. 641 00a4 CF1A sub r12,r31
  654. 642 00a6 D108 sbc r13,__zero_reg__
  655. 643 00a8 01F4 brne .+2
  656. 644 00aa 00C0 rjmp .L68
  657. 645 00ac A301 movw r20,r6
  658. 646 00ae 9201 movw r18,r4
  659. 647 00b0 68E1 ldi r22,lo8(24)
  660. 648 00b2 CE01 movw r24,r28
  661. 649 00b4 0E94 0000 call MmCardTxCmd
  662. 650 00b8 C401 movw r24,r8
  663. 651 00ba 0E94 0000 call MmCardRxR1.isra.0
  664. 652 00be 8111 cpse r24,__zero_reg__
  665. 653 00c0 00C0 rjmp .L62
  666. 654 00c2 EA81 ldd r30,Y+2
  667. 655 00c4 FB81 ldd r31,Y+3
  668. 656 00c6 8FEF ldi r24,lo8(-1)
  669. 657 00c8 1995 eicall
  670. 658 00ca EA81 ldd r30,Y+2
  671. 659 00cc FB81 ldd r31,Y+3
  672. 660 00ce 8EEF ldi r24,lo8(-2)
  673. 661 00d0 1995 eicall
  674. 662 00d2 5801 movw r10,r16
  675. 663 00d4 EEEF ldi r30,-2
  676. 664 00d6 BE1A sub r11,r30
  677. 665 .L54:
  678. 666 00d8 EA81 ldd r30,Y+2
  679. 667 00da FB81 ldd r31,Y+3
  680. 668 00dc D801 movw r26,r16
  681. 669 00de 8D91 ld r24,X+
  682. 670 00e0 8D01 movw r16,r26
  683. 671 00e2 1995 eicall
  684. 672 00e4 0A15 cp r16,r10
  685. 673 00e6 1B05 cpc r17,r11
  686. 674 00e8 01F4 brne .L54
  687. 675 00ea C401 movw r24,r8
  688. 676 00ec 0E94 0000 call MmCardRxR1.isra.0
  689. 677 00f0 853E cpi r24,lo8(-27)
  690. 678 00f2 01F4 brne .L53
  691. 679 00f4 00E0 ldi r16,0
  692. 680 00f6 10E0 ldi r17,0
  693. 681 .L57:
  694. 682 00f8 EA81 ldd r30,Y+2
  695. 683 00fa FB81 ldd r31,Y+3
  696. 684 00fc 8FEF ldi r24,lo8(-1)
  697. GAS LISTING /tmp/ccan3UjN.s page 13
  698. 685 00fe 1995 eicall
  699. 686 0100 8F3F cpi r24,lo8(-1)
  700. 687 0102 01F0 breq .L55
  701. 688 0104 013E cpi r16,-31
  702. 689 0106 B3E0 ldi r27,3
  703. 690 0108 1B07 cpc r17,r27
  704. 691 010a 04F0 brlt .L56
  705. 692 010c 61E0 ldi r22,lo8(1)
  706. 693 010e 70E0 ldi r23,0
  707. 694 0110 80E0 ldi r24,0
  708. 695 0112 90E0 ldi r25,0
  709. 696 0114 0E94 0000 call NutSleep
  710. 697 .L56:
  711. 698 0118 0F5F subi r16,-1
  712. 699 011a 1F4F sbci r17,-1
  713. 700 011c 0115 cp r16,__zero_reg__
  714. 701 011e E4E0 ldi r30,4
  715. 702 0120 1E07 cpc r17,r30
  716. 703 0122 01F4 brne .L57
  717. 704 .L59:
  718. 705 0124 00E0 ldi r16,0
  719. 706 0126 10E0 ldi r17,0
  720. 707 0128 00C0 rjmp .L58
  721. 708 .L55:
  722. 709 012a 012B or r16,r17
  723. 710 012c 01F0 breq .L53
  724. 711 012e 00C0 rjmp .L59
  725. 712 .L62:
  726. 713 0130 5801 movw r10,r16
  727. 714 .L53:
  728. 715 0132 EC81 ldd r30,Y+4
  729. 716 0134 FD81 ldd r31,Y+5
  730. 717 0136 80E0 ldi r24,0
  731. 718 0138 90E0 ldi r25,0
  732. 719 013a 1995 eicall
  733. 720 013c 8501 movw r16,r10
  734. 721 013e 00C0 rjmp .L52
  735. 722 .L68:
  736. 723 0140 0FEF ldi r16,lo8(-1)
  737. 724 0142 1FEF ldi r17,lo8(-1)
  738. 725 .L58:
  739. 726 0144 EC81 ldd r30,Y+4
  740. 727 0146 FD81 ldd r31,Y+5
  741. 728 0148 80E0 ldi r24,0
  742. 729 014a 90E0 ldi r25,0
  743. 730 014c 1995 eicall
  744. 731 014e 80E0 ldi r24,lo8(mutex)
  745. 732 0150 90E0 ldi r25,hi8(mutex)
  746. 733 0152 0E94 0000 call NutEventPost
  747. 734 0156 012B or r16,r17
  748. 735 0158 01F0 breq .L61
  749. 736 .L49:
  750. 737 015a EE24 clr r14
  751. 738 015c EA94 dec r14
  752. 739 015e FE2C mov r15,r14
  753. 740 .L61:
  754. 741 0160 C701 movw r24,r14
  755. GAS LISTING /tmp/ccan3UjN.s page 14
  756. 742 /* epilogue start */
  757. 743 0162 DF91 pop r29
  758. 744 0164 CF91 pop r28
  759. 745 0166 1F91 pop r17
  760. 746 0168 0F91 pop r16
  761. 747 016a FF90 pop r15
  762. 748 016c EF90 pop r14
  763. 749 016e DF90 pop r13
  764. 750 0170 CF90 pop r12
  765. 751 0172 BF90 pop r11
  766. 752 0174 AF90 pop r10
  767. 753 0176 9F90 pop r9
  768. 754 0178 8F90 pop r8
  769. 755 017a 7F90 pop r7
  770. 756 017c 6F90 pop r6
  771. 757 017e 5F90 pop r5
  772. 758 0180 4F90 pop r4
  773. 759 0182 0895 ret
  774. 760 .size MmCardBlockWrite, .-MmCardBlockWrite
  775. 761 .section .text.MmCardBlockWrite_P,"ax",@progbits
  776. 762 .global MmCardBlockWrite_P
  777. 763 .type MmCardBlockWrite_P, @function
  778. 764 MmCardBlockWrite_P:
  779. 765 /* prologue: function */
  780. 766 /* frame size = 0 */
  781. 767 /* stack size = 0 */
  782. 768 .L__stack_usage = 0
  783. 769 0000 8FEF ldi r24,lo8(-1)
  784. 770 0002 9FEF ldi r25,lo8(-1)
  785. 771 0004 0895 ret
  786. 772 .size MmCardBlockWrite_P, .-MmCardBlockWrite_P
  787. 773 .section .text.MmCardUnmount,"ax",@progbits
  788. 774 .global MmCardUnmount
  789. 775 .type MmCardUnmount, @function
  790. 776 MmCardUnmount:
  791. 777 0000 EF92 push r14
  792. 778 0002 FF92 push r15
  793. 779 0004 0F93 push r16
  794. 780 0006 1F93 push r17
  795. 781 0008 CF93 push r28
  796. 782 000a DF93 push r29
  797. 783 /* prologue: function */
  798. 784 /* frame size = 0 */
  799. 785 /* stack size = 6 */
  800. 786 .L__stack_usage = 6
  801. 787 000c 8C01 movw r16,r24
  802. 788 000e 0097 sbiw r24,0
  803. 789 0010 01F0 breq .L74
  804. 790 0012 DC01 movw r26,r24
  805. 791 0014 1296 adiw r26,2
  806. 792 0016 ED90 ld r14,X+
  807. 793 0018 FC90 ld r15,X
  808. 794 001a 1397 sbiw r26,2+1
  809. 795 001c E114 cp r14,__zero_reg__
  810. 796 001e F104 cpc r15,__zero_reg__
  811. 797 0020 01F0 breq .L75
  812. 798 0022 ED91 ld r30,X+
  813. GAS LISTING /tmp/ccan3UjN.s page 15
  814. 799 0024 FC91 ld r31,X
  815. 800 0026 0784 ldd __tmp_reg__,Z+15
  816. 801 0028 F089 ldd r31,Z+16
  817. 802 002a E02D mov r30,__tmp_reg__
  818. 803 002c 0680 ldd __tmp_reg__,Z+6
  819. 804 002e F781 ldd r31,Z+7
  820. 805 0030 E02D mov r30,__tmp_reg__
  821. 806 0032 1995 eicall
  822. 807 0034 0197 sbiw r24,1
  823. 808 0036 01F4 brne .L76
  824. 809 0038 F701 movw r30,r14
  825. 810 003a 8081 ld r24,Z
  826. 811 003c 9181 ldd r25,Z+1
  827. 812 003e DC01 movw r26,r24
  828. 813 0040 5596 adiw r26,21
  829. 814 0042 ED91 ld r30,X+
  830. 815 0044 FC91 ld r31,X
  831. 816 0046 5697 sbiw r26,21+1
  832. 817 0048 40E0 ldi r20,0
  833. 818 004a 50E0 ldi r21,0
  834. 819 004c 61E3 ldi r22,lo8(49)
  835. 820 004e 71E1 ldi r23,lo8(17)
  836. 821 0050 1995 eicall
  837. 822 0052 EC01 movw r28,r24
  838. 823 0054 00C0 rjmp .L73
  839. 824 .L76:
  840. 825 0056 CFEF ldi r28,lo8(-1)
  841. 826 0058 DFEF ldi r29,lo8(-1)
  842. 827 .L73:
  843. 828 005a C701 movw r24,r14
  844. 829 005c 0E94 0000 call free
  845. 830 0060 00C0 rjmp .L72
  846. 831 .L75:
  847. 832 0062 CFEF ldi r28,lo8(-1)
  848. 833 0064 DFEF ldi r29,lo8(-1)
  849. 834 .L72:
  850. 835 0066 C801 movw r24,r16
  851. 836 0068 0E94 0000 call free
  852. 837 006c 00C0 rjmp .L71
  853. 838 .L74:
  854. 839 006e CFEF ldi r28,lo8(-1)
  855. 840 0070 DFEF ldi r29,lo8(-1)
  856. 841 .L71:
  857. 842 0072 CE01 movw r24,r28
  858. 843 /* epilogue start */
  859. 844 0074 DF91 pop r29
  860. 845 0076 CF91 pop r28
  861. 846 0078 1F91 pop r17
  862. 847 007a 0F91 pop r16
  863. 848 007c FF90 pop r15
  864. 849 007e EF90 pop r14
  865. 850 0080 0895 ret
  866. 851 .size MmCardUnmount, .-MmCardUnmount
  867. 852 .section .text.MmCardMount,"ax",@progbits
  868. 853 .global MmCardMount
  869. 854 .type MmCardMount, @function
  870. 855 MmCardMount:
  871. GAS LISTING /tmp/ccan3UjN.s page 16
  872. 856 0000 4F92 push r4
  873. 857 0002 5F92 push r5
  874. 858 0004 6F92 push r6
  875. 859 0006 7F92 push r7
  876. 860 0008 8F92 push r8
  877. 861 000a 9F92 push r9
  878. 862 000c AF92 push r10
  879. 863 000e BF92 push r11
  880. 864 0010 CF92 push r12
  881. 865 0012 DF92 push r13
  882. 866 0014 EF92 push r14
  883. 867 0016 FF92 push r15
  884. 868 0018 0F93 push r16
  885. 869 001a 1F93 push r17
  886. 870 001c CF93 push r28
  887. 871 001e DF93 push r29
  888. 872 0020 00D0 rcall .
  889. 873 0022 1F92 push __zero_reg__
  890. 874 0024 CDB7 in r28,__SP_L__
  891. 875 0026 DEB7 in r29,__SP_H__
  892. 876 /* prologue: function */
  893. 877 /* frame size = 4 */
  894. 878 /* stack size = 20 */
  895. 879 .L__stack_usage = 20
  896. 880 0028 3C01 movw r6,r24
  897. 881 002a 7B01 movw r14,r22
  898. 882 002c DC01 movw r26,r24
  899. 883 002e 1F96 adiw r26,15
  900. 884 0030 0D91 ld r16,X+
  901. 885 0032 1C91 ld r17,X
  902. 886 0034 5097 sbiw r26,15+1
  903. 887 0036 D801 movw r26,r16
  904. 888 0038 1696 adiw r26,6
  905. 889 003a ED91 ld r30,X+
  906. 890 003c FC91 ld r31,X
  907. 891 003e 1797 sbiw r26,6+1
  908. 892 0040 1995 eicall
  909. 893 0042 892B or r24,r25
  910. 894 0044 01F4 brne .L78
  911. 895 .L92:
  912. 896 0046 83E1 ldi r24,lo8(19)
  913. 897 0048 90E0 ldi r25,0
  914. 898 004a 00C0 rjmp .L146
  915. 899 .L78:
  916. 900 004c D801 movw r26,r16
  917. 901 004e 1A96 adiw r26,10
  918. 902 0050 ED91 ld r30,X+
  919. 903 0052 FC91 ld r31,X
  920. 904 0054 1B97 sbiw r26,10+1
  921. 905 0056 80E0 ldi r24,0
  922. 906 0058 90E0 ldi r25,0
  923. 907 005a 1995 eicall
  924. 908 005c C801 movw r24,r16
  925. 909 005e 0E94 0000 call MmCardReset
  926. 910 0062 892B or r24,r25
  927. 911 0064 01F4 brne .L80
  928. 912 .L82:
  929. GAS LISTING /tmp/ccan3UjN.s page 17
  930. 913 0066 2AEA ldi r18,lo8(-86)
  931. 914 0068 31E0 ldi r19,lo8(1)
  932. 915 006a 40E0 ldi r20,0
  933. 916 006c 50E0 ldi r21,0
  934. 917 006e 68E0 ldi r22,lo8(8)
  935. 918 0070 C801 movw r24,r16
  936. 919 0072 0E94 0000 call MmCardTxCmd
  937. 920 0076 6801 movw r12,r16
  938. 921 0078 B2E0 ldi r27,2
  939. 922 007a CB0E add r12,r27
  940. 923 007c D11C adc r13,__zero_reg__
  941. 924 007e C601 movw r24,r12
  942. 925 0080 0E94 0000 call MmCardRxR1.isra.0
  943. 926 0084 FE01 movw r30,r28
  944. 927 0086 3196 adiw r30,1
  945. 928 0088 5F01 movw r10,r30
  946. 929 008a 2E01 movw r4,r28
  947. 930 008c F5E0 ldi r31,5
  948. 931 008e 4F0E add r4,r31
  949. 932 0090 511C adc r5,__zero_reg__
  950. 933 0092 4501 movw r8,r10
  951. 934 0094 00C0 rjmp .L81
  952. 935 .L80:
  953. 936 0096 C801 movw r24,r16
  954. 937 0098 0E94 0000 call MmCardReset
  955. 938 009c 892B or r24,r25
  956. 939 009e 01F0 breq .L82
  957. 940 .L89:
  958. 941 00a0 8FEF ldi r24,lo8(-1)
  959. 942 00a2 9FEF ldi r25,lo8(-1)
  960. 943 00a4 00C0 rjmp .L83
  961. 944 .L81:
  962. 945 00a6 D801 movw r26,r16
  963. 946 00a8 1296 adiw r26,2
  964. 947 00aa ED91 ld r30,X+
  965. 948 00ac FC91 ld r31,X
  966. 949 00ae 1397 sbiw r26,2+1
  967. 950 00b0 8FEF ldi r24,lo8(-1)
  968. 951 00b2 1995 eicall
  969. 952 00b4 F401 movw r30,r8
  970. 953 00b6 8193 st Z+,r24
  971. 954 00b8 4F01 movw r8,r30
  972. 955 00ba E415 cp r30,r4
  973. 956 00bc F505 cpc r31,r5
  974. 957 00be 01F4 brne .L81
  975. 958 00c0 8B81 ldd r24,Y+3
  976. 959 00c2 8130 cpi r24,lo8(1)
  977. 960 00c4 01F0 breq .+2
  978. 961 00c6 00C0 rjmp .L114
  979. 962 00c8 8C81 ldd r24,Y+4
  980. 963 00ca 8A3A cpi r24,lo8(-86)
  981. 964 00cc 01F0 breq .+2
  982. 965 00ce 00C0 rjmp .L114
  983. 966 00d0 812C mov r8,__zero_reg__
  984. 967 00d2 80E1 ldi r24,lo8(16)
  985. 968 00d4 982E mov r9,r24
  986. 969 .L88:
  987. GAS LISTING /tmp/ccan3UjN.s page 18
  988. 970 00d6 20E0 ldi r18,0
  989. 971 00d8 30E0 ldi r19,0
  990. 972 00da A901 movw r20,r18
  991. 973 00dc 67E3 ldi r22,lo8(55)
  992. 974 00de C801 movw r24,r16
  993. 975 00e0 0E94 0000 call MmCardTxCmd
  994. 976 00e4 C601 movw r24,r12
  995. 977 00e6 0E94 0000 call MmCardRxR1.isra.0
  996. 978 00ea 8230 cpi r24,lo8(2)
  997. 979 00ec 00F4 brsh .L85
  998. 980 00ee 6AE0 ldi r22,lo8(10)
  999. 981 00f0 70E0 ldi r23,0
  1000. 982 00f2 80E0 ldi r24,0
  1001. 983 00f4 90E0 ldi r25,0
  1002. 984 00f6 0E94 0000 call NutSleep
  1003. 985 00fa 20E0 ldi r18,0
  1004. 986 00fc 30E0 ldi r19,0
  1005. 987 00fe 40E0 ldi r20,0
  1006. 988 0100 50E4 ldi r21,lo8(64)
  1007. 989 0102 69E2 ldi r22,lo8(41)
  1008. 990 0104 C801 movw r24,r16
  1009. 991 0106 0E94 0000 call MmCardTxCmd
  1010. 992 010a C601 movw r24,r12
  1011. 993 010c 0E94 0000 call MmCardRxR1.isra.0
  1012. 994 0110 8111 cpse r24,__zero_reg__
  1013. 995 0112 00C0 rjmp .L85
  1014. 996 0114 20E0 ldi r18,0
  1015. 997 0116 30E0 ldi r19,0
  1016. 998 0118 A901 movw r20,r18
  1017. 999 011a 6AE3 ldi r22,lo8(58)
  1018. 1000 011c C801 movw r24,r16
  1019. 1001 011e 0E94 0000 call MmCardTxCmd
  1020. 1002 0122 C601 movw r24,r12
  1021. 1003 0124 0E94 0000 call MmCardRxR1.isra.0
  1022. 1004 .L86:
  1023. 1005 0128 D801 movw r26,r16
  1024. 1006 012a 1296 adiw r26,2
  1025. 1007 012c ED91 ld r30,X+
  1026. 1008 012e FC91 ld r31,X
  1027. 1009 0130 1397 sbiw r26,2+1
  1028. 1010 0132 8FEF ldi r24,lo8(-1)
  1029. 1011 0134 1995 eicall
  1030. 1012 0136 F501 movw r30,r10
  1031. 1013 0138 8193 st Z+,r24
  1032. 1014 013a 5F01 movw r10,r30
  1033. 1015 013c E415 cp r30,r4
  1034. 1016 013e F505 cpc r31,r5
  1035. 1017 0140 01F4 brne .L86
  1036. 1018 0142 8981 ldd r24,Y+1
  1037. 1019 0144 86FF sbrs r24,6
  1038. 1020 0146 00C0 rjmp .L87
  1039. 1021 0148 D801 movw r26,r16
  1040. 1022 014a 1A96 adiw r26,10
  1041. 1023 014c ED91 ld r30,X+
  1042. 1024 014e FC91 ld r31,X
  1043. 1025 0150 1B97 sbiw r26,10+1
  1044. 1026 0152 81E0 ldi r24,lo8(1)
  1045. GAS LISTING /tmp/ccan3UjN.s page 19
  1046. 1027 0154 90E0 ldi r25,0
  1047. 1028 0156 1995 eicall
  1048. 1029 .L87:
  1049. 1030 0158 80E0 ldi r24,lo8(mutex)
  1050. 1031 015a 90E0 ldi r25,hi8(mutex)
  1051. 1032 015c 0E94 0000 call NutEventPost
  1052. 1033 0160 80E0 ldi r24,0
  1053. 1034 0162 90E0 ldi r25,0
  1054. 1035 0164 00C0 rjmp .L83
  1055. 1036 .L85:
  1056. 1037 0166 B1E0 ldi r27,1
  1057. 1038 0168 8B1A sub r8,r27
  1058. 1039 016a 9108 sbc r9,__zero_reg__
  1059. 1040 016c 01F0 breq .+2
  1060. 1041 016e 00C0 rjmp .L88
  1061. 1042 0170 00C0 rjmp .L89
  1062. 1043 .L114:
  1063. 1044 0172 A12C mov r10,__zero_reg__
  1064. 1045 0174 B12C mov r11,__zero_reg__
  1065. 1046 .L91:
  1066. 1047 0176 20E0 ldi r18,0
  1067. 1048 0178 30E0 ldi r19,0
  1068. 1049 017a A901 movw r20,r18
  1069. 1050 017c 61E0 ldi r22,lo8(1)
  1070. 1051 017e C801 movw r24,r16
  1071. 1052 0180 0E94 0000 call MmCardTxCmd
  1072. 1053 0184 C601 movw r24,r12
  1073. 1054 0186 0E94 0000 call MmCardRxR1.isra.0
  1074. 1055 018a 982E mov r9,r24
  1075. 1056 018c D801 movw r26,r16
  1076. 1057 018e 1496 adiw r26,4
  1077. 1058 0190 ED91 ld r30,X+
  1078. 1059 0192 FC91 ld r31,X
  1079. 1060 0194 1597 sbiw r26,4+1
  1080. 1061 0196 80E0 ldi r24,0
  1081. 1062 0198 90E0 ldi r25,0
  1082. 1063 019a 1995 eicall
  1083. 1064 019c 9920 tst r9
  1084. 1065 019e 01F0 breq .L87
  1085. 1066 01a0 B1E8 ldi r27,-127
  1086. 1067 01a2 AB16 cp r10,r27
  1087. 1068 01a4 B104 cpc r11,__zero_reg__
  1088. 1069 01a6 04F0 brlt .L90
  1089. 1070 01a8 61E0 ldi r22,lo8(1)
  1090. 1071 01aa 70E0 ldi r23,0
  1091. 1072 01ac 80E0 ldi r24,0
  1092. 1073 01ae 90E0 ldi r25,0
  1093. 1074 01b0 0E94 0000 call NutSleep
  1094. 1075 .L90:
  1095. 1076 01b4 EFEF ldi r30,-1
  1096. 1077 01b6 AE1A sub r10,r30
  1097. 1078 01b8 BE0A sbc r11,r30
  1098. 1079 01ba A114 cp r10,__zero_reg__
  1099. 1080 01bc F2E0 ldi r31,2
  1100. 1081 01be BF06 cpc r11,r31
  1101. 1082 01c0 01F4 brne .L91
  1102. 1083 01c2 00C0 rjmp .L89
  1103. GAS LISTING /tmp/ccan3UjN.s page 20
  1104. 1084 .L83:
  1105. 1085 01c4 892B or r24,r25
  1106. 1086 01c6 01F0 breq .+2
  1107. 1087 01c8 00C0 rjmp .L92
  1108. 1088 01ca D701 movw r26,r14
  1109. 1089 01cc 8C91 ld r24,X
  1110. 1090 01ce 8823 tst r24
  1111. 1091 01d0 01F0 breq .L115
  1112. 1092 01d2 C701 movw r24,r14
  1113. 1093 01d4 0E94 0000 call atoi
  1114. 1094 01d8 5C01 movw r10,r24
  1115. 1095 01da C701 movw r24,r14
  1116. 1096 01dc 0196 adiw r24,1
  1117. 1097 .L94:
  1118. 1098 01de 7C01 movw r14,r24
  1119. 1099 01e0 FC01 movw r30,r24
  1120. 1100 01e2 2081 ld r18,Z
  1121. 1101 01e4 0196 adiw r24,1
  1122. 1102 01e6 2223 tst r18
  1123. 1103 01e8 01F0 breq .L93
  1124. 1104 01ea 2F32 cpi r18,lo8(47)
  1125. 1105 01ec 01F4 brne .L94
  1126. 1106 01ee 7C01 movw r14,r24
  1127. 1107 01f0 00C0 rjmp .L93
  1128. 1108 .L115:
  1129. 1109 01f2 A12C mov r10,__zero_reg__
  1130. 1110 01f4 B12C mov r11,__zero_reg__
  1131. 1111 .L93:
  1132. 1112 01f6 C090 0000 lds r12,nutDeviceList
  1133. 1113 01fa D090 0000 lds r13,nutDeviceList+1
  1134. 1114 .L96:
  1135. 1115 01fe C114 cp r12,__zero_reg__
  1136. 1116 0200 D104 cpc r13,__zero_reg__
  1137. 1117 0202 01F4 brne .+2
  1138. 1118 0204 00C0 rjmp .L92
  1139. 1119 0206 D701 movw r26,r14
  1140. 1120 0208 8C91 ld r24,X
  1141. 1121 020a 8111 cpse r24,__zero_reg__
  1142. 1122 020c 00C0 rjmp .L97
  1143. 1123 020e F601 movw r30,r12
  1144. 1124 0210 8385 ldd r24,Z+11
  1145. 1125 0212 8031 cpi r24,lo8(16)
  1146. 1126 0214 01F4 brne .L99
  1147. 1127 0216 00C0 rjmp .L98
  1148. 1128 .L97:
  1149. 1129 0218 B701 movw r22,r14
  1150. 1130 021a C601 movw r24,r12
  1151. 1131 021c 0296 adiw r24,2
  1152. 1132 021e 0E94 0000 call strcmp
  1153. 1133 0222 892B or r24,r25
  1154. 1134 0224 01F0 breq .L98
  1155. 1135 .L99:
  1156. 1136 0226 D601 movw r26,r12
  1157. 1137 0228 CD90 ld r12,X+
  1158. 1138 022a DC90 ld r13,X
  1159. 1139 022c 00C0 rjmp .L96
  1160. 1140 .L98:
  1161. GAS LISTING /tmp/ccan3UjN.s page 21
  1162. 1141 022e 66E1 ldi r22,lo8(22)
  1163. 1142 0230 72E0 ldi r23,lo8(2)
  1164. 1143 0232 81E0 ldi r24,lo8(1)
  1165. 1144 0234 90E0 ldi r25,0
  1166. 1145 0236 0E94 0000 call calloc
  1167. 1146 023a 7C01 movw r14,r24
  1168. 1147 023c 892B or r24,r25
  1169. 1148 023e 01F4 brne .+2
  1170. 1149 0240 00C0 rjmp .L147
  1171. 1150 0242 F701 movw r30,r14
  1172. 1151 0244 D182 std Z+1,r13
  1173. 1152 0246 C082 st Z,r12
  1174. 1153 0248 9701 movw r18,r14
  1175. 1154 024a 2A5E subi r18,-22
  1176. 1155 024c 3F4F sbci r19,-1
  1177. 1156 024e 40E0 ldi r20,0
  1178. 1157 0250 50E0 ldi r21,0
  1179. 1158 0252 BA01 movw r22,r20
  1180. 1159 0254 C801 movw r24,r16
  1181. 1160 0256 0E94 0000 call MmCardReadOrVerify.constprop.3
  1182. 1161 025a 892B or r24,r25
  1183. 1162 025c 01F0 breq .+2
  1184. 1163 025e 00C0 rjmp .L148
  1185. 1164 0260 F701 movw r30,r14
  1186. 1165 0262 EC5E subi r30,-20
  1187. 1166 0264 FD4F sbci r31,-3
  1188. 1167 0266 8081 ld r24,Z
  1189. 1168 0268 8535 cpi r24,lo8(85)
  1190. 1169 026a 01F0 breq .+2
  1191. 1170 026c 00C0 rjmp .L148
  1192. 1171 026e 3196 adiw r30,1
  1193. 1172 0270 8081 ld r24,Z
  1194. 1173 0272 8A3A cpi r24,lo8(-86)
  1195. 1174 0274 01F0 breq .+2
  1196. 1175 0276 00C0 rjmp .L148
  1197. 1176 0278 F701 movw r30,r14
  1198. 1177 027a E45B subi r30,-76
  1199. 1178 027c FF4F sbci r31,-1
  1200. 1179 027e 8081 ld r24,Z
  1201. 1180 0280 8634 cpi r24,lo8(70)
  1202. 1181 0282 01F4 brne .L104
  1203. 1182 0284 3196 adiw r30,1
  1204. 1183 0286 8081 ld r24,Z
  1205. 1184 0288 8134 cpi r24,lo8(65)
  1206. 1185 028a 01F4 brne .L104
  1207. 1186 028c 3196 adiw r30,1
  1208. 1187 028e 8081 ld r24,Z
  1209. 1188 0290 8435 cpi r24,lo8(84)
  1210. 1189 0292 01F4 brne .L104
  1211. 1190 0294 81E0 ldi r24,lo8(1)
  1212. 1191 0296 D701 movw r26,r14
  1213. 1192 0298 1696 adiw r26,6
  1214. 1193 029a 8C93 st X,r24
  1215. 1194 029c F701 movw r30,r14
  1216. 1195 029e 1286 std Z+10,__zero_reg__
  1217. 1196 02a0 1386 std Z+11,__zero_reg__
  1218. 1197 02a2 1486 std Z+12,__zero_reg__
  1219. GAS LISTING /tmp/ccan3UjN.s page 22
  1220. 1198 02a4 1586 std Z+13,__zero_reg__
  1221. 1199 02a6 80E0 ldi r24,0
  1222. 1200 02a8 90E0 ldi r25,0
  1223. 1201 02aa A1E0 ldi r26,lo8(1)
  1224. 1202 02ac B0E0 ldi r27,0
  1225. 1203 02ae 8687 std Z+14,r24
  1226. 1204 02b0 9787 std Z+15,r25
  1227. 1205 02b2 A08B std Z+16,r26
  1228. 1206 02b4 B18B std Z+17,r27
  1229. 1207 .L105:
  1230. 1208 02b6 64E0 ldi r22,lo8(4)
  1231. 1209 02b8 70E0 ldi r23,0
  1232. 1210 02ba 80E0 ldi r24,lo8(heapFreeList)
  1233. 1211 02bc 90E0 ldi r25,hi8(heapFreeList)
  1234. 1212 02be 0E94 0000 call NutHeapRootAlloc
  1235. 1213 02c2 8C01 movw r16,r24
  1236. 1214 02c4 0097 sbiw r24,0
  1237. 1215 02c6 01F4 brne .L110
  1238. 1216 02c8 C701 movw r24,r14
  1239. 1217 02ca 0E94 0000 call free
  1240. 1218 .L147:
  1241. 1219 02ce 8CE0 ldi r24,lo8(12)
  1242. 1220 02d0 90E0 ldi r25,0
  1243. 1221 .L146:
  1244. 1222 02d2 9093 0000 sts errno+1,r25
  1245. 1223 02d6 8093 0000 sts errno,r24
  1246. 1224 02da 00C0 rjmp .L145
  1247. 1225 .L104:
  1248. 1226 02dc F701 movw r30,r14
  1249. 1227 02de EC52 subi r30,44
  1250. 1228 02e0 FE4F sbci r31,-2
  1251. 1229 02e2 81E0 ldi r24,lo8(1)
  1252. 1230 02e4 90E0 ldi r25,0
  1253. 1231 .L109:
  1254. 1232 02e6 A114 cp r10,__zero_reg__
  1255. 1233 02e8 B104 cpc r11,__zero_reg__
  1256. 1234 02ea 01F0 breq .L106
  1257. 1235 02ec A816 cp r10,r24
  1258. 1236 02ee B906 cpc r11,r25
  1259. 1237 02f0 01F4 brne .L107
  1260. 1238 .L144:
  1261. 1239 02f2 80E1 ldi r24,lo8(16)
  1262. 1240 02f4 D701 movw r26,r14
  1263. 1241 02f6 1296 adiw r26,2
  1264. 1242 0:
  1265. 1243 02f8 0190 ld r0,Z+
  1266. 1244 02fa 0D92 st X+,r0
  1267. 1245 02fc 8A95 dec r24
  1268. 1246 02fe 01F4 brne 0b
  1269. 1247 .L108:
  1270. 1248 0300 D701 movw r26,r14
  1271. 1249 0302 1696 adiw r26,6
  1272. 1250 0304 8C91 ld r24,X
  1273. 1251 0306 8111 cpse r24,__zero_reg__
  1274. 1252 0308 00C0 rjmp .L105
  1275. 1253 .L148:
  1276. 1254 030a C701 movw r24,r14
  1277. GAS LISTING /tmp/ccan3UjN.s page 23
  1278. 1255 030c 0E94 0000 call free
  1279. 1256 .L145:
  1280. 1257 0310 8FEF ldi r24,lo8(-1)
  1281. 1258 0312 9FEF ldi r25,lo8(-1)
  1282. 1259 0314 00C0 rjmp .L141
  1283. 1260 .L106:
  1284. 1261 0316 2081 ld r18,Z
  1285. 1262 0318 27FD sbrc r18,7
  1286. 1263 031a 00C0 rjmp .L144
  1287. 1264 .L107:
  1288. 1265 031c 7096 adiw r30,16
  1289. 1266 031e 0196 adiw r24,1
  1290. 1267 0320 8530 cpi r24,5
  1291. 1268 0322 9105 cpc r25,__zero_reg__
  1292. 1269 0324 01F4 brne .L109
  1293. 1270 0326 00C0 rjmp .L108
  1294. 1271 .L110:
  1295. 1272 0328 FC01 movw r30,r24
  1296. 1273 032a 7182 std Z+1,r7
  1297. 1274 032c 6082 st Z,r6
  1298. 1275 032e F382 std Z+3,r15
  1299. 1276 0330 E282 std Z+2,r14
  1300. 1277 0332 9A83 std Y+2,r25
  1301. 1278 0334 8983 std Y+1,r24
  1302. 1279 0336 D701 movw r26,r14
  1303. 1280 0338 1696 adiw r26,6
  1304. 1281 033a 8C91 ld r24,X
  1305. 1282 033c 8B83 std Y+3,r24
  1306. 1283 033e D601 movw r26,r12
  1307. 1284 0340 5596 adiw r26,21
  1308. 1285 0342 ED91 ld r30,X+
  1309. 1286 0344 FC91 ld r31,X
  1310. 1287 0346 5697 sbiw r26,21+1
  1311. 1288 0348 AE01 movw r20,r28
  1312. 1289 034a 4F5F subi r20,-1
  1313. 1290 034c 5F4F sbci r21,-1
  1314. 1291 034e 60E3 ldi r22,lo8(48)
  1315. 1292 0350 71E1 ldi r23,lo8(17)
  1316. 1293 0352 C601 movw r24,r12
  1317. 1294 0354 1995 eicall
  1318. 1295 0356 892B or r24,r25
  1319. 1296 0358 01F0 breq .L116
  1320. 1297 035a C801 movw r24,r16
  1321. 1298 035c 0E94 0000 call MmCardUnmount
  1322. 1299 0360 00C0 rjmp .L145
  1323. 1300 .L116:
  1324. 1301 0362 C801 movw r24,r16
  1325. 1302 .L141:
  1326. 1303 /* epilogue start */
  1327. 1304 0364 0F90 pop __tmp_reg__
  1328. 1305 0366 0F90 pop __tmp_reg__
  1329. 1306 0368 0F90 pop __tmp_reg__
  1330. 1307 036a 0F90 pop __tmp_reg__
  1331. 1308 036c DF91 pop r29
  1332. 1309 036e CF91 pop r28
  1333. 1310 0370 1F91 pop r17
  1334. 1311 0372 0F91 pop r16
  1335. GAS LISTING /tmp/ccan3UjN.s page 24
  1336. 1312 0374 FF90 pop r15
  1337. 1313 0376 EF90 pop r14
  1338. 1314 0378 DF90 pop r13
  1339. 1315 037a CF90 pop r12
  1340. 1316 037c BF90 pop r11
  1341. 1317 037e AF90 pop r10
  1342. 1318 0380 9F90 pop r9
  1343. 1319 0382 8F90 pop r8
  1344. 1320 0384 7F90 pop r7
  1345. 1321 0386 6F90 pop r6
  1346. 1322 0388 5F90 pop r5
  1347. 1323 038a 4F90 pop r4
  1348. 1324 038c 0895 ret
  1349. 1325 .size MmCardMount, .-MmCardMount
  1350. 1326 .section .text.MmCardIOCtl,"ax",@progbits
  1351. 1327 .global MmCardIOCtl
  1352. 1328 .type MmCardIOCtl, @function
  1353. 1329 MmCardIOCtl:
  1354. 1330 0000 DF92 push r13
  1355. 1331 0002 EF92 push r14
  1356. 1332 0004 FF92 push r15
  1357. 1333 0006 0F93 push r16
  1358. 1334 0008 1F93 push r17
  1359. 1335 000a CF93 push r28
  1360. 1336 000c DF93 push r29
  1361. 1337 /* prologue: function */
  1362. 1338 /* frame size = 0 */
  1363. 1339 /* stack size = 7 */
  1364. 1340 .L__stack_usage = 7
  1365. 1341 000e EA01 movw r28,r20
  1366. 1342 0010 DC01 movw r26,r24
  1367. 1343 0012 1F96 adiw r26,15
  1368. 1344 0014 0D91 ld r16,X+
  1369. 1345 0016 1C91 ld r17,X
  1370. 1346 0018 5097 sbiw r26,15+1
  1371. 1347 001a 6330 cpi r22,3
  1372. 1348 001c B2E1 ldi r27,18
  1373. 1349 001e 7B07 cpc r23,r27
  1374. 1350 0020 01F4 brne .+2
  1375. 1351 0022 00C0 rjmp .L151
  1376. 1352 0024 04F4 brge .L152
  1377. 1353 0026 6130 cpi r22,1
  1378. 1354 0028 F2E1 ldi r31,18
  1379. 1355 002a 7F07 cpc r23,r31
  1380. 1356 002c 01F4 brne .+2
  1381. 1357 002e 00C0 rjmp .L153
  1382. 1358 0030 04F0 brlt .+2
  1383. 1359 0032 00C0 rjmp .L154
  1384. 1360 0034 6115 cp r22,__zero_reg__
  1385. 1361 0036 7241 sbci r23,18
  1386. 1362 0038 01F0 breq .+2
  1387. 1363 003a 00C0 rjmp .L164
  1388. 1364 003c D801 movw r26,r16
  1389. 1365 003e 1696 adiw r26,6
  1390. 1366 0040 ED91 ld r30,X+
  1391. 1367 0042 FC91 ld r31,X
  1392. 1368 0044 1797 sbiw r26,6+1
  1393. GAS LISTING /tmp/ccan3UjN.s page 25
  1394. 1369 0046 1995 eicall
  1395. 1370 0048 00C0 rjmp .L168
  1396. 1371 .L152:
  1397. 1372 004a 6230 cpi r22,2
  1398. 1373 004c B0E2 ldi r27,32
  1399. 1374 004e 7B07 cpc r23,r27
  1400. 1375 0050 01F4 brne .+2
  1401. 1376 0052 00C0 rjmp .L156
  1402. 1377 0054 04F4 brge .L157
  1403. 1378 0056 6130 cpi r22,1
  1404. 1379 0058 7042 sbci r23,32
  1405. 1380 005a 01F0 breq .+2
  1406. 1381 005c 00C0 rjmp .L164
  1407. 1382 005e 40E0 ldi r20,0
  1408. 1383 0060 50E0 ldi r21,0
  1409. 1384 0062 BA01 movw r22,r20
  1410. 1385 0064 80E0 ldi r24,lo8(mutex)
  1411. 1386 0066 90E0 ldi r25,hi8(mutex)
  1412. 1387 0068 0E94 0000 call NutEventWait
  1413. 1388 006c 20E0 ldi r18,0
  1414. 1389 006e 30E0 ldi r19,0
  1415. 1390 0070 A901 movw r20,r18
  1416. 1391 0072 6DE0 ldi r22,lo8(13)
  1417. 1392 0074 C801 movw r24,r16
  1418. 1393 0076 0E94 0000 call MmCardTxCmd
  1419. 1394 007a C801 movw r24,r16
  1420. 1395 007c 0296 adiw r24,2
  1421. 1396 007e 0E94 0000 call MmCardRxR1.isra.0
  1422. 1397 0082 E82E mov r14,r24
  1423. 1398 0084 F12C mov r15,__zero_reg__
  1424. 1399 0086 FE2C mov r15,r14
  1425. 1400 0088 EE24 clr r14
  1426. 1401 008a D801 movw r26,r16
  1427. 1402 008c 1296 adiw r26,2
  1428. 1403 008e ED91 ld r30,X+
  1429. 1404 0090 FC91 ld r31,X
  1430. 1405 0092 1397 sbiw r26,2+1
  1431. 1406 0094 8FEF ldi r24,lo8(-1)
  1432. 1407 0096 1995 eicall
  1433. 1408 0098 E80E add r14,r24
  1434. 1409 009a F11C adc r15,__zero_reg__
  1435. 1410 009c F982 std Y+1,r15
  1436. 1411 009e E882 st Y,r14
  1437. 1412 00a0 80E0 ldi r24,lo8(mutex)
  1438. 1413 00a2 90E0 ldi r25,hi8(mutex)
  1439. 1414 00a4 0E94 0000 call NutEventPost
  1440. 1415 00a8 00C0 rjmp .L166
  1441. 1416 .L157:
  1442. 1417 00aa 6330 cpi r22,3
  1443. 1418 00ac 80E2 ldi r24,32
  1444. 1419 00ae 7807 cpc r23,r24
  1445. 1420 00b0 01F4 brne .+2
  1446. 1421 00b2 00C0 rjmp .L159
  1447. 1422 00b4 6430 cpi r22,4
  1448. 1423 00b6 7042 sbci r23,32
  1449. 1424 00b8 01F0 breq .+2
  1450. 1425 00ba 00C0 rjmp .L164
  1451. GAS LISTING /tmp/ccan3UjN.s page 26
  1452. 1426 00bc 69E0 ldi r22,lo8(9)
  1453. 1427 00be 00C0 rjmp .L167
  1454. 1428 .L153:
  1455. 1429 00c0 D801 movw r26,r16
  1456. 1430 00c2 1696 adiw r26,6
  1457. 1431 00c4 ED91 ld r30,X+
  1458. 1432 00c6 FC91 ld r31,X
  1459. 1433 00c8 1797 sbiw r26,6+1
  1460. 1434 00ca 1995 eicall
  1461. 1435 00cc 0197 sbiw r24,1
  1462. 1436 00ce 01F0 breq .L161
  1463. 1437 00d0 81E0 ldi r24,lo8(1)
  1464. 1438 00d2 90E0 ldi r25,0
  1465. 1439 .L168:
  1466. 1440 00d4 9983 std Y+1,r25
  1467. 1441 00d6 8883 st Y,r24
  1468. 1442 00d8 00C0 rjmp .L166
  1469. 1443 .L161:
  1470. 1444 00da 1982 std Y+1,__zero_reg__
  1471. 1445 00dc 1882 st Y,__zero_reg__
  1472. 1446 .L166:
  1473. 1447 00de C0E0 ldi r28,0
  1474. 1448 00e0 D0E0 ldi r29,0
  1475. 1449 00e2 00C0 rjmp .L150
  1476. 1450 .L154:
  1477. 1451 00e4 E881 ld r30,Y
  1478. 1452 00e6 F981 ldd r31,Y+1
  1479. 1453 00e8 0280 ldd __tmp_reg__,Z+2
  1480. 1454 00ea F381 ldd r31,Z+3
  1481. 1455 00ec E02D mov r30,__tmp_reg__
  1482. 1456 00ee 8685 ldd r24,Z+14
  1483. 1457 00f0 9785 ldd r25,Z+15
  1484. 1458 00f2 A089 ldd r26,Z+16
  1485. 1459 00f4 B189 ldd r27,Z+17
  1486. 1460 00f6 8A83 std Y+2,r24
  1487. 1461 00f8 9B83 std Y+3,r25
  1488. 1462 00fa AC83 std Y+4,r26
  1489. 1463 00fc BD83 std Y+5,r27
  1490. 1464 00fe 80E0 ldi r24,0
  1491. 1465 0100 92E0 ldi r25,lo8(2)
  1492. 1466 0102 A0E0 ldi r26,0
  1493. 1467 0104 B0E0 ldi r27,0
  1494. 1468 0106 8E83 std Y+6,r24
  1495. 1469 0108 9F83 std Y+7,r25
  1496. 1470 010a A887 std Y+8,r26
  1497. 1471 010c B987 std Y+9,r27
  1498. 1472 010e 7696 adiw r30,22
  1499. 1473 0110 FB87 std Y+11,r31
  1500. 1474 0112 EA87 std Y+10,r30
  1501. 1475 0114 00C0 rjmp .L166
  1502. 1476 .L151:
  1503. 1477 0116 E881 ld r30,Y
  1504. 1478 0118 F981 ldd r31,Y+1
  1505. 1479 011a 0280 ldd __tmp_reg__,Z+2
  1506. 1480 011c F381 ldd r31,Z+3
  1507. 1481 011e E02D mov r30,__tmp_reg__
  1508. 1482 0120 8A81 ldd r24,Y+2
  1509. GAS LISTING /tmp/ccan3UjN.s page 27
  1510. 1483 0122 9B81 ldd r25,Y+3
  1511. 1484 0124 AC81 ldd r26,Y+4
  1512. 1485 0126 BD81 ldd r27,Y+5
  1513. 1486 0128 828B std Z+18,r24
  1514. 1487 012a 938B std Z+19,r25
  1515. 1488 012c A48B std Z+20,r26
  1516. 1489 012e B58B std Z+21,r27
  1517. 1490 0130 00C0 rjmp .L166
  1518. 1491 .L156:
  1519. 1492 0132 40E0 ldi r20,0
  1520. 1493 0134 50E0 ldi r21,0
  1521. 1494 0136 BA01 movw r22,r20
  1522. 1495 0138 80E0 ldi r24,lo8(mutex)
  1523. 1496 013a 90E0 ldi r25,hi8(mutex)
  1524. 1497 013c 0E94 0000 call NutEventWait
  1525. 1498 0140 20E0 ldi r18,0
  1526. 1499 0142 30E0 ldi r19,0
  1527. 1500 0144 A901 movw r20,r18
  1528. 1501 0146 6AE3 ldi r22,lo8(58)
  1529. 1502 0148 C801 movw r24,r16
  1530. 1503 014a 0E94 0000 call MmCardTxCmd
  1531. 1504 014e C801 movw r24,r16
  1532. 1505 0150 0296 adiw r24,2
  1533. 1506 0152 0E94 0000 call MmCardRxR1.isra.0
  1534. 1507 0156 D82E mov r13,r24
  1535. 1508 0158 34E0 ldi r19,lo8(4)
  1536. 1509 015a E32E mov r14,r19
  1537. 1510 015c F12C mov r15,__zero_reg__
  1538. 1511 .L162:
  1539. 1512 015e 8881 ld r24,Y
  1540. 1513 0160 9981 ldd r25,Y+1
  1541. 1514 0162 AA81 ldd r26,Y+2
  1542. 1515 0164 BB81 ldd r27,Y+3
  1543. 1516 0166 BA2F mov r27,r26
  1544. 1517 0168 A92F mov r26,r25
  1545. 1518 016a 982F mov r25,r24
  1546. 1519 016c 8827 clr r24
  1547. 1520 016e 8883 st Y,r24
  1548. 1521 0170 9983 std Y+1,r25
  1549. 1522 0172 AA83 std Y+2,r26
  1550. 1523 0174 BB83 std Y+3,r27
  1551. 1524 0176 D801 movw r26,r16
  1552. 1525 0178 1296 adiw r26,2
  1553. 1526 017a ED91 ld r30,X+
  1554. 1527 017c FC91 ld r31,X
  1555. 1528 017e 1397 sbiw r26,2+1
  1556. 1529 0180 8FEF ldi r24,lo8(-1)
  1557. 1530 0182 1995 eicall
  1558. 1531 0184 4881 ld r20,Y
  1559. 1532 0186 5981 ldd r21,Y+1
  1560. 1533 0188 6A81 ldd r22,Y+2
  1561. 1534 018a 7B81 ldd r23,Y+3
  1562. 1535 018c 482B or r20,r24
  1563. 1536 018e 4883 st Y,r20
  1564. 1537 0190 5983 std Y+1,r21
  1565. 1538 0192 6A83 std Y+2,r22
  1566. 1539 0194 7B83 std Y+3,r23
  1567. GAS LISTING /tmp/ccan3UjN.s page 28
  1568. 1540 0196 B1E0 ldi r27,1
  1569. 1541 0198 EB1A sub r14,r27
  1570. 1542 019a F108 sbc r15,__zero_reg__
  1571. 1543 019c 01F4 brne .L162
  1572. 1544 019e C1E0 ldi r28,lo8(1)
  1573. 1545 01a0 D0E0 ldi r29,0
  1574. 1546 01a2 D110 cpse r13,__zero_reg__
  1575. 1547 01a4 00C0 rjmp .L163
  1576. 1548 01a6 C0E0 ldi r28,0
  1577. 1549 01a8 D0E0 ldi r29,0
  1578. 1550 .L163:
  1579. 1551 01aa D195 neg r29
  1580. 1552 01ac C195 neg r28
  1581. 1553 01ae D109 sbc r29,__zero_reg__
  1582. 1554 01b0 80E0 ldi r24,lo8(mutex)
  1583. 1555 01b2 90E0 ldi r25,hi8(mutex)
  1584. 1556 01b4 0E94 0000 call NutEventPost
  1585. 1557 01b8 00C0 rjmp .L150
  1586. 1558 .L159:
  1587. 1559 01ba 6AE0 ldi r22,lo8(10)
  1588. 1560 .L167:
  1589. 1561 01bc C801 movw r24,r16
  1590. 1562 /* epilogue start */
  1591. 1563 01be DF91 pop r29
  1592. 1564 01c0 CF91 pop r28
  1593. 1565 01c2 1F91 pop r17
  1594. 1566 01c4 0F91 pop r16
  1595. 1567 01c6 FF90 pop r15
  1596. 1568 01c8 EF90 pop r14
  1597. 1569 01ca DF90 pop r13
  1598. 1570 01cc 0C94 0000 jmp MmCardGetReg.constprop.2
  1599. 1571 .L164:
  1600. 1572 01d0 CFEF ldi r28,lo8(-1)
  1601. 1573 01d2 DFEF ldi r29,lo8(-1)
  1602. 1574 .L150:
  1603. 1575 01d4 CE01 movw r24,r28
  1604. 1576 /* epilogue start */
  1605. 1577 01d6 DF91 pop r29
  1606. 1578 01d8 CF91 pop r28
  1607. 1579 01da 1F91 pop r17
  1608. 1580 01dc 0F91 pop r16
  1609. 1581 01de FF90 pop r15
  1610. 1582 01e0 EF90 pop r14
  1611. 1583 01e2 DF90 pop r13
  1612. 1584 01e4 0895 ret
  1613. 1585 .size MmCardIOCtl, .-MmCardIOCtl
  1614. 1586 .section .text.MmCardDevInit,"ax",@progbits
  1615. 1587 .global MmCardDevInit
  1616. 1588 .type MmCardDevInit, @function
  1617. 1589 MmCardDevInit:
  1618. 1590 /* prologue: function */
  1619. 1591 /* frame size = 0 */
  1620. 1592 /* stack size = 0 */
  1621. 1593 .L__stack_usage = 0
  1622. 1594 0000 80E0 ldi r24,0
  1623. 1595 0002 90E0 ldi r25,0
  1624. 1596 0004 0895 ret
  1625. GAS LISTING /tmp/ccan3UjN.s page 29
  1626. 1597 .size MmCardDevInit, .-MmCardDevInit
  1627. 1598 .local mutex
  1628. 1599 .comm mutex,2,1
  1629. 1600 .ident "GCC: (GNU) 5.3.0"
  1630. 1601 .global __do_clear_bss
  1631. GAS LISTING /tmp/ccan3UjN.s page 30
  1632. DEFINED SYMBOLS
  1633. *ABS*:0000000000000000 mmcard.c
  1634. /tmp/ccan3UjN.s:2 *ABS*:000000000000003e __SP_H__
  1635. /tmp/ccan3UjN.s:3 *ABS*:000000000000003d __SP_L__
  1636. /tmp/ccan3UjN.s:4 *ABS*:000000000000003f __SREG__
  1637. /tmp/ccan3UjN.s:5 *ABS*:000000000000003b __RAMPZ__
  1638. /tmp/ccan3UjN.s:6 *ABS*:0000000000000000 __tmp_reg__
  1639. /tmp/ccan3UjN.s:7 *ABS*:0000000000000001 __zero_reg__
  1640. /tmp/ccan3UjN.s:10 .text.MmCardTxCmd:0000000000000000 MmCardTxCmd
  1641. /tmp/ccan3UjN.s:103 .text.MmCardRxR1.isra.0:0000000000000000 MmCardRxR1.isra.0
  1642. /tmp/ccan3UjN.s:135 .text.MmCardReset:0000000000000000 MmCardReset
  1643. /tmp/ccan3UjN.s:224 .text.MmCardGetReg.constprop.2:0000000000000000 MmCardGetReg.constprop.2
  1644. .bss:0000000000000000 mutex
  1645. /tmp/ccan3UjN.s:334 .text.MmCardReadOrVerify.constprop.3:0000000000000000 MmCardReadOrVerify.constprop.3
  1646. /tmp/ccan3UjN.s:463 .text.MmCardBlockRead:0000000000000000 MmCardBlockRead
  1647. /tmp/ccan3UjN.s:551 .text.MmCardBlockWrite:0000000000000000 MmCardBlockWrite
  1648. /tmp/ccan3UjN.s:764 .text.MmCardBlockWrite_P:0000000000000000 MmCardBlockWrite_P
  1649. /tmp/ccan3UjN.s:776 .text.MmCardUnmount:0000000000000000 MmCardUnmount
  1650. /tmp/ccan3UjN.s:855 .text.MmCardMount:0000000000000000 MmCardMount
  1651. /tmp/ccan3UjN.s:1329 .text.MmCardIOCtl:0000000000000000 MmCardIOCtl
  1652. /tmp/ccan3UjN.s:1589 .text.MmCardDevInit:0000000000000000 MmCardDevInit
  1653. UNDEFINED SYMBOLS
  1654. NutSleep
  1655. NutEventWait
  1656. NutEventPost
  1657. free
  1658. atoi
  1659. nutDeviceList
  1660. strcmp
  1661. calloc
  1662. heapFreeList
  1663. NutHeapRootAlloc
  1664. errno
  1665. __do_clear_bss