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]

RE: Coldfire support



On 14-Jan-99 Wynn Rostek wrote:
>  Does anyone have experience with the GNU tool chain supporting the Coldfire
>  processor?  We've got assemblers but the job would go quicker with a C
>  compiler and a debugger.

I just went through the process of putting together a ColdFire tool chain.
This is the information I needed to know, but couldn't find anywhere.

For a complete toolchain you will need:
  binutils-2.9.1  (I have seen messages referring to 2.9.1.0.xx but I don't
                   know where these later version(s) come from)
  egcs-1.1.1
  newlib-1.8.1

These are all available from the Cygnus web sites http://egcs.cygnus.com/ and
http://www.cygnus.com/

In addition, you should apply the RTEMS patches to binutils-2.9.1, and the
attached patch for egcs-1.1.1. Both fix bugs.

The RTEMS patch file is available from the RTEMS web site. You can reach the
RTEMS web site from David Fiddes site at
http://www.calm.hw.ac.uk/davidf/coldfire

Configure the tools for a target of m68k-coff. This will build a toolset
supporting 680x0, CPU32 and ColdFire processors.  The CrossGCC FAQ gives more
info about building a cross tool chain in general.


-- 
Mark Powell, Senior Software Engineer, Primagraphics Limited
New Cambridge House, Litlington, nr.Royston, Herts, SG8 0SS, UK
Tel. +44 1763 852222, Fax. 853324, medp@primag.co.uk, http://www.primag.co.uk

*** ../egcs-1.1.1-medp1/gcc/expr.c	Tue Oct 27 00:05:28 1998
--- gcc/expr.c	Tue Dec 29 11:36:18 1998
***************
*** 3457,3466 ****
  
    /* If value was not generated in the target, store it there.
       Convert the value to TARGET's type first if nec.  */
  
    if ((! rtx_equal_p (temp, target)
!        || side_effects_p (temp)
!        || side_effects_p (target))
        && TREE_CODE (exp) != ERROR_MARK)
      {
        target = protect_from_queue (target, 1);
--- 3658,3678 ----
  
    /* If value was not generated in the target, store it there.
       Convert the value to TARGET's type first if nec.  */
+   /* If TEMP and TARGET compare equal according to rtx_equal_p, but
+      one or both of them are volatile memory refs, we have to distinguish
+      two cases:
+      - expand_expr has used TARGET.  In this case, we must not generate
+        another copy.  This can be detected by TARGET being equal according
+        to == .
+      - expand_expr has not used TARGET - that means that the source just
+        happens to have the same RTX form.  Since temp will have been created
+        by expand_expr, it will compare unequal according to == .
+        We must generate a copy in this case, to reach the correct number
+        of volatile memory references.  */
  
    if ((! rtx_equal_p (temp, target)
!        || (temp != target && (side_effects_p (temp)
! 			      || side_effects_p (target))))
        && TREE_CODE (exp) != ERROR_MARK)
      {
        target = protect_from_queue (target, 1);