funopen.lst 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. GAS LISTING /tmp/ccV11xpY.s page 1
  2. 1 .file "funopen.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.UserDevRead,"ax",@progbits
  10. 9 .type UserDevRead, @function
  11. 10 UserDevRead:
  12. 11 /* prologue: function */
  13. 12 /* frame size = 0 */
  14. 13 /* stack size = 0 */
  15. 14 .L__stack_usage = 0
  16. 15 0000 DC01 movw r26,r24
  17. 16 0002 ED91 ld r30,X+
  18. 17 0004 FC91 ld r31,X
  19. 18 0006 1197 sbiw r26,1
  20. 19 0008 0784 ldd __tmp_reg__,Z+15
  21. 20 000a F089 ldd r31,Z+16
  22. 21 000c E02D mov r30,__tmp_reg__
  23. 22 000e 0190 ld __tmp_reg__,Z+
  24. 23 0010 F081 ld r31,Z
  25. 24 0012 E02D mov r30,__tmp_reg__
  26. 25 0014 1296 adiw r26,2
  27. 26 0016 8D91 ld r24,X+
  28. 27 0018 9C91 ld r25,X
  29. 28 001a 1397 sbiw r26,2+1
  30. 29 001c 1994 eijmp
  31. 30 .size UserDevRead, .-UserDevRead
  32. 31 .section .text.UserDevWrite,"ax",@progbits
  33. 32 .type UserDevWrite, @function
  34. 33 UserDevWrite:
  35. 34 /* prologue: function */
  36. 35 /* frame size = 0 */
  37. 36 /* stack size = 0 */
  38. 37 .L__stack_usage = 0
  39. 38 0000 DC01 movw r26,r24
  40. 39 0002 ED91 ld r30,X+
  41. 40 0004 FC91 ld r31,X
  42. 41 0006 1197 sbiw r26,1
  43. 42 0008 0784 ldd __tmp_reg__,Z+15
  44. 43 000a F089 ldd r31,Z+16
  45. 44 000c E02D mov r30,__tmp_reg__
  46. 45 000e 0280 ldd __tmp_reg__,Z+2
  47. 46 0010 F381 ldd r31,Z+3
  48. 47 0012 E02D mov r30,__tmp_reg__
  49. 48 0014 1296 adiw r26,2
  50. 49 0016 8D91 ld r24,X+
  51. 50 0018 9C91 ld r25,X
  52. 51 001a 1397 sbiw r26,2+1
  53. 52 001c 1994 eijmp
  54. 53 .size UserDevWrite, .-UserDevWrite
  55. 54 .section .text.UserDevClose,"ax",@progbits
  56. 55 .type UserDevClose, @function
  57. 56 UserDevClose:
  58. 57 0000 0F93 push r16
  59. GAS LISTING /tmp/ccV11xpY.s page 2
  60. 58 0002 1F93 push r17
  61. 59 0004 CF93 push r28
  62. 60 0006 DF93 push r29
  63. 61 /* prologue: function */
  64. 62 /* frame size = 0 */
  65. 63 /* stack size = 4 */
  66. 64 .L__stack_usage = 4
  67. 65 0008 EC01 movw r28,r24
  68. 66 000a E881 ld r30,Y
  69. 67 000c F981 ldd r31,Y+1
  70. 68 000e 0784 ldd __tmp_reg__,Z+15
  71. 69 0010 F089 ldd r31,Z+16
  72. 70 0012 E02D mov r30,__tmp_reg__
  73. 71 0014 0680 ldd __tmp_reg__,Z+6
  74. 72 0016 F781 ldd r31,Z+7
  75. 73 0018 E02D mov r30,__tmp_reg__
  76. 74 001a 8A81 ldd r24,Y+2
  77. 75 001c 9B81 ldd r25,Y+3
  78. 76 001e 1995 eicall
  79. 77 0020 8C01 movw r16,r24
  80. 78 0022 E881 ld r30,Y
  81. 79 0024 F981 ldd r31,Y+1
  82. 80 0026 8785 ldd r24,Z+15
  83. 81 0028 9089 ldd r25,Z+16
  84. 82 002a 0E94 0000 call free
  85. 83 002e 8881 ld r24,Y
  86. 84 0030 9981 ldd r25,Y+1
  87. 85 0032 0E94 0000 call free
  88. 86 0036 CE01 movw r24,r28
  89. 87 0038 0E94 0000 call free
  90. 88 003c C801 movw r24,r16
  91. 89 /* epilogue start */
  92. 90 003e DF91 pop r29
  93. 91 0040 CF91 pop r28
  94. 92 0042 1F91 pop r17
  95. 93 0044 0F91 pop r16
  96. 94 0046 0895 ret
  97. 95 .size UserDevClose, .-UserDevClose
  98. 96 .section .text.UserDevIoCtl,"ax",@progbits
  99. 97 .type UserDevIoCtl, @function
  100. 98 UserDevIoCtl:
  101. 99 /* prologue: function */
  102. 100 /* frame size = 0 */
  103. 101 /* stack size = 0 */
  104. 102 .L__stack_usage = 0
  105. 103 0000 FA01 movw r30,r20
  106. 104 0002 6332 cpi r22,35
  107. 105 0004 7141 sbci r23,17
  108. 106 0006 01F4 brne .L5
  109. 107 0008 A081 ld r26,Z
  110. 108 000a B181 ldd r27,Z+1
  111. 109 000c 2481 ldd r18,Z+4
  112. 110 000e 3581 ldd r19,Z+5
  113. 111 0010 0280 ldd __tmp_reg__,Z+2
  114. 112 0012 F381 ldd r31,Z+3
  115. 113 0014 E02D mov r30,__tmp_reg__
  116. 114 0016 4081 ld r20,Z
  117. GAS LISTING /tmp/ccV11xpY.s page 3
  118. 115 0018 5181 ldd r21,Z+1
  119. 116 001a 6281 ldd r22,Z+2
  120. 117 001c 7381 ldd r23,Z+3
  121. 118 001e ED91 ld r30,X+
  122. 119 0020 FC91 ld r31,X
  123. 120 0022 1197 sbiw r26,1
  124. 121 0024 0784 ldd __tmp_reg__,Z+15
  125. 122 0026 F089 ldd r31,Z+16
  126. 123 0028 E02D mov r30,__tmp_reg__
  127. 124 002a 0480 ldd __tmp_reg__,Z+4
  128. 125 002c F581 ldd r31,Z+5
  129. 126 002e E02D mov r30,__tmp_reg__
  130. 127 0030 1296 adiw r26,2
  131. 128 0032 8D91 ld r24,X+
  132. 129 0034 9C91 ld r25,X
  133. 130 0036 1397 sbiw r26,2+1
  134. 131 0038 1995 eicall
  135. 132 .L5:
  136. 133 003a 8FEF ldi r24,lo8(-1)
  137. 134 003c 9FEF ldi r25,lo8(-1)
  138. 135 003e 0895 ret
  139. 136 .size UserDevIoCtl, .-UserDevIoCtl
  140. 137 .section .text.funopen,"ax",@progbits
  141. 138 .global funopen
  142. 139 .type funopen, @function
  143. 140 funopen:
  144. 141 0000 2F92 push r2
  145. 142 0002 3F92 push r3
  146. 143 0004 4F92 push r4
  147. 144 0006 5F92 push r5
  148. 145 0008 6F92 push r6
  149. 146 000a 7F92 push r7
  150. 147 000c 8F92 push r8
  151. 148 000e 9F92 push r9
  152. 149 0010 AF92 push r10
  153. 150 0012 BF92 push r11
  154. 151 0014 CF92 push r12
  155. 152 0016 DF92 push r13
  156. 153 0018 EF92 push r14
  157. 154 001a FF92 push r15
  158. 155 001c 0F93 push r16
  159. 156 001e 1F93 push r17
  160. 157 0020 CF93 push r28
  161. 158 0022 DF93 push r29
  162. 159 0024 00D0 rcall .
  163. 160 0026 00D0 rcall .
  164. 161 0028 CDB7 in r28,__SP_L__
  165. 162 002a DEB7 in r29,__SP_H__
  166. 163 /* prologue: function */
  167. 164 /* frame size = 6 */
  168. 165 /* stack size = 24 */
  169. 166 .L__stack_usage = 24
  170. 167 002c 5C01 movw r10,r24
  171. 168 002e 4B01 movw r8,r22
  172. 169 0030 1A01 movw r2,r20
  173. 170 0032 E0E0 ldi r30,lo8(__iob)
  174. 171 0034 F0E0 ldi r31,hi8(__iob)
  175. GAS LISTING /tmp/ccV11xpY.s page 4
  176. 172 0036 412C mov r4,__zero_reg__
  177. 173 0038 512C mov r5,__zero_reg__
  178. 174 .L8:
  179. 175 003a C190 ld r12,Z+
  180. 176 003c D190 ld r13,Z+
  181. 177 003e C114 cp r12,__zero_reg__
  182. 178 0040 D104 cpc r13,__zero_reg__
  183. 179 0042 01F0 breq .L31
  184. 180 0044 8FEF ldi r24,-1
  185. 181 0046 481A sub r4,r24
  186. 182 0048 580A sbc r5,r24
  187. 183 004a 98E0 ldi r25,8
  188. 184 004c 4916 cp r4,r25
  189. 185 004e 5104 cpc r5,__zero_reg__
  190. 186 0050 01F4 brne .L8
  191. 187 0052 87E1 ldi r24,lo8(23)
  192. 188 0054 90E0 ldi r25,0
  193. 189 0056 9093 0000 sts errno+1,r25
  194. 190 005a 8093 0000 sts errno,r24
  195. 191 005e C12C mov r12,__zero_reg__
  196. 192 0060 D12C mov r13,__zero_reg__
  197. 193 0062 00C0 rjmp .L9
  198. 194 .L31:
  199. 195 0064 E0E0 ldi r30,lo8(__fds)
  200. 196 0066 F0E0 ldi r31,hi8(__fds)
  201. 197 0068 1E82 std Y+6,__zero_reg__
  202. 198 006a 1D82 std Y+5,__zero_reg__
  203. 199 .L12:
  204. 200 006c 8191 ld r24,Z+
  205. 201 006e 9191 ld r25,Z+
  206. 202 0070 892B or r24,r25
  207. 203 0072 01F0 breq .L32
  208. 204 0074 AD81 ldd r26,Y+5
  209. 205 0076 BE81 ldd r27,Y+6
  210. 206 0078 1196 adiw r26,1
  211. 207 007a BE83 std Y+6,r27
  212. 208 007c AD83 std Y+5,r26
  213. 209 007e 1897 sbiw r26,8
  214. 210 0080 01F4 brne .L12
  215. 211 0082 88E1 ldi r24,lo8(24)
  216. 212 0084 90E0 ldi r25,0
  217. 213 0086 00C0 rjmp .L30
  218. 214 .L32:
  219. 215 0088 67E0 ldi r22,lo8(7)
  220. 216 008a 70E0 ldi r23,0
  221. 217 008c 81E0 ldi r24,lo8(1)
  222. 218 008e 90E0 ldi r25,0
  223. 219 0090 2B83 std Y+3,r18
  224. 220 0092 3C83 std Y+4,r19
  225. 221 0094 0E94 0000 call calloc
  226. 222 0098 7C01 movw r14,r24
  227. 223 009a 440C lsl r4
  228. 224 009c 551C rol r5
  229. 225 009e F201 movw r30,r4
  230. 226 00a0 E050 subi r30,lo8(-(__iob))
  231. 227 00a2 F040 sbci r31,hi8(-(__iob))
  232. 228 00a4 9183 std Z+1,r25
  233. GAS LISTING /tmp/ccV11xpY.s page 5
  234. 229 00a6 8083 st Z,r24
  235. 230 00a8 84E0 ldi r24,lo8(4)
  236. 231 00aa 90E0 ldi r25,0
  237. 232 00ac 0E94 0000 call malloc
  238. 233 00b0 3C01 movw r6,r24
  239. 234 00b2 65E2 ldi r22,lo8(37)
  240. 235 00b4 70E0 ldi r23,0
  241. 236 00b6 81E0 ldi r24,lo8(1)
  242. 237 00b8 90E0 ldi r25,0
  243. 238 00ba 0E94 0000 call calloc
  244. 239 00be AC01 movw r20,r24
  245. 240 00c0 88E0 ldi r24,lo8(8)
  246. 241 00c2 90E0 ldi r25,0
  247. 242 00c4 4983 std Y+1,r20
  248. 243 00c6 5A83 std Y+2,r21
  249. 244 00c8 0E94 0000 call malloc
  250. 245 00cc FC01 movw r30,r24
  251. 246 00ce 2B81 ldd r18,Y+3
  252. 247 00d0 3C81 ldd r19,Y+4
  253. 248 00d2 4981 ldd r20,Y+1
  254. 249 00d4 5A81 ldd r21,Y+2
  255. 250 00d6 E114 cp r14,__zero_reg__
  256. 251 00d8 F104 cpc r15,__zero_reg__
  257. 252 00da 01F4 brne .+2
  258. 253 00dc 00C0 rjmp .L14
  259. 254 00de 6114 cp r6,__zero_reg__
  260. 255 00e0 7104 cpc r7,__zero_reg__
  261. 256 00e2 01F0 breq .L14
  262. 257 00e4 4115 cp r20,__zero_reg__
  263. 258 00e6 5105 cpc r21,__zero_reg__
  264. 259 00e8 01F0 breq .L14
  265. 260 00ea 0097 sbiw r24,0
  266. 261 00ec 01F0 breq .L14
  267. 262 00ee 9182 std Z+1,r9
  268. 263 00f0 8082 st Z,r8
  269. 264 00f2 3382 std Z+3,r3
  270. 265 00f4 2282 std Z+2,r2
  271. 266 00f6 3583 std Z+5,r19
  272. 267 00f8 2483 std Z+4,r18
  273. 268 00fa 1783 std Z+7,r17
  274. 269 00fc 0683 std Z+6,r16
  275. 270 00fe DA01 movw r26,r20
  276. 271 0100 5096 adiw r26,15+1
  277. 272 0102 9C93 st X,r25
  278. 273 0104 8E93 st -X,r24
  279. 274 0106 1F97 sbiw r26,15
  280. 275 0108 80E0 ldi r24,lo8(gs(UserDevIoCtl))
  281. 276 010a 90E0 ldi r25,hi8(gs(UserDevIoCtl))
  282. 277 010c 5696 adiw r26,21+1
  283. 278 010e 9C93 st X,r25
  284. 279 0110 8E93 st -X,r24
  285. 280 0112 5597 sbiw r26,21
  286. 281 0114 80E0 ldi r24,lo8(gs(UserDevRead))
  287. 282 0116 90E0 ldi r25,hi8(gs(UserDevRead))
  288. 283 0118 5896 adiw r26,23+1
  289. 284 011a 9C93 st X,r25
  290. 285 011c 8E93 st -X,r24
  291. GAS LISTING /tmp/ccV11xpY.s page 6
  292. 286 011e 5797 sbiw r26,23
  293. 287 0120 80E0 ldi r24,lo8(gs(UserDevWrite))
  294. 288 0122 90E0 ldi r25,hi8(gs(UserDevWrite))
  295. 289 0124 5A96 adiw r26,25+1
  296. 290 0126 9C93 st X,r25
  297. 291 0128 8E93 st -X,r24
  298. 292 012a 5997 sbiw r26,25
  299. 293 012c 80E0 ldi r24,lo8(gs(UserDevClose))
  300. 294 012e 90E0 ldi r25,hi8(gs(UserDevClose))
  301. 295 0130 9096 adiw r26,31+1
  302. 296 0132 9C93 st X,r25
  303. 297 0134 8E93 st -X,r24
  304. 298 0136 5F97 sbiw r26,31
  305. 299 0138 F301 movw r30,r6
  306. 300 013a 5183 std Z+1,r21
  307. 301 013c 4083 st Z,r20
  308. 302 013e B382 std Z+3,r11
  309. 303 0140 A282 std Z+2,r10
  310. 304 0142 D701 movw r26,r14
  311. 305 0144 6D92 st X+,r6
  312. 306 0146 7C92 st X,r7
  313. 307 0148 8D81 ldd r24,Y+5
  314. 308 014a 9E81 ldd r25,Y+6
  315. 309 014c 880F lsl r24
  316. 310 014e 991F rol r25
  317. 311 0150 8050 subi r24,lo8(-(__fds))
  318. 312 0152 9040 sbci r25,hi8(-(__fds))
  319. 313 0154 FC01 movw r30,r24
  320. 314 0156 7182 std Z+1,r7
  321. 315 0158 6082 st Z,r6
  322. 316 015a 6701 movw r12,r14
  323. 317 015c 00C0 rjmp .L9
  324. 318 .L14:
  325. 319 015e C701 movw r24,r14
  326. 320 0160 0E94 0000 call free
  327. 321 0164 F201 movw r30,r4
  328. 322 0166 E050 subi r30,lo8(-(__iob))
  329. 323 0168 F040 sbci r31,hi8(-(__iob))
  330. 324 016a 1182 std Z+1,__zero_reg__
  331. 325 016c 1082 st Z,__zero_reg__
  332. 326 016e 8CE0 ldi r24,lo8(12)
  333. 327 0170 90E0 ldi r25,0
  334. 328 .L30:
  335. 329 0172 9093 0000 sts errno+1,r25
  336. 330 0176 8093 0000 sts errno,r24
  337. 331 .L9:
  338. 332 017a C601 movw r24,r12
  339. 333 /* epilogue start */
  340. 334 017c 2696 adiw r28,6
  341. 335 017e 0FB6 in __tmp_reg__,__SREG__
  342. 336 0180 F894 cli
  343. 337 0182 DEBF out __SP_H__,r29
  344. 338 0184 0FBE out __SREG__,__tmp_reg__
  345. 339 0186 CDBF out __SP_L__,r28
  346. 340 0188 DF91 pop r29
  347. 341 018a CF91 pop r28
  348. 342 018c 1F91 pop r17
  349. GAS LISTING /tmp/ccV11xpY.s page 7
  350. 343 018e 0F91 pop r16
  351. 344 0190 FF90 pop r15
  352. 345 0192 EF90 pop r14
  353. 346 0194 DF90 pop r13
  354. 347 0196 CF90 pop r12
  355. 348 0198 BF90 pop r11
  356. 349 019a AF90 pop r10
  357. 350 019c 9F90 pop r9
  358. 351 019e 8F90 pop r8
  359. 352 01a0 7F90 pop r7
  360. 353 01a2 6F90 pop r6
  361. 354 01a4 5F90 pop r5
  362. 355 01a6 4F90 pop r4
  363. 356 01a8 3F90 pop r3
  364. 357 01aa 2F90 pop r2
  365. 358 01ac 0895 ret
  366. 359 .size funopen, .-funopen
  367. 360 .ident "GCC: (GNU) 5.3.0"
  368. GAS LISTING /tmp/ccV11xpY.s page 8
  369. DEFINED SYMBOLS
  370. *ABS*:0000000000000000 funopen.c
  371. /tmp/ccV11xpY.s:2 *ABS*:000000000000003e __SP_H__
  372. /tmp/ccV11xpY.s:3 *ABS*:000000000000003d __SP_L__
  373. /tmp/ccV11xpY.s:4 *ABS*:000000000000003f __SREG__
  374. /tmp/ccV11xpY.s:5 *ABS*:000000000000003b __RAMPZ__
  375. /tmp/ccV11xpY.s:6 *ABS*:0000000000000000 __tmp_reg__
  376. /tmp/ccV11xpY.s:7 *ABS*:0000000000000001 __zero_reg__
  377. /tmp/ccV11xpY.s:10 .text.UserDevRead:0000000000000000 UserDevRead
  378. /tmp/ccV11xpY.s:33 .text.UserDevWrite:0000000000000000 UserDevWrite
  379. /tmp/ccV11xpY.s:56 .text.UserDevClose:0000000000000000 UserDevClose
  380. /tmp/ccV11xpY.s:98 .text.UserDevIoCtl:0000000000000000 UserDevIoCtl
  381. /tmp/ccV11xpY.s:140 .text.funopen:0000000000000000 funopen
  382. UNDEFINED SYMBOLS
  383. free
  384. __iob
  385. errno
  386. __fds
  387. calloc
  388. malloc