avr-gcc-list
[Top][All Lists]
Advanced

[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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]