This is the mail archive of the crossgcc@cygnus.com mailing list for the crossgcc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

m68k tstl %a4


Suryo Sukendro wrote:

>I'm trying to build an m68k cross-compiler on Pentium/BSDI3.1 configuration.
>So far, I've been following the crossgcc FAQ from Cygnus
>(ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1). I've downloaded gcc
>2.7.2.2. 
>
>The binutils installation went fine, but the gcc was troublesome. I received
>this warning : 
>
>_floatdixf 
>/var/tmp/cc026193.s: Assembler messages: /var/tmp/cc026193.s:70:
>Error: operands mismatch -- statement `tstl a4' ignored *** Error code 1
>
>which killed the make process.
>
>How would I go about fixing this problem?
>
>Thanks.
>
>Suryo

Changes for the coldfire with 2.7 introduced an error into m68k.md which makes
it generate invalid code for the 68000 when comparing double integers 
(long long). I think that this was fixed in 2.7.2.3 or later.

If you don't use double integers on the 68000 you could:
  1. Use an older verion of gas (binutils-2.7) which fails to notice
       that tstl on an address register doesn't work for the 68000.

  2. Hack out the code in libgcc2.c that accesses long longs.  
 
  3. Modify the Makefile so that it never tries to generate the troublesome
     functions for the m68000 variant of libgcc.a.

Tim Miller
Glenayre Electronics