28 |
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
29 |
POSSIBILITY OF SUCH DAMAGE. */ |
POSSIBILITY OF SUCH DAMAGE. */ |
30 |
|
|
31 |
|
/* $Id$ */ |
32 |
|
|
33 |
#if (__GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 3) |
#if (__GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 3) |
34 |
#error "GCC version >= 3.3 required" |
#error "GCC version >= 3.3 required" |
35 |
#endif |
#endif |
153 |
ldi r16, hh8(__data_load_start) |
ldi r16, hh8(__data_load_start) |
154 |
#else |
#else |
155 |
ldi r16, hh8(__data_load_start - 0x10000) |
ldi r16, hh8(__data_load_start - 0x10000) |
156 |
.__do_copy_data_carry: |
.L__do_copy_data_carry: |
157 |
inc r16 |
inc r16 |
158 |
#endif |
#endif |
159 |
out _SFR_IO_ADDR(RAMPZ), r16 |
out _SFR_IO_ADDR(RAMPZ), r16 |
160 |
rjmp .__do_copy_data_start |
rjmp .L__do_copy_data_start |
161 |
.__do_copy_data_loop: |
.L__do_copy_data_loop: |
162 |
#ifdef __AVR_ENHANCED__ |
#ifdef __AVR_ENHANCED__ |
163 |
elpm r0, Z+ |
elpm r0, Z+ |
164 |
#else |
#else |
167 |
st X+, r0 |
st X+, r0 |
168 |
#ifndef __AVR_ENHANCED__ |
#ifndef __AVR_ENHANCED__ |
169 |
adiw r30, 1 |
adiw r30, 1 |
170 |
brcs .__do_copy_data_carry |
brcs .L__do_copy_data_carry |
171 |
#endif |
#endif |
172 |
.__do_copy_data_start: |
.L__do_copy_data_start: |
173 |
cpi r26, lo8(__data_end) |
cpi r26, lo8(__data_end) |
174 |
cpc r27, r17 |
cpc r27, r17 |
175 |
brne .__do_copy_data_loop |
brne .L__do_copy_data_loop |
176 |
#endif /* BIG_CODE */ |
#endif /* BIG_CODE */ |
177 |
|
|
178 |
.set __stack, RAMEND |
.set __stack, RAMEND |