Patchwork [Committed,AVR] : PR target/45263: Don't use r20 around calls of __tablejump_elpm__

login
register
mail settings
Submitter Georg-Johann Lay
Date April 13, 2011, 5 p.m.
Message ID <4DA5D69F.9080508@gjlay.de>
Download mbox | patch
Permalink /patch/91072/
State New
Headers show

Comments

Georg-Johann Lay - April 13, 2011, 5 p.m.
PR target/45263
	* config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Don't use
	r20 around calls of __tablejump_elpm__

http://gcc.gnu.org/viewcvs?view=revision&revision=172384
http://gcc.gnu.org/viewcvs?view=revision&revision=172385
Eric Botcazou - April 13, 2011, 8:18 p.m.
> 	PR target/45263
> 	* config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Don't use
> 	r20 around calls of __tablejump_elpm__
>
> http://gcc.gnu.org/viewcvs?view=revision&revision=172384
> http://gcc.gnu.org/viewcvs?view=revision&revision=172385

Please do not post useless messages.  Once a patch has been approved on the 
list, just install it.  See http://gcc.gnu.org/svnwrite.html

Patch

Index: config/avr/libgcc.S
===================================================================
--- config/avr/libgcc.S	(Revision 172258)
+++ config/avr/libgcc.S	(Arbeitskopie)
@@ -791,22 +791,22 @@  __do_clear_bss:
 #if defined(__AVR_HAVE_RAMPZ__)
 __do_global_ctors:
 	ldi	r17, hi8(__ctors_start)
-	ldi	r16, hh8(__ctors_start)
 	ldi	r28, lo8(__ctors_end)
 	ldi	r29, hi8(__ctors_end)
-	ldi	r20, hh8(__ctors_end)
+	ldi	r16, hh8(__ctors_end)
 	rjmp	.L__do_global_ctors_start
 .L__do_global_ctors_loop:
 	sbiw	r28, 2
-	sbc     r20, __zero_reg__
+	sbc     r16, __zero_reg__
 	mov_h	r31, r29
 	mov_l	r30, r28
-	out     __RAMPZ__, r20
+	out     __RAMPZ__, r16
 	XCALL	__tablejump_elpm__
 .L__do_global_ctors_start:
 	cpi	r28, lo8(__ctors_start)
 	cpc	r29, r17
-	cpc	r20, r16
+	ldi	r24, hh8(__ctors_start)
+	cpc	r16, r24
 	brne	.L__do_global_ctors_loop
 #else
 __do_global_ctors:
@@ -832,22 +832,22 @@  __do_global_ctors:
 #if defined(__AVR_HAVE_RAMPZ__)
 __do_global_dtors:
 	ldi	r17, hi8(__dtors_end)
-	ldi	r16, hh8(__dtors_end)
 	ldi	r28, lo8(__dtors_start)
 	ldi	r29, hi8(__dtors_start)
-	ldi	r20, hh8(__dtors_start)
+	ldi	r16, hh8(__dtors_start)
 	rjmp	.L__do_global_dtors_start
 .L__do_global_dtors_loop:
 	sbiw	r28, 2
-	sbc     r20, __zero_reg__
+	sbc     r16, __zero_reg__
 	mov_h	r31, r29
 	mov_l	r30, r28
-	out     __RAMPZ__, r20
+	out     __RAMPZ__, r16
 	XCALL	__tablejump_elpm__
 .L__do_global_dtors_start:
 	cpi	r28, lo8(__dtors_end)
 	cpc	r29, r17
-	cpc	r20, r16
+	ldi	r24, hh8(__dtors_end)
+	cpc	r16, r24
 	brne	.L__do_global_dtors_loop
 #else
 __do_global_dtors: