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