se505-buildsystem/patches/010_gcc-3.2.3-broadcom.patch

291 lines
12 KiB
Diff

diff -uNrbB gcc-3.2.3/gcc/ada/final.c gcc/gcc/ada/final.c
--- gcc-3.2.3/gcc/ada/final.c 1970-01-01 01:00:00.000000000 +0100
+++ gcc/gcc/ada/final.c 2004-03-31 22:46:33.000000000 +0200
@@ -0,0 +1,57 @@
+/****************************************************************************
+ * *
+ * GNAT COMPILER COMPONENTS *
+ * *
+ * F I N A L *
+ * *
+ * $Revision$
+ * *
+ * C Implementation File *
+ * *
+ * Copyright (C) 1992-2001 Free Software Foundation, Inc. *
+ * *
+ * GNAT is free software; you can redistribute it and/or modify it under *
+ * terms of the GNU General Public License as published by the Free Soft- *
+ * ware Foundation; either version 2, or (at your option) any later ver- *
+ * sion. GNAT is distributed in the hope that it will be useful, but WITH- *
+ * OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License *
+ * for more details. You should have received a copy of the GNU General *
+ * Public License distributed with GNAT; see file COPYING. If not, write *
+ * to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, *
+ * MA 02111-1307, USA. *
+ * *
+ * As a special exception, if you link this file with other files to *
+ * produce an executable, this file does not by itself cause the resulting *
+ * executable to be covered by the GNU General Public License. This except- *
+ * ion does not however invalidate any other reasons why the executable *
+ * file might be covered by the GNU Public License. *
+ * *
+ * GNAT was originally developed by the GNAT team at New York University. *
+ * Extensive contributions were provided by Ada Core Technologies Inc. *
+ * *
+ ****************************************************************************/
+
+#ifdef __alpha_vxworks
+#include "vxWorks.h"
+#endif
+
+#ifdef IN_RTS
+#include "tconfig.h"
+#include "tsystem.h"
+#else
+#include "config.h"
+#include "system.h"
+#endif
+
+#include "raise.h"
+
+/* This routine is called at the extreme end of execution of an Ada program
+ (the call is generated by the binder). The standard routine does nothing
+ at all, the intention is that this be replaced by system specific code
+ where finalization is required. */
+
+void
+__gnat_finalize ()
+{
+}
diff -uNrbB gcc-3.2.3/gcc/configure gcc/gcc/configure
--- gcc-3.2.3/gcc/configure 2003-02-04 01:17:46.000000000 +0100
+++ gcc/gcc/configure 2004-03-31 22:46:44.000000000 +0200
@@ -24,6 +24,8 @@
ac_help="$ac_help
--with-elf arrange to use ELF instead of host debug format"
ac_help="$ac_help
+ --with-bcm4710a0 enable BCM4710A0 compiler workarounds"
+ac_help="$ac_help
--with-local-prefix=DIR specifies directory to put local include"
ac_help="$ac_help
--with-gxx-include-dir=DIR
@@ -109,7 +111,6 @@
program_transform_name=s,x,x,
silent=
site=
-sitefile=
srcdir=
target=NONE
verbose=
@@ -224,7 +225,6 @@
--help print this message
--no-create do not create output files
--quiet, --silent do not print \`checking...' messages
- --site-file=FILE use FILE as the site file
--version print the version of autoconf that created configure
Directory and file names:
--prefix=PREFIX install architecture-independent files in PREFIX
@@ -395,11 +395,6 @@
-site=* | --site=* | --sit=*)
site="$ac_optarg" ;;
- -site-file | --site-file | --site-fil | --site-fi | --site-f)
- ac_prev=sitefile ;;
- -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*)
- sitefile="$ac_optarg" ;;
-
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
@@ -565,16 +560,12 @@
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-if test -z "$sitefile"; then
- if test -z "$CONFIG_SITE"; then
+if test -z "$CONFIG_SITE"; then
if test "x$prefix" != xNONE; then
CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
else
CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
- fi
-else
- CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -750,6 +741,19 @@
fi
+# With BCM4710A0 compiler workarounds
+# Check whether --with-bcm4710a0 or --without-bcm4710a0 was given.
+if test "${with_bcm4710a0+set}" = set; then
+ withval="$with_bcm4710a0"
+ case "${withval}" in
+ yes) cat >> confdefs.h <<\EOF
+#define BCM4710A0 1
+EOF
+ ;;
+esac
+fi
+
+
# Specify the local prefix
local_prefix=
# Check whether --with-local-prefix or --without-local-prefix was given.
diff -uNrbB gcc-3.2.3/gcc/version.c gcc/gcc/version.c
--- gcc-3.2.3/gcc/version.c 2003-04-22 08:16:03.000000000 +0200
+++ gcc/gcc/version.c 2004-03-31 22:46:45.000000000 +0200
@@ -1,4 +1,4 @@
#include "ansidecl.h"
#include "version.h"
-const char *const version_string = "3.2.3";
+const char *const version_string = "3.2.3 with Broadcom modifications";
diff -uNrbB gcc-3.2.3/gcc/config.gcc gcc/gcc/config.gcc
--- gcc-3.2.3/gcc/config.gcc 2003-02-28 19:38:19.000000000 +0100
+++ gcc/gcc/config.gcc 2004-03-31 22:46:44.000000000 +0200
@@ -2216,7 +2216,7 @@
# fi
;;
mips-wrs-vxworks)
- tm_file="mips/elf.h mips/vxworks.h"
+ tm_file="mips/elf.h mips/vxmips.h"
tmake_file=mips/t-ecoff
gas=yes
gnu_ld=yes
diff -uNrbB gcc-3.2.3/gcc/config/mips/vxmips.h gcc/gcc/config/mips/vxmips.h
--- gcc-3.2.3/gcc/config/mips/vxmips.h 1970-01-01 01:00:00.000000000 +0100
+++ gcc/gcc/config/mips/vxmips.h 2004-03-31 22:46:50.000000000 +0200
@@ -0,0 +1,44 @@
+/* Definitions of target machine for GNU compiler. VxWorks MIPS version.
+ Copyright (C) 1996,2001 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+
+#undef SUBTARGET_CPP_SPEC
+#define SUBTARGET_CPP_SPEC "%{!DCPU=*: \
+ %{!mips1: %{!mips2: %{!mips3: %{!mips4: -DCPU=MIPS32}}}} \
+ %{mips1: -DCPU=MIPS32} \
+ %{mips2: -DCPU=MIPS32} \
+ %{mips3: -DCPU=MIPS64} \
+ %{mips4: -DCPU=MIPS64}} -D__CPU__=CPU"
+
+#undef CPP_PREDEFINES
+#define CPP_PREDEFINES "-D__vxworks -D__mips__ -D__MIPSEB__ -Asystem(vxworks)"
+
+/* There is no OS support for this, yet. */
+#undef MIPS_DEFAULT_GVALUE
+#define MIPS_DEFAULT_GVALUE 0
+
+/* VxWorks uses object files, not loadable images. make linker just
+ combine objects. */
+#undef LINK_SPEC
+#define LINK_SPEC "-r"
+
+ /* Use GNU soft FP naming conventions */
+#undef INIT_SUBTARGET_OPTABS
+#define INIT_SUBTARGET_OPTABS
diff -uNrbB gcc-3.2.3/gcc/config/mips/mips.h gcc/gcc/config/mips/mips.h
--- gcc-3.2.3/gcc/config/mips/mips.h 2003-02-12 16:25:48.000000000 +0100
+++ gcc/gcc/config/mips/mips.h 2004-03-31 22:46:50.000000000 +0200
@@ -232,6 +232,7 @@
consts in rodata */
#define MASK_NO_FUSED_MADD 0x01000000 /* Don't generate floating point
multiply-add operations. */
+#define MASK_NO_4710A0 0x02000000 /* WA_BCM4710A0: Don't work-around BCM4710A0 CPU bugs */
/* Debug switches, not documented */
#define MASK_DEBUG 0 /* unused */
@@ -327,6 +328,13 @@
#define TARGET_NO_CHECK_ZERO_DIV (target_flags & MASK_NO_CHECK_ZERO_DIV)
#define TARGET_CHECK_RANGE_DIV (target_flags & MASK_CHECK_RANGE_DIV)
+/* WA_BCM4710A0 */
+#if BCM4710A0
+#define TARGET_4710A0 !(target_flags & MASK_NO_4710A0)
+#else
+#define TARGET_4710A0 0
+#endif
+
/* This is true if we must enable the assembly language file switching
code. */
@@ -460,6 +468,12 @@
N_("Work around early 4300 hardware bug")}, \
{"no-fix4300", -MASK_4300_MUL_FIX, \
N_("Don't work around early 4300 hardware bug")}, \
+ {"4710a0", -MASK_NO_4710A0, \
+ N_("Work around BCM4710A0 hardware bugs")}, \
+ {"no-4710a0", MASK_NO_4710A0, \
+ N_("Don't work around BCM4710A0 hardware bugs")}, \
+ {"4710a0kern", MASK_NO_4710A0, \
+ N_("Don't work around BCM4710A0 hardware bugs")}, \
{"3900", 0, \
N_("Optimize for 3900")}, \
{"4650", 0, \
@@ -636,6 +650,7 @@
/* Disable branchlikely for tx39 until compare rewrite. They haven't
been generated up to this point. */
#define ISA_HAS_BRANCHLIKELY (mips_isa != 1 \
+ && !TARGET_4710A0 \
/* || TARGET_MIPS3900 */)
/* ISA has the conditional move instructions introduced in mips4. */
@@ -847,7 +862,7 @@
/* GAS_ASM_SPEC is passed when using gas, rather than the MIPS
assembler. */
-#define GAS_ASM_SPEC "%{march=*} %{mtune=*} %{mcpu=*} %{m4650} %{mmad:-m4650} %{m3900} %{v} %{mgp32} %{mgp64} %(abi_gas_asm_spec) %{mabi=32:%{!mips*:-mips1}}"
+#define GAS_ASM_SPEC "%{march=*} %{mtune=*} %{mcpu=*} %{m4650} %{m4710a0} %{mno-4710a0:-no-m4710a0} %{m4710a0kern} %{mmad:-m4650} %{m3900} %{v} %{mgp32} %{mgp64} %(abi_gas_asm_spec) %{mabi=32:%{!mips*:-mips1}}"
extern int mips_abi;
diff -uNrbB gcc-3.2.3/gcc/configure.in gcc/gcc/configure.in
--- gcc-3.2.3/gcc/configure.in 2003-02-04 01:17:41.000000000 +0100
+++ gcc/gcc/configure.in 2004-03-31 22:46:44.000000000 +0200
@@ -136,6 +136,13 @@
elf="$with_elf",
elf=no)
+# With BCM4710A0 compiler workarounds
+AC_ARG_WITH(bcm4710a0,
+[ --with-bcm4710a0 enable BCM4710A0 compiler workarounds],
+[case "${withval}" in
+ yes) AC_DEFINE(BCM4710A0, 1, [BCM4710A0 support?]) ;;
+esac])
+
# Specify the local prefix
local_prefix=
AC_ARG_WITH(local-prefix,
diff -uNrbB gcc-3.2.3/gcc/config.in gcc/gcc/config.in
--- gcc-3.2.3/gcc/config.in 2003-04-22 08:56:18.000000000 +0200
+++ gcc/gcc/config.in 2004-03-31 22:46:44.000000000 +0200
@@ -572,3 +572,6 @@
#define const
#endif
#endif
+
+/* Define to 1 for BCM4710A0 compiler workarounds */
+#undef BCM4710A0