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] |
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);