This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Re: [m68k] Fix m51qe family compilation for gcc >= 4.5.0
- From: Corinna Vinschen <vinschen at redhat dot com>
- To: newlib at sourceware dot org
- Date: Mon, 19 Jul 2010 12:25:17 +0200
- Subject: Re: [m68k] Fix m51qe family compilation for gcc >= 4.5.0
- References: <AANLkTimC7KhTPle89kc7xKS79Cm3EGHl_77D3Qvd4U23@mail.gmail.com>
- Reply-to: newlib at sourceware dot org
Rafael,
On Jul 16 18:11, Rafael Campos wrote:
> Hi all,
>
> Compiling newlib for m68k with the new support added to 51qe family
> it's broken. I'll attach a patch to fix it.
First of all, your patch is missing a ChangeLog entry. Please add one.
As far as I understand your patch, it treats __mcf_family_51 identical
to __mcf_family_51qe, but only if gcc is >= 4.5.1. If the gcc
requirement is necessary, why? If the entire 51 family chokes on
accessing CACR, then I don't see how this has anything to do with the
gcc version, and your patch could be simplified to
-#if !defined(__mcf_family_5213) && !defined(__mcf_family_51qe)
+#if !defined(__mcf_family_5213) && !defined(__mcf_family_51)
assuming that #define __mcf_family_51qe includes #define __mcf_family_51.
Or at least
-#if !defined(__mcf_family_5213) && !defined(__mcf_family_51qe)
+#if !defined(__mcf_family_5213) && !defined(__mcf_family_51) && !defined(__mcf_family_51qe)
So, would you mind to explain a bit more detailed what this patch
fixes exactly and why in this way?
Corinna
>
> Regards,
> --
> Rafael Campos Las Heras (Methril)
> Index: cf-crt1.c
> ===================================================================
> RCS file: /cvs/src/src/libgloss/m68k/cf-crt1.c,v
> retrieving revision 1.4
> diff -u -8 -p -r1.4 cf-crt1.c
> --- cf-crt1.c 16 Jun 2008 18:42:40 -0000 1.4
> +++ cf-crt1.c 16 Jul 2010 21:08:32 -0000
> @@ -63,16 +63,25 @@ void __start1 (void *heap_limit)
>
> /* A default hardware init hook. */
>
> void __attribute__ ((weak)) hardware_init_hook (void)
> {
> /* Set the VBR. */
> __asm__ __volatile__ ("movec.l %0,%/vbr" :: "r" (__interrupt_vector));
>
> +/*Check for GCC >= 4.5 m51qe family definition chage */
> +#if ( __GNUC__ > 4 || (__GNUC__ == 4 && \
> + (__GNUC_MINOR__ > 5 || \
> + (__GNUC_MINOR__ == 5 && __GNUC_PATCHLEVEL__ > 0)) )
> + #if defined(__mcf_family_51)
> + #define __mcf_family_51qe
> + #endif
> +#endif
> +
> #if !defined(__mcf_family_5213) && !defined(__mcf_family_51qe)
> /* Flush & enable the caches */
> #define CACR_CINV (1 << 24)
> #define CACR_CENB (1 << 31)
> __asm__ __volatile__ ("movec.l %0,%/cacr" :: "r" (CACR_CINV | CACR_CENB));
> #endif
>
> /* Should we drop into user mode here? */
--
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat