setenv.lst 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. GAS LISTING /tmp/ccIPO1XJ.s page 1
  2. 1 .file "setenv.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 .rodata.str1.1,"aMS",@progbits,1
  10. 9 .LC0:
  11. 10 0000 00 .string ""
  12. 11 .section .text.save_env,"ax",@progbits
  13. 12 .type save_env, @function
  14. 13 save_env:
  15. 14 0000 CF92 push r12
  16. 15 0002 DF92 push r13
  17. 16 0004 EF92 push r14
  18. 17 0006 FF92 push r15
  19. 18 0008 0F93 push r16
  20. 19 000a 1F93 push r17
  21. 20 000c CF93 push r28
  22. 21 000e DF93 push r29
  23. 22 0010 00D0 rcall .
  24. 23 0012 1F92 push __zero_reg__
  25. 24 0014 CDB7 in r28,__SP_L__
  26. 25 0016 DEB7 in r29,__SP_H__
  27. 26 /* prologue: function */
  28. 27 /* frame size = 4 */
  29. 28 /* stack size = 12 */
  30. 29 .L__stack_usage = 12
  31. 30 0018 8091 0000 lds r24,nut_environ
  32. 31 001c 9091 0000 lds r25,nut_environ+1
  33. 32 0020 892B or r24,r25
  34. 33 0022 01F4 brne .+2
  35. 34 0024 00C0 rjmp .L10
  36. 35 0026 85E4 ldi r24,lo8(69)
  37. 36 0028 9EE4 ldi r25,lo8(78)
  38. 37 002a A6E5 ldi r26,lo8(86)
  39. 38 002c B0E0 ldi r27,0
  40. 39 002e 8983 std Y+1,r24
  41. 40 0030 9A83 std Y+2,r25
  42. 41 0032 AB83 std Y+3,r26
  43. 42 0034 BC83 std Y+4,r27
  44. 43 0036 44E0 ldi r20,lo8(4)
  45. 44 0038 50E0 ldi r21,0
  46. 45 003a BE01 movw r22,r28
  47. 46 003c 6F5F subi r22,-1
  48. 47 003e 7F4F sbci r23,-1
  49. 48 0040 80E0 ldi r24,0
  50. 49 0042 91E0 ldi r25,lo8(1)
  51. 50 0044 0E94 0000 call NutNvMemSave
  52. 51 0048 892B or r24,r25
  53. 52 004a 01F0 breq .+2
  54. 53 004c 00C0 rjmp .L10
  55. 54 004e E090 0000 lds r14,nut_environ
  56. 55 0052 F090 0000 lds r15,nut_environ+1
  57. 56 0056 04E0 ldi r16,lo8(4)
  58. 57 0058 11E0 ldi r17,lo8(1)
  59. GAS LISTING /tmp/ccIPO1XJ.s page 2
  60. 58 .L4:
  61. 59 005a E114 cp r14,__zero_reg__
  62. 60 005c F104 cpc r15,__zero_reg__
  63. 61 005e 01F0 breq .L15
  64. 62 0060 F701 movw r30,r14
  65. 63 0062 6481 ldd r22,Z+4
  66. 64 0064 7581 ldd r23,Z+5
  67. 65 0066 FB01 movw r30,r22
  68. 66 0:
  69. 67 0068 0190 ld __tmp_reg__,Z+
  70. 68 006a 0020 tst __tmp_reg__
  71. 69 006c 01F4 brne 0b
  72. 70 006e 6F01 movw r12,r30
  73. 71 0070 C61A sub r12,r22
  74. 72 0072 D70A sbc r13,r23
  75. 73 0074 A601 movw r20,r12
  76. 74 0076 C801 movw r24,r16
  77. 75 0078 0E94 0000 call NutNvMemSave
  78. 76 007c 0097 sbiw r24,0
  79. 77 007e 01F4 brne .L12
  80. 78 0080 0C0D add r16,r12
  81. 79 0082 1D1D adc r17,r13
  82. 80 0084 F701 movw r30,r14
  83. 81 0086 6681 ldd r22,Z+6
  84. 82 0088 7781 ldd r23,Z+7
  85. 83 008a 6115 cp r22,__zero_reg__
  86. 84 008c 7105 cpc r23,__zero_reg__
  87. 85 008e 01F0 breq .L6
  88. 86 0090 FB01 movw r30,r22
  89. 87 0:
  90. 88 0092 0190 ld __tmp_reg__,Z+
  91. 89 0094 0020 tst __tmp_reg__
  92. 90 0096 01F4 brne 0b
  93. 91 0098 6F01 movw r12,r30
  94. 92 009a C61A sub r12,r22
  95. 93 009c D70A sbc r13,r23
  96. 94 009e A601 movw r20,r12
  97. 95 00a0 C801 movw r24,r16
  98. 96 00a2 0E94 0000 call NutNvMemSave
  99. 97 00a6 0097 sbiw r24,0
  100. 98 00a8 01F0 breq .L7
  101. 99 00aa 00C0 rjmp .L12
  102. 100 .L6:
  103. 101 00ac 41E0 ldi r20,lo8(1)
  104. 102 00ae 50E0 ldi r21,0
  105. 103 00b0 60E0 ldi r22,lo8(.LC0)
  106. 104 00b2 70E0 ldi r23,hi8(.LC0)
  107. 105 00b4 C801 movw r24,r16
  108. 106 00b6 0E94 0000 call NutNvMemSave
  109. 107 00ba 0097 sbiw r24,0
  110. 108 00bc 01F4 brne .L12
  111. 109 00be CC24 clr r12
  112. 110 00c0 C394 inc r12
  113. 111 00c2 D12C mov r13,__zero_reg__
  114. 112 .L7:
  115. 113 00c4 0C0D add r16,r12
  116. 114 00c6 1D1D adc r17,r13
  117. GAS LISTING /tmp/ccIPO1XJ.s page 3
  118. 115 00c8 F701 movw r30,r14
  119. 116 00ca E080 ld r14,Z
  120. 117 00cc F180 ldd r15,Z+1
  121. 118 00ce 00C0 rjmp .L4
  122. 119 .L10:
  123. 120 00d0 80E0 ldi r24,0
  124. 121 00d2 90E0 ldi r25,0
  125. 122 00d4 00C0 rjmp .L12
  126. 123 .L15:
  127. 124 00d6 41E0 ldi r20,lo8(1)
  128. 125 00d8 50E0 ldi r21,0
  129. 126 00da 60E0 ldi r22,lo8(.LC0)
  130. 127 00dc 70E0 ldi r23,hi8(.LC0)
  131. 128 00de C801 movw r24,r16
  132. 129 00e0 0E94 0000 call NutNvMemSave
  133. 130 .L12:
  134. 131 /* epilogue start */
  135. 132 00e4 0F90 pop __tmp_reg__
  136. 133 00e6 0F90 pop __tmp_reg__
  137. 134 00e8 0F90 pop __tmp_reg__
  138. 135 00ea 0F90 pop __tmp_reg__
  139. 136 00ec DF91 pop r29
  140. 137 00ee CF91 pop r28
  141. 138 00f0 1F91 pop r17
  142. 139 00f2 0F91 pop r16
  143. 140 00f4 FF90 pop r15
  144. 141 00f6 EF90 pop r14
  145. 142 00f8 DF90 pop r13
  146. 143 00fa CF90 pop r12
  147. 144 00fc 0895 ret
  148. 145 .size save_env, .-save_env
  149. 146 .section .text.setenv,"ax",@progbits
  150. 147 .global setenv
  151. 148 .type setenv, @function
  152. 149 setenv:
  153. 150 0000 CF92 push r12
  154. 151 0002 DF92 push r13
  155. 152 0004 EF92 push r14
  156. 153 0006 FF92 push r15
  157. 154 0008 0F93 push r16
  158. 155 000a 1F93 push r17
  159. 156 000c CF93 push r28
  160. 157 000e DF93 push r29
  161. 158 /* prologue: function */
  162. 159 /* frame size = 0 */
  163. 160 /* stack size = 8 */
  164. 161 .L__stack_usage = 8
  165. 162 0010 8C01 movw r16,r24
  166. 163 0012 6B01 movw r12,r22
  167. 164 0014 7A01 movw r14,r20
  168. 165 0016 0E94 0000 call findenv
  169. 166 001a EC01 movw r28,r24
  170. 167 001c 892B or r24,r25
  171. 168 001e 01F0 breq .+2
  172. 169 0020 00C0 rjmp .L17
  173. 170 0022 88E0 ldi r24,lo8(8)
  174. 171 0024 90E0 ldi r25,0
  175. GAS LISTING /tmp/ccIPO1XJ.s page 4
  176. 172 0026 0E94 0000 call malloc
  177. 173 002a EC01 movw r28,r24
  178. 174 002c 892B or r24,r25
  179. 175 002e 01F0 breq .L48
  180. 176 0030 88E0 ldi r24,lo8(8)
  181. 177 0032 DE01 movw r26,r28
  182. 178 0:
  183. 179 0034 1D92 st X+,__zero_reg__
  184. 180 0036 8A95 dec r24
  185. 181 0038 01F4 brne 0b
  186. 182 003a C801 movw r24,r16
  187. 183 003c 0E94 0000 call strdup
  188. 184 0040 7C01 movw r14,r24
  189. 185 0042 9D83 std Y+5,r25
  190. 186 0044 8C83 std Y+4,r24
  191. 187 0046 892B or r24,r25
  192. 188 0048 01F4 brne .L20
  193. 189 004a CE01 movw r24,r28
  194. 190 004c 0E94 0000 call free
  195. 191 .L48:
  196. 192 0050 8FEF ldi r24,lo8(-1)
  197. 193 0052 9FEF ldi r25,lo8(-1)
  198. 194 0054 00C0 rjmp .L44
  199. 195 .L20:
  200. 196 0056 0091 0000 lds r16,nut_environ
  201. 197 005a 1091 0000 lds r17,nut_environ+1
  202. 198 005e E0E0 ldi r30,0
  203. 199 0060 F0E0 ldi r31,0
  204. 200 .L21:
  205. 201 0062 0115 cp r16,__zero_reg__
  206. 202 0064 1105 cpc r17,__zero_reg__
  207. 203 0066 01F0 breq .L49
  208. 204 0068 F801 movw r30,r16
  209. 205 006a 6481 ldd r22,Z+4
  210. 206 006c 7581 ldd r23,Z+5
  211. 207 006e C701 movw r24,r14
  212. 208 0070 0E94 0000 call strcmp
  213. 209 0074 97FF sbrs r25,7
  214. 210 0076 00C0 rjmp .L22
  215. 211 0078 D801 movw r26,r16
  216. 212 007a 1296 adiw r26,2
  217. 213 007c ED91 ld r30,X+
  218. 214 007e FC91 ld r31,X
  219. 215 0080 1397 sbiw r26,2+1
  220. 216 0082 3097 sbiw r30,0
  221. 217 0084 01F0 breq .L23
  222. 218 0086 D183 std Z+1,r29
  223. 219 0088 C083 st Z,r28
  224. 220 008a 00C0 rjmp .L24
  225. 221 .L23:
  226. 222 008c D093 0000 sts nut_environ+1,r29
  227. 223 0090 C093 0000 sts nut_environ,r28
  228. 224 .L24:
  229. 225 0094 1983 std Y+1,r17
  230. 226 0096 0883 st Y,r16
  231. 227 0098 FB83 std Y+3,r31
  232. 228 009a EA83 std Y+2,r30
  233. GAS LISTING /tmp/ccIPO1XJ.s page 5
  234. 229 009c F801 movw r30,r16
  235. 230 009e D383 std Z+3,r29
  236. 231 00a0 C283 std Z+2,r28
  237. 232 00a2 00C0 rjmp .L25
  238. 233 .L22:
  239. 234 00a4 F801 movw r30,r16
  240. 235 00a6 0081 ld r16,Z
  241. 236 00a8 1181 ldd r17,Z+1
  242. 237 00aa 00C0 rjmp .L21
  243. 238 .L17:
  244. 239 00ac EF28 or r14,r15
  245. 240 00ae 01F4 brne .L25
  246. 241 .L30:
  247. 242 00b0 80E0 ldi r24,0
  248. 243 00b2 90E0 ldi r25,0
  249. 244 00b4 00C0 rjmp .L44
  250. 245 .L49:
  251. 246 00b6 3097 sbiw r30,0
  252. 247 00b8 01F0 breq .L50
  253. 248 00ba D183 std Z+1,r29
  254. 249 00bc C083 st Z,r28
  255. 250 00be FB83 std Y+3,r31
  256. 251 00c0 EA83 std Y+2,r30
  257. 252 .L25:
  258. 253 00c2 0E81 ldd r16,Y+6
  259. 254 00c4 1F81 ldd r17,Y+7
  260. 255 00c6 0115 cp r16,__zero_reg__
  261. 256 00c8 1105 cpc r17,__zero_reg__
  262. 257 00ca 01F0 breq .L29
  263. 258 00cc B601 movw r22,r12
  264. 259 00ce C801 movw r24,r16
  265. 260 00d0 0E94 0000 call strcmp
  266. 261 00d4 892B or r24,r25
  267. 262 00d6 01F0 breq .L30
  268. 263 00d8 C801 movw r24,r16
  269. 264 00da 0E94 0000 call free
  270. 265 00de 00C0 rjmp .L29
  271. 266 .L50:
  272. 267 00e0 D093 0000 sts nut_environ+1,r29
  273. 268 00e4 C093 0000 sts nut_environ,r28
  274. 269 00e8 00C0 rjmp .L25
  275. 270 .L29:
  276. 271 00ea C601 movw r24,r12
  277. 272 00ec 0E94 0000 call strdup
  278. 273 00f0 9F83 std Y+7,r25
  279. 274 00f2 8E83 std Y+6,r24
  280. 275 00f4 892B or r24,r25
  281. 276 00f6 01F4 brne .+2
  282. 277 00f8 00C0 rjmp .L48
  283. 278 /* epilogue start */
  284. 279 00fa DF91 pop r29
  285. 280 00fc CF91 pop r28
  286. 281 00fe 1F91 pop r17
  287. 282 0100 0F91 pop r16
  288. 283 0102 FF90 pop r15
  289. 284 0104 EF90 pop r14
  290. 285 0106 DF90 pop r13
  291. GAS LISTING /tmp/ccIPO1XJ.s page 6
  292. 286 0108 CF90 pop r12
  293. 287 010a 0C94 0000 jmp save_env
  294. 288 .L44:
  295. 289 /* epilogue start */
  296. 290 010e DF91 pop r29
  297. 291 0110 CF91 pop r28
  298. 292 0112 1F91 pop r17
  299. 293 0114 0F91 pop r16
  300. 294 0116 FF90 pop r15
  301. 295 0118 EF90 pop r14
  302. 296 011a DF90 pop r13
  303. 297 011c CF90 pop r12
  304. 298 011e 0895 ret
  305. 299 .size setenv, .-setenv
  306. 300 .section .text.unsetenv,"ax",@progbits
  307. 301 .global unsetenv
  308. 302 .type unsetenv, @function
  309. 303 unsetenv:
  310. 304 0000 CF93 push r28
  311. 305 0002 DF93 push r29
  312. 306 /* prologue: function */
  313. 307 /* frame size = 0 */
  314. 308 /* stack size = 2 */
  315. 309 .L__stack_usage = 2
  316. 310 0004 0E94 0000 call findenv
  317. 311 0008 EC01 movw r28,r24
  318. 312 000a 892B or r24,r25
  319. 313 000c 01F4 brne .L52
  320. 314 000e 82E0 ldi r24,lo8(2)
  321. 315 0010 90E0 ldi r25,0
  322. 316 0012 9093 0000 sts errno+1,r25
  323. 317 0016 8093 0000 sts errno,r24
  324. 318 /* epilogue start */
  325. 319 001a DF91 pop r29
  326. 320 001c CF91 pop r28
  327. 321 001e 0895 ret
  328. 322 .L52:
  329. 323 0020 AA81 ldd r26,Y+2
  330. 324 0022 BB81 ldd r27,Y+3
  331. 325 0024 1097 sbiw r26,0
  332. 326 0026 01F0 breq .L54
  333. 327 0028 8881 ld r24,Y
  334. 328 002a 9981 ldd r25,Y+1
  335. 329 002c 1196 adiw r26,1
  336. 330 002e 9C93 st X,r25
  337. 331 0030 8E93 st -X,r24
  338. 332 .L54:
  339. 333 0032 E881 ld r30,Y
  340. 334 0034 F981 ldd r31,Y+1
  341. 335 0036 3097 sbiw r30,0
  342. 336 0038 01F0 breq .L55
  343. 337 003a B383 std Z+3,r27
  344. 338 003c A283 std Z+2,r26
  345. 339 .L55:
  346. 340 003e 8091 0000 lds r24,nut_environ
  347. 341 0042 9091 0000 lds r25,nut_environ+1
  348. 342 0046 C817 cp r28,r24
  349. GAS LISTING /tmp/ccIPO1XJ.s page 7
  350. 343 0048 D907 cpc r29,r25
  351. 344 004a 01F4 brne .L56
  352. 345 004c F093 0000 sts nut_environ+1,r31
  353. 346 0050 E093 0000 sts nut_environ,r30
  354. 347 .L56:
  355. 348 0054 8C81 ldd r24,Y+4
  356. 349 0056 9D81 ldd r25,Y+5
  357. 350 0058 0E94 0000 call free
  358. 351 005c 8E81 ldd r24,Y+6
  359. 352 005e 9F81 ldd r25,Y+7
  360. 353 0060 0E94 0000 call free
  361. 354 0064 CE01 movw r24,r28
  362. 355 0066 0E94 0000 call free
  363. 356 /* epilogue start */
  364. 357 006a DF91 pop r29
  365. 358 006c CF91 pop r28
  366. 359 006e 0C94 0000 jmp save_env
  367. 360 .size unsetenv, .-unsetenv
  368. 361 .ident "GCC: (GNU) 5.3.0"
  369. 362 .global __do_copy_data
  370. GAS LISTING /tmp/ccIPO1XJ.s page 8
  371. DEFINED SYMBOLS
  372. *ABS*:0000000000000000 setenv.c
  373. /tmp/ccIPO1XJ.s:2 *ABS*:000000000000003e __SP_H__
  374. /tmp/ccIPO1XJ.s:3 *ABS*:000000000000003d __SP_L__
  375. /tmp/ccIPO1XJ.s:4 *ABS*:000000000000003f __SREG__
  376. /tmp/ccIPO1XJ.s:5 *ABS*:000000000000003b __RAMPZ__
  377. /tmp/ccIPO1XJ.s:6 *ABS*:0000000000000000 __tmp_reg__
  378. /tmp/ccIPO1XJ.s:7 *ABS*:0000000000000001 __zero_reg__
  379. /tmp/ccIPO1XJ.s:13 .text.save_env:0000000000000000 save_env
  380. /tmp/ccIPO1XJ.s:149 .text.setenv:0000000000000000 setenv
  381. /tmp/ccIPO1XJ.s:303 .text.unsetenv:0000000000000000 unsetenv
  382. UNDEFINED SYMBOLS
  383. nut_environ
  384. NutNvMemSave
  385. findenv
  386. malloc
  387. strdup
  388. free
  389. strcmp
  390. errno
  391. __do_copy_data