|
From: | larry barello |
Subject: | [avr-gcc-list] Funny business with latest WinAvr 20081205 + xmega128A1 and stdio |
Date: | Sat, 17 Jan 2009 12:37:57 -0800 |
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 |
[Prev in Thread] | Current Thread | [Next in Thread] |