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