Ok, then,
send me your sources/assembly code again -- missed it.
~d
On Thursday 23 September 2004 14:16, Tadeusz Szczyrba wrote:
> Hallo Dmitry,
>
> unfortunately the version 3.2.2 is the last mspgcc release available
> for download for linux from mspgcc's sourceforge website.
> There is also no a _really clear_ explanation which versions to compile
> and download with which patches to get all the toolchain running smooth.
>
> I use 3.2.3, compiled with mspgcc patch CVS head for the 3.2.3 branch
> from end of july 2004 and it works quite well. The only downside is the
> lack of backtracing in my gdb (430x147), but I've promised myself, when
> I'll have some time to look at the issue and try to compile it for 6.2
> and make the backtrace work.
>
> I've put my archives with a bit fresher runtime at
>
> http://www.pp.org.pl/~trevor/mspgcc/mspgcc_20040730.tar.bz2
>
> Readme file how to install it (available also inside of the package)
>
> http://www.pp.org.pl/~trevor/mspgcc/README.txt - the versions and
> details are contained inside. It's still prefered to compile and and
> install from sources, but for people it can really simplify the life.
>
> Everything is inside, except gdbproxy - the licence issues of the tools
> don't permit to package it together. I'm not providing the sources,
> because it's compiled from one of the patch revisions available from
> mspgcc website and regular gnu tools distributions. The patch everyone
> can download from mspgcc website, there is no single modification by
> myself in the sourcecode.
>
> Regards,
>
> T.
>
> W liĆcie z czw, 23-09-2004, godz. 09:45, Dmitry pisze:
> > There is something _really_ odd.
> > The listing file you've generated is incomplete. For example,
> > jmp &0x000
> > bic rN, &0x000
> > is impossible.
> >
> > Also, try to use something like gcc-3.2.3, not a pre-release.
> > ~d
> >
> > Tommy Andersson wrote:
> > > Hello maintainers,
> > >
> > > I am using msp430-gcc and friends, and I have found some possible
> > > bugs. My computer is setup according to:
> > >
> > > cat /etc/slackware-version
> > > Slackware 9.0.0
> > >
> > > uname -a
> > > Linux gaston 2.4.20 #2 Mon Mar 17 22:02:15 PST 2003 i686 unknown
> > >
> > > I have included some source-code in this message, which begins at
> > > "Listing 1", and also some assembly output which begins at
> > > "Listing 2". The following files have been downloaded and installed:
> > >
> > > msp430-gcc-3.2.2.20030214.tar.bz2
> > > msp430-libc-1.0.20030207.tar.bz2
> > >
> > > The commandline used to compile the program in listing 1 was:
> > >
> > > msp430-gcc -O -S -fpeephole -fpeephole2 -mmcu=msp430x147 bugsdemo.c -o
> > > bugsdemo.s
> > >
> > > The reason that I activated the flag -fpeephole2, was that I was not
> > > satisfied with the optimization when using the datatype long int. The
> > > flag made the optimizer remove a few redundant instructions, but also,
> > > as we will see, a few necessary instructions as well.
> > >
> > > Now to the details:
> > >
> > > 1. Sourcecode line 63 and line 74 generates an invalid opcode, "jne
> > > &0x0000", as can be seen in lines 44 and 61 in the assembly
> > > listing. The workaround was to rewrite the macros DISABLE_TX_INTR
> > > and ENABLE_TX_INTR to generate function calls. This is not a very
> > > efficient way of coding however.
> > >
> > > 2. Sourcecode line 137 generates an invalid opcode, "jl &0x001D", as
> > > can be seen in line 151 in the assembly listing. The workaround was
> > > to rewrite the macro DATA_DIR_OUT to generate a function call. The
> > > phenomenom seems to be related the one above.
> > >
> > > 3. Lines 237 to 244 have an #if/#else/#endif macro. If the first case
> > > is compiled, the value of grid[0] will not be correct when the call
> > > to pr_txchar( grid[0] ) in line 239 is made. A "mov @r11, r15"
> > > between lines 266 and 267 would save the day. The second case of
> > > the macro always compile correctly. During the writing of this
> > > message I found that the problem disappeared when I omitted the
> > > flag -fpeephole2 on the commandline. The commndline now was:
> > > msp430-gcc -O -S -fpeephole -mmcu=msp430x147 bugsdemo.c -o
> > > bugsdemo.s
> > >
> > > I do not know if -O automatically sets -fpeephole, is there any way of
> > > checking this ?
> > >
> > > NOTE that the line-numbers above refers to line-numbers in the source,
> > > not to line-numbers in this text.
> > >
> > > The code in the example below is copied from different files in
> > > production code.
> > >
> > > With Best Regards, Tommy Andersson
> > >
> > > tommy.anders...@geodynamik.com
> > >
> > > --- Listing 1 begins here ---------------------------------------
> > > #include <io.h>
> > > #include <signal.h>
> > >
> > > #define ENABLE_TX_INTR SFR_CMD(bis.b,IE1,UTXIE0)
> > > #define DISABLE_TX_INTR SFR_CMD(bic.b,IE1,UTXIE0)
> > >
> > > #define U0_BUFSIZE 10
> > > #define PRC_PRINTER 2
> > >
> > > // Push flags and disable interrupts
> > > inline static void pushf_disable( void )
> > > {
> > > asm volatile ( "push r2 \n\t" : : );
> > > dint();
> > > asm volatile ( "nop \n\t" : : ); // dint() is delayed 1 clock !
> > > }
> > >
> > > // Pop the flags, possibly enabling interrupts
> > > inline static void popf( void )
> > > {
> > > asm volatile ( "pop r2 \n\t" : : );
> > > }
> > >
> > > typedef unsigned char BYTE;
> > >
> > > /*** Global control variables: ***/
> > > extern volatile unsigned char curr_pid;
> > >
> > > /*---------------------------------------------------------------------
> > >- Local variables
> > > ----------------------------------------------------------------------*
> > >/ static volatile BYTE tx0_buffer[U0_BUFSIZE];
> > > static volatile BYTE *tx0_head = tx0_buffer;
> > > static volatile BYTE *tx0_tail = tx0_buffer;
> > >
> > > static volatile BYTE tx0_stop;
> > > static volatile BYTE tx0_pending;
> > >
> > > static volatile BYTE suspended, wait_data_flag;
> > >
> > > /*---------------------------------------------------------------------
> > >- Transmit a character through the serial interface. Returns -1 on a
> > > failure, otherwise 0 is returned.
> > > ----------------------------------------------------------------------*
> > >/ int pr_txchar( char ch )
> > > {
> > > BYTE *ptr;
> > >
> > > retry:
> > > DISABLE_TX_INTR;
> > >
> > > if ( !tx0_pending ) { // NO pending transmissions
> > > U0TXBUF = ch;
> > > tx0_pending = 1;
> > > }
> > > else {
> > > ptr = tx0_head;
> > > if (++ptr >= tx0_buffer+U0_BUFSIZE)
> > > ptr = tx0_buffer;
> > > if (ptr == tx0_tail) { // Buffer is FULL !
> > > ENABLE_TX_INTR;
> > >
> > > if ( curr_pid == PRC_PRINTER ) {
> > > pushf_disable();
> > > suspended = 1; // This flag MUST BE SET before suspending the
> > > proc ! proc_suspend( PRC_PRINTER ); // Suspend printer process popf();
> > > goto retry;
> > > }
> > > else
> > > return -1; // Otherwise, return error.
> > > }
> > > *tx0_head = ch; // Save next printer character.
> > > tx0_head = ptr;
> > > }
> > > ENABLE_TX_INTR;
> > > return 0;
> > > }
> > >
> > > #define CLOCK_LOW SFR_CMD( bic, P4OUT, 1<<0 )
> > > #define CLOCK_HIGH SFR_CMD( bis, P4OUT, 1<<0 )
> > > #define DATA_LOW SFR_CMD( bic, P4OUT, 1<<1 )
> > > #define DATA_HIGH SFR_CMD( bis, P4OUT, 1<<1 )
> > > #define DATA_DIR_IN SFR_CMD( bic, P4DIR, 1<<1 )
> > > #define DATA_DIR_OUT SFR_CMD( bis, P4DIR, 1<<1 )
> > > #define DATA_IN (P4IN&(1<<1))
> > >
> > > /*---------------------------------------------------------------------
> > >- Read one byte of data from the RTC.
> > >
> > > The argument 'bytecount' shall be assigned the number of to be read at
> > > this 'session', and is used to control the acknowledge bit.
> > > ----------------------------------------------------------------------*
> > >/ static unsigned char rtc_read( signed char bytecount )
> > > {
> > > unsigned char bitcount, data_read;
> > > static signed char count;
> > >
> > > if (bytecount)
> > > count = bytecount-1;
> > > else
> > > --count;
> > >
> > > DATA_DIR_IN; // DATA goes high (hi-z)
> > > for (bitcount = 0; bitcount < 8; bitcount++ ) {
> > > CLOCK_HIGH;
> > > delay_us( 4 );
> > >
> > > data_read <<= 1;
> > > if ( DATA_IN )
> > > data_read |= (1<<0);
> > > else
> > > data_read &= ~(1<<0);
> > >
> > > CLOCK_LOW;
> > > delay_us( 4 );
> > > }
> > > DATA_LOW;
> > >
> > > if ( count > 0 )
> > > DATA_DIR_OUT; // DATA goes low -> Acknowledge */
> > >
> > > delay_us( 2 );
> > > CLOCK_HIGH;
> > > delay_us( 4 );
> > > CLOCK_LOW;
> > > delay_us( 2 );
> > > DATA_DIR_IN;
> > >
> > > return data_read;
> > > }
> > >
> > > #define LF 10
> > > #define FF 12
> > > #define CR 13
> > > #define ESC 27
> > >
> > > #define WIDTH_CHAR 12
> > > #define WIDTH_PRINTROW 400
> > > #define MAXWIDTH_PRINTROW
> > > (WIDTH_PRINTROW>WIDTH_LOGO?WIDTH_PRINTROW:WIDTH_LOGO)
> > > #define LOGO_HORZ_TAB ((480-300)/2)
> > > #define HDR_HORZ_TAB 49
> > > #define DATA_HORZ_TAB 49
> > > #define FOOT_HORZ_TAB 49
> > > #define HEIGHT_TEXTLINE 12
> > > #define HEIGHT_PRINTROW 8
> > > #define HEIGHT_FOOTER (12*HEIGHT_TEXTLINE)
> > > #define HEIGHT_A4 ((int)(VERT_DPI*297/25.4))
> > > #define HORZ_GRIDLINE_SPACE 30
> > > #define COARSE_VERT_GRIDLINE_SPACE 67
> > > #define FINE_VERT_GRIDLINE_SPACE 100
> > > #define CURVE_WIDTH 3
> > >
> > > #define PC_BEGIN_LOGO {pr_txchar(ESC);pr_txchar('L');\
> > >
> > > pr_txchar((WIDTH_LOGO+LOGO_HORZ_TAB)&0xff);\
> > > pr_txchar((WIDTH_LOGO+LOGO_HORZ_TAB)>>8);} #define PC_BEGIN_HDRTAB
> > > {pr_txchar(ESC);pr_txchar('L');\ pr_txchar(LOGO_HORZ_TAB&0xff);\
> > > pr_txchar(LOGO_HORZ_TAB>>8);}
> > > #define PC_BEGIN_GRAPHIC {pr_txchar(ESC);pr_txchar('L');\
> > > pr_txchar((WIDTH_PRINTROW)&0xff);\
> > > pr_txchar((WIDTH_PRINTROW)>>8);}
> > > #define PC_BEGIN_GRA_RMV {pr_txchar(ESC);pr_txchar('L');\
> > > pr_txchar((WIDTH_PRINTROW+5)&0xff);\
> > > pr_txchar((WIDTH_PRINTROW+5)>>8);}
> > > #define PC_SET_LINESPACING(x)
> > > {pr_txchar(ESC);pr_txchar('A');pr_txchar(x);} #define
> > > PC_SET_GRLINESPACING {pr_txchar(ESC);pr_txchar('A');pr_txchar(8);}
> > > #define PC_SET_TXTLINESPACING
> > > {pr_txchar(ESC);pr_txchar('A');pr_txchar(12);} #define
> > > PC_SELECT_CHARSET(x) {pr_txchar(ESC);pr_txchar('R');pr_txchar(x);\
> > > pr_txchar(ESC);pr_txchar('t');pr_txchar(x);} #define PC_CRLF
> > > {pr_txchar(CR);pr_txchar(LF);} #define PC_PIXELTAB(x)
> > > {int q;pr_txchar(ESC);pr_txchar('L');\
> > > pr_txchar((x)&0xff);pr_txchar((x)>>8);\ for(q=(x);q;q--)pr_txchar(0);}
> > > #define PC_FEED pr_txchar(FF)
> > > #define PC_SET_CONDENSED pr_txchar(0x0f)
> > > #define PC_SET_NORMAL pr_txchar(0x12)
> > >
> > > static int timeaxis;
> > >
> > > unsigned char *make_grid_and_frame( int horz_pos, int vert_pos );
> > > unsigned char create_data_curve( int pos );
> > >
> > > int print_data( void )
> > > {
> > > int printbyte;
> > > unsigned char vline8, *grid;
> > >
> > > PC_SET_GRLINESPACING;
> > > // Left margin
> > > grid = make_grid_and_frame( 0, timeaxis );
> > > if (grid[1] != 128) {
> > > #if (DATA_HORZ_TAB - 4*WIDTH_CHAR -1) < 0
> > > #error "***** Not enough space for numeric scale at left edge *****"
> > > #else
> > > #if (DATA_HORZ_TAB - 4*WIDTH_CHAR -1) > 0
> > > PC_PIXELTAB(DATA_HORZ_TAB - 4*WIDTH_CHAR -1);
> > > #endif
> > > #endif
> > >
> > > pr_txnum_i( (timeaxis+7-grid[1])/3, 3 ); pr_txchar( 's' );
> > > PC_PIXELTAB(1);
> > > }
> > > else
> > > PC_PIXELTAB(DATA_HORZ_TAB);
> > >
> > > // Data
> > > PC_BEGIN_GRA_RMV;
> > >
> > > for (printbyte = 0; printbyte<WIDTH_PRINTROW; printbyte++ ) {
> > > grid = make_grid_and_frame( printbyte, timeaxis );
> > > #ifndef COMPILER_BUG // This does not work due to a compiler bug
> > > grid[0] |= create_data_curve( printbyte );
> > > pr_txchar( grid[0] );
> > > #else
> > > vline8 = grid[0];
> > > vline8 |= create_data_curve( printbyte );
> > > pr_txchar( vline8 );
> > > #endif
> > > }
> > > pr_txchar( 0 );
> > > pr_txchar( 0 );
> > > vline8 = create_rmv8( printbyte );
> > > pr_txchar( vline8 );
> > > pr_txchar( vline8 );
> > > pr_txchar( vline8 );
> > > PC_CRLF;
> > >
> > > timeaxis += 8;
> > > return HEIGHT_PRINTROW;
> > > }
> > >
> > > --- Listing 2 begins here ---------------------------------------
> > > .file "bugsdemo.c"
> > > .arch msp430x147
> > >
> > > /* Hardware multiplier registers: */
> > > __MPY=0x130
> > > __MPYS=0x132
> > > __MAC=0x134
> > > __MACS=0x136
> > > __OP2=0x138
> > > __RESLO=0x13a
> > > __RESHI=0x13c
> > > __SUMEXT=0x13e
> > >
> > > .data
> > > .p2align 1,0
> > > .type tx0_head,@object
> > > .size tx0_head,2
> > > tx0_head:
> > > .short tx0_buffer
> > > .p2align 1,0
> > > .type tx0_tail,@object
> > > .size tx0_tail,2
> > > tx0_tail:
> > > .short tx0_buffer
> > > .text
> > > .p2align 1,0
> > > .global pr_txchar
> > > .type pr_txchar,@function
> > > /***********************
> > > * Function `pr_txchar'
> > > ***********************/
> > > pr_txchar:
> > > /* prologue: frame size = 0 */
> > > .L__FrameSize_pr_txchar=0x0
> > > .L__FrameOffset_pr_txchar=0x2
> > > push r11
> > > /* prologue end (size=1) */
> > > mov.b r15, r11
> > > .L2:
> > > /* #APP */
> > > bic.b #llo(-128), &0x0000
> > > /* #NOAPP */
> > > cmp.b #llo(0), &tx0_pending
> > > jne &0x0000
> > > mov.b r11, &0x0077
> > > mov.b #llo(1), &tx0_pending
> > > jmp .L4
> > > .L3:
> > > mov &tx0_head, r14
> > > add #llo(1), r14
> > > cmp #tx0_buffer+10, r14
> > > jlo .L5
> > > mov #tx0_buffer, r14
> > > .L5:
> > > cmp &tx0_tail, r14
> > > jne .L6
> > > /* #APP */
> > > bis.b #llo(-128), &0x0000
> > > /* #NOAPP */
> > > cmp.b #llo(2), &curr_pid
> > > jne &0x0000
> > > /* #APP */
> > > push r2
> > >
> > > dint
> > > nop
> > >
> > > /* #NOAPP */
> > > mov.b #llo(1), &suspended
> > > mov #llo(2), r15
> > > call #proc_suspend
> > > /* #APP */
> > > pop r2
> > >
> > > /* #NOAPP */
> > > jmp .L2
> > > .L7:
> > > mov #llo(-1), r15
> > > jmp .L1
> > > .L6:
> > > mov &tx0_head, r15
> > > mov.b r11, @r15
> > > mov r14, &tx0_head
> > > .L4:
> > > /* #APP */
> > > bis.b #llo(-128), &0x0000
> > > /* #NOAPP */
> > > mov #llo(0), r15
> > > .L1:
> > > /* epilogue: frame size=0 */
> > > pop r11
> > > ret
> > > /* epilogue end (size=2) */
> > > /* function pr_txchar size 64 (61) */
> > > .Lfe1:
> > > .size pr_txchar,.Lfe1-pr_txchar
> > > /********* End of function ******/
> > >
> > > .local count.0
> > > .comm count.0,1
> > > .p2align 1,0
> > > .type rtc_read,@function
> > > /***********************
> > > * Function `rtc_read'
> > > ***********************/
> > > rtc_read:
> > > /* prologue: frame size = 0 */
> > > .L__FrameSize_rtc_read=0x0
> > > .L__FrameOffset_rtc_read=0x4
> > > push r11
> > > push r10
> > > /* prologue end (size=2) */
> > > cmp.b #llo(0), r15
> > > jeq .L12
> > > add.b #llo(-1), r15
> > > mov.b r15, &count.0
> > > jmp .L13
> > > .L12:
> > > add.b #llo(-1), &count.0
> > > .L13:
> > > /* #APP */
> > > bic #llo(2), &0x001E
> > > /* #NOAPP */
> > > mov.b #llo(0), r10
> > > .L20:
> > > /* #APP */
> > > bis #llo(1), &0x001D
> > > /* #NOAPP */
> > > mov #llo(4), r15
> > > call #delay_us
> > > rla.b r11
> > > bit.b #llo(2),&0x001C
> > > jeq .L18
> > > bis.b #llo(1), r11
> > > jmp .L19
> > > .L18:
> > > bic.b #llo(1),r11
> > > .L19:
> > > /* #APP */
> > > bic #llo(1), &0x001D
> > > /* #NOAPP */
> > > mov #llo(4), r15
> > > call #delay_us
> > > add.b #llo(1), r10
> > > cmp.b #llo(8), r10
> > > jlo .L20
> > > /* #APP */
> > > bic #llo(2), &0x001D
> > > /* #NOAPP */
> > > cmp.b #llo(1), &count.0
> > > jl &0x001D ; &0x001D
> > > /* #APP */
> > > bis #llo(2), &0x001E
> > > /* #NOAPP */
> > > .L21:
> > > mov #llo(2), r15
> > > call #delay_us
> > > /* #APP */
> > > bis #llo(1), &0x001D
> > > /* #NOAPP */
> > > mov #llo(4), r15
> > > call #delay_us
> > > /* #APP */
> > > bic #llo(1), &0x001D
> > > /* #NOAPP */
> > > mov #llo(2), r15
> > > call #delay_us
> > > /* #APP */
> > > bic #llo(2), &0x001E
> > > /* #NOAPP */
> > > mov.b r11, r15
> > > /* epilogue: frame size=0 */
> > > pop r10
> > > pop r11
> > > ret
> > > /* epilogue end (size=3) */
> > > /* function rtc_read size 61 (56) */
> > > .Lfe2:
> > > .size rtc_read,.Lfe2-rtc_read
> > > /********* End of function ******/
> > >
> > > .p2align 1,0
> > > .global print_data
> > > .type print_data,@function
> > > /***********************
> > > * Function `print_data'
> > > ***********************/
> > > print_data:
> > > /* prologue: frame size = 0 */
> > > .L__FrameSize_print_data=0x0
> > > .L__FrameOffset_print_data=0x4
> > > push r11
> > > push r10
> > > /* prologue end (size=2) */
> > > mov.b #llo(27), r15
> > > call #pr_txchar
> > > mov.b #llo(65), r15
> > > call #pr_txchar
> > > mov.b #llo(8), r15
> > > call #pr_txchar
> > > mov &timeaxis, r14
> > > mov #llo(0), r15
> > > call #make_grid_and_frame
> > > cmp.b #llo(-128), 1(r15)
> > > jeq .L25
> > > mov.b 1(r15), r15
> > > mov &timeaxis, r14
> > > sub r15, r14
> > > mov r14, r15
> > > add #llo(7), r15
> > > mov r15, r12
> > > mov #llo(3), r10
> > > call #__divmodhi4
> > > mov r12, r15
> > > mov #llo(3), r14
> > > call #pr_txnum_i
> > > mov.b #llo(115), r15
> > > call #pr_txchar
> > > mov.b #llo(27), r15
> > > call #pr_txchar
> > > mov.b #llo(76), r15
> > > call #pr_txchar
> > > mov.b #llo(1), r15
> > > call #pr_txchar
> > > mov.b #llo(0), r15
> > > call #pr_txchar
> > > mov #llo(1), r11
> > > .L30:
> > > mov.b #llo(0), r15
> > > call #pr_txchar
> > > add #llo(-1), r11
> > > jeq .L31
> > > jmp .L30
> > > .L25:
> > > mov.b #llo(27), r15
> > > call #pr_txchar
> > > mov.b #llo(76), r15
> > > call #pr_txchar
> > > mov.b #llo(49), r15
> > > call #pr_txchar
> > > mov.b #llo(0), r15
> > > call #pr_txchar
> > > mov #llo(49), r11
> > > .L36:
> > > mov.b #llo(0), r15
> > > call #pr_txchar
> > > add #llo(-1), r11
> > > jne .L36
> > > .L31:
> > > mov.b #llo(27), r15
> > > call #pr_txchar
> > > mov.b #llo(76), r15
> > > call #pr_txchar
> > > mov.b #llo(-107), r15
> > > call #pr_txchar
> > > mov.b #llo(1), r15
> > > call #pr_txchar
> > > mov #llo(0), r10
> > > .L41:
> > > mov &timeaxis, r14
> > > mov r10, r15
> > > call #make_grid_and_frame
> > > mov r15, r11
> > > mov r10, r15
> > > call #create_data_curve
> > > bis.b r15, @r11
> > > call #pr_txchar
> > > add #llo(1), r10
> > > cmp #llo(400), r10
> > > jl .L41 ; .L41
> > > mov.b #llo(0), r15
> > > call #pr_txchar
> > > mov.b #llo(0), r15
> > > call #pr_txchar
> > > mov r10, r15
> > > call #create_rmv8
> > > mov r15, r11
> > > call #pr_txchar
> > > mov.b r11, r15
> > > call #pr_txchar
> > > mov.b r11, r15
> > > call #pr_txchar
> > > mov.b #llo(13), r15
> > > call #pr_txchar
> > > mov.b #llo(10), r15
> > > call #pr_txchar
> > > add #llo(8), &timeaxis
> > > mov #llo(8), r15
> > > /* epilogue: frame size=0 */
> > > pop r10
> > > pop r11
> > > ret
> > > /* epilogue end (size=3) */
> > > /* function print_data size 153 (148) */
> > > .Lfe3:
> > > .size print_data,.Lfe3-print_data
> > > /********* End of function ******/
> > >
> > > .local tx0_buffer
> > > .comm tx0_buffer,10,2
> > > .local tx0_stop
> > > .comm tx0_stop,1
> > > .local tx0_pending
> > > .comm tx0_pending,1
> > > .local suspended
> > > .comm suspended,1
> > > .local wait_data_flag
> > > .comm wait_data_flag,1
> > > .local timeaxis
> > > .comm timeaxis,2,2
> > >
> > > /*********************************************************************
> > > * File bugsdemo.c: code size: 278 words (0x116)
> > > * incl. words in prologues: 5, epilogues: 8
> > > *********************************************************************/
> > >
> > > --- End Of File ---------------------------------------
> > >
> > > -------------------------------------------------------
> > > This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
> > > Project Admins to receive an Apple iPod Mini FREE for your judgement on
> > > who ports your project to Linux PPC the best. Sponsored by IBM.
> > > Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php
> > > _______________________________________________
> > > Mspgcc-users mailing list
> > > Mspgcc-users@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/mspgcc-users
> >
> > -------------------------------------------------------
> > This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
> > Project Admins to receive an Apple iPod Mini FREE for your judgement on
> > who ports your project to Linux PPC the best. Sponsored by IBM.
> > Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php
> > _______________________________________________
> > Mspgcc-users mailing list
> > Mspgcc-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>
> -------------------------------------------------------
> This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
> Project Admins to receive an Apple iPod Mini FREE for your judgement on
> who ports your project to Linux PPC the best. Sponsored by IBM.
> Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php
> _______________________________________________
> Mspgcc-users mailing list
> Mspgcc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users