[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [avr-gcc-list] Funny business with latest WinAvr 20081205 + xmega128
From: |
larry barello |
Subject: |
RE: [avr-gcc-list] Funny business with latest WinAvr 20081205 + xmega128A1 and stdio |
Date: |
Sat, 17 Jan 2009 13:24:39 -0800 |
It looks like all fprintf/sprintf/etc. for the xmega is broken in this
release. No matter how I craft it the same code pattern is repeated with
the mangling of the stack on clean-up.
Sigh.
----
From: address@hidden
[mailto:address@hidden On Behalf Of
larry barello
Sent: Saturday, January 17, 2009 12:38 PM
To: address@hidden
Subject: [avr-gcc-list] Funny business with latest WinAvr 20081205 +
xmega128A1 and stdio
I have hit this roadblock in porting over my application from my mega128
test bed to the xmega. As far as I can tell the compiler completely wedges
a very simple routine (and it worked earlier, so it *must* be something I am
doing
)
Anyway, the code is below. The compiler fails to re-load R24 with the
proper stack value after poking the CCP register..
The generated code is the same Os and O1, I have not tried anything else.
void PrintBanner(FILE *fp)
{
fprintf_P(fp, PSTR("%s\r\n"), VersionString);
}
75 .global PrintBanner
77 PrintBanner:
78 .LFB93:
79 .LM9:
80 .LVL6:
81 /* prologue: function */
82 /* frame size = 0 */
83 .LM10:
84 003a 00D0 rcall .
85 003c 00D0 rcall .
86 003e EDB7 in r30,__SP_L__
87 0040 FEB7 in r31,__SP_H__
88 0042 3196 adiw r30,1
89 0044 ADB7 in r26,__SP_L__
90 0046 BEB7 in r27,__SP_H__
91 0048 1196 adiw r26,1
92 004a 8D93 st X+,r24
93 004c 9C93 st X,r25
94 004e 1297 sbiw r26,1+1
95 0050 80E0 ldi r24,lo8(__c.5488)
96 0052 90E0 ldi r25,hi8(__c.5488)
97 .LVL7:
98 0054 8283 std Z+2,r24
99 0056 9383 std Z+3,r25
100 0058 80E0 ldi r24,lo8(VersionString)
101 005a 90E0 ldi r25,hi8(VersionString)
102 005c 8483 std Z+4,r24
103 005e 9583 std Z+5,r25
104 0060 0E94 0000 call fprintf_P
105 0064 8DB7 in r24,__SP_L__
106 0066 9EB7 in r25,__SP_H__
107 0068 0696 adiw r24,6
108 006a 082E mov __tmp_reg__,r24
109 006c 88ED ldi r24,0xD8
110 006e 84BF out __CCP__,r24
111 0070 9EBF out __SP_H__,r25
112 0072 8DBF out __SP_L__,r24
113 0074 802D mov r24,__tmp_reg__
114 /* epilogue start */
115 .LM11:
116 0076 0895 ret
Internal Virus Database is out of date.
Checked by AVG - http://www.avg.com
Version: 8.0.176 / Virus Database: 270.10.7/1892 - Release Date: 1/13/2009
8:04 PM