Commit 7c942e17 by Zack Weinberg

config.gcc: Purge all targets obsoleted in GCC 3.3.

	* config.gcc: Purge all targets obsoleted in GCC 3.3.  Also
	remove hppa*-*-mpeix* which could not be built, and prune
	files from tmake_file= or tm_file= lists that don't exist.

	* config/alpha/alpha-interix.h, config/alpha/alpha32.h
	* config/alpha/t-interix, config/arm/conix-elf.h
	* config/arm/t-arm-aout, config/arm/t-strongarm-coff
	* config/arm/unknown-elf-oabi.h, config/i386/win32.h
	* config/m68k/3b1.h, config/m68k/3b1g.h, config/m68k/amix.h
	* config/m68k/atari.h, config/m68k/ccur-GAS.h, config/m68k/crds.h
	* config/m68k/hp2bsd.h, config/m68k/hp3bsd.h
	* config/m68k/hp3bsd44.h, config/m68k/linux-aout.h
	* config/m68k/m68k-psos.h, config/m68k/mot3300.h
	* config/m68k/pbb.h, config/m68k/plexus.h, config/m68k/sun2.h
	* config/m68k/sun2o4.h, config/m68k/sun3.h, config/m68k/sun3mach.h
	* config/m68k/sun3n.h, config/m68k/sun3n3.h, config/m68k/sun3o3.h
	* config/m68k/t-mot3300, config/m68k/t-mot3300-gald
	* config/m68k/t-mot3300-gas, config/m68k/t-mot3300-gld
	* config/m68k/tower-as.h, config/m68k/tower.h
	* config/m88k/aout-dbx.h, config/m88k/m88k-aout.h
	* config/m88k/m88k-modes.def, config/m88k/m88k-move.sh
	* config/m88k/m88k-protos.h, config/m88k/m88k.c
	* config/m88k/m88k.h, config/m88k/m88k.md, config/m88k/openbsd.h
	* config/m88k/sysv4.h, config/m88k/t-luna, config/m88k/t-luna-gas
	* config/m88k/t-m88k, config/m88k/t-sysv4, config/mcore/gfloat.h
	* config/mips/rtems64.h, config/mips/sni-gas.h
	* config/mips/sni-svr4.h, config/mips/t-ecoff
	* config/mn10200/lib1funcs.asm, config/mn10200/mn10200-protos.h
	* config/mn10200/mn10200.c, config/mn10200/mn10200.h
	* config/mn10200/mn10200.md, config/mn10200/t-mn10200
	* config/pa/pa-hiux.h, config/pa/pa-hpux7.h, config/pa/pa-hpux9.h
	* config/pa/pa-oldas.h, config/pa/t-mpeix, config/psos.h
	* config/romp/romp-protos.h, config/romp/romp.c
	* config/romp/romp.h, config/romp/romp.md, config/rs6000/aix31.h
	* config/rs6000/aix3newas.h, config/rs6000/mach.h
	* config/sparc/bsd.h, config/sparc/hal.h
	* config/sparc/linux-aout.h, config/sparc/lynx-ng.h
	* config/sparc/lynx.h, config/sparc/netbsd.h
	* config/sparc/sp86x-aout.h, config/sparc/splet.h
	* config/sparc/sun4gas.h, config/sparc/sun4o3.h
	* config/sparc/sunos4.h, config/sparc/t-chorus-elf
	* config/sparc/t-halos, config/sparc/t-sparcbare
	* config/sparc/t-splet, config/sparc/t-sunos41
	* config/v850/rtems.h: Delete file.

From-SVN: r66842
parent a6ebc39a
2003-05-15 Zack Weinberg <zack@codesourcery.com>
* config.gcc: Purge all targets obsoleted in GCC 3.3. Also
remove hppa*-*-mpeix* which could not be built, and prune
files from tmake_file= or tm_file= lists that don't exist.
* config/alpha/alpha-interix.h, config/alpha/alpha32.h
* config/alpha/t-interix, config/arm/conix-elf.h
* config/arm/t-arm-aout, config/arm/t-strongarm-coff
* config/arm/unknown-elf-oabi.h, config/i386/win32.h
* config/m68k/3b1.h, config/m68k/3b1g.h, config/m68k/amix.h
* config/m68k/atari.h, config/m68k/ccur-GAS.h, config/m68k/crds.h
* config/m68k/hp2bsd.h, config/m68k/hp3bsd.h
* config/m68k/hp3bsd44.h, config/m68k/linux-aout.h
* config/m68k/m68k-psos.h, config/m68k/mot3300.h
* config/m68k/pbb.h, config/m68k/plexus.h, config/m68k/sun2.h
* config/m68k/sun2o4.h, config/m68k/sun3.h, config/m68k/sun3mach.h
* config/m68k/sun3n.h, config/m68k/sun3n3.h, config/m68k/sun3o3.h
* config/m68k/t-mot3300, config/m68k/t-mot3300-gald
* config/m68k/t-mot3300-gas, config/m68k/t-mot3300-gld
* config/m68k/tower-as.h, config/m68k/tower.h
* config/m88k/aout-dbx.h, config/m88k/m88k-aout.h
* config/m88k/m88k-modes.def, config/m88k/m88k-move.sh
* config/m88k/m88k-protos.h, config/m88k/m88k.c
* config/m88k/m88k.h, config/m88k/m88k.md, config/m88k/openbsd.h
* config/m88k/sysv4.h, config/m88k/t-luna, config/m88k/t-luna-gas
* config/m88k/t-m88k, config/m88k/t-sysv4, config/mcore/gfloat.h
* config/mips/rtems64.h, config/mips/sni-gas.h
* config/mips/sni-svr4.h, config/mips/t-ecoff
* config/mn10200/lib1funcs.asm, config/mn10200/mn10200-protos.h
* config/mn10200/mn10200.c, config/mn10200/mn10200.h
* config/mn10200/mn10200.md, config/mn10200/t-mn10200
* config/pa/pa-hiux.h, config/pa/pa-hpux7.h, config/pa/pa-hpux9.h
* config/pa/pa-oldas.h, config/pa/t-mpeix, config/psos.h
* config/romp/romp-protos.h, config/romp/romp.c
* config/romp/romp.h, config/romp/romp.md, config/rs6000/aix31.h
* config/rs6000/aix3newas.h, config/rs6000/mach.h
* config/sparc/bsd.h, config/sparc/hal.h
* config/sparc/linux-aout.h, config/sparc/lynx-ng.h
* config/sparc/lynx.h, config/sparc/netbsd.h
* config/sparc/sp86x-aout.h, config/sparc/splet.h
* config/sparc/sun4gas.h, config/sparc/sun4o3.h
* config/sparc/sunos4.h, config/sparc/t-chorus-elf
* config/sparc/t-halos, config/sparc/t-sparcbare
* config/sparc/t-splet, config/sparc/t-sunos41
* config/v850/rtems.h: Delete file.
2003-05-15 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/rs6000-protos.h (function_value): Protoize.
* config/rs6000/rs6000-protos.h (function_value): Protoize.
* config/rs6000/rs6000.h (FUNCTION_VALUE): Call function.
* config/rs6000/rs6000.h (FUNCTION_VALUE): Call function.
* config/rs6000/rs6000.c (rs6000_function_value): New.
* config/rs6000/rs6000.c (rs6000_function_value): New.
2003-05-15 Philip Blundell <philb@gnu.org>
......
/* Definitions of target machine for GNU compiler, for DEC Alpha
running Windows/NT.
Copyright (C) 1995, 1996, 1999, 2000, 2002 Free Software Foundation, Inc.
Donn Terry, Softway Systems, Inc.
From code
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
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. */
/* cpp handles __STDC__ */
/* The three "Alpha" defines on the first such line are from the CLAXP spec */
#define TARGET_OS_CPP_BUILTINS() \
do { \
builtin_define ("__INTERIX"); \
builtin_define ("__OPENNT"); \
builtin_define ("__Alpha_AXP"); \
builtin_define ("_M_ALPHA"); \
builtin_define ("_ALPHA_"); \
builtin_define ("__stdcall="); \
builtin_define ("__cdecl="); \
builtin_assert ("system=unix"); \
builtin_assert ("system=interix"); \
} while (0)
#undef CPP_SUBTARGET_SPEC
#define CPP_SUBTARGET_SPEC "\
-remap \
%{posix:-D_POSIX_SOURCE} \
-isystem %$INTERIX_ROOT/usr/include"
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (alpha Interix)");
/* alpha.h sets this, but it doesn't apply to us */
#undef OBJECT_FORMAT_ECOFF
#undef OBJECT_FORMAT_COFF
/* LINK_SPEC */
/* MD_STARTFILE_PREFIX */
/* ASM_OUTPUT_LOOP_ALIGN; ASM_OUTPUT_ALIGN_CODE */
/* Codegen macro overrides for NT internal conventions */
/* the below are ecoff specific... we don't need them, so
undef them (they'll get a default later) */
#undef PUT_SDB_BLOCK_START
#undef PUT_SDB_BLOCK_END
/* The following are needed for C++, but also needed for profiling */
/* Support const sections and the ctors and dtors sections for g++. */
#define READONLY_DATA_SECTION_ASM_OP "\t.rdata"
/* Define the pseudo-ops used to switch to the .ctors and .dtors sections.
Note that we want to give these sections the SHF_WRITE attribute
because these sections will actually contain data (i.e. tables of
addresses of functions in the current root executable or shared library
file) and, in the case of a shared library, the relocatable addresses
will have to be properly resolved/relocated (and then written into) by
the dynamic linker when it actually attaches the given shared library
to the executing process. (Note that on SVR4, you may wish to use the
`-z text' option to the ELF linker, when building a shared library, as
an additional check that you are doing everything right. But if you do
use the `-z text' option when building a shared library, you will get
errors unless the .ctors and .dtors sections are marked as writable
via the SHF_WRITE attribute.) */
#define CTORS_SECTION_ASM_OP "\t.ctors"
#define DTORS_SECTION_ASM_OP "\t.dtors"
/* The linker will take care of this, and having them causes problems with
ld -r (specifically -rU). */
#define CTOR_LISTS_DEFINED_EXTERNALLY 1
#define SET_ASM_OP "\t.set\t"
/* Output a definition (implements alias) */
#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \
do \
{ \
fprintf ((FILE), "\t"); \
assemble_name (FILE, LABEL1); \
fprintf (FILE, "="); \
assemble_name (FILE, LABEL2); \
fprintf (FILE, "\n"); \
} \
while (0)
/* We use the defaults, so undef the null definitions */
#undef PUT_SDB_FUNCTION_START
#undef PUT_SDB_FUNCTION_END
#undef PUT_SDB_EPILOGUE_END
#define HOST_PTR_PRINTF "%p"
#define HOST_PTR_AS_INT unsigned long
#define PCC_BITFIELD_TYPE_MATTERS 1
#define PCC_BITFIELD_TYPE_TEST TYPE_NATIVE(rec)
#define GROUP_BITFIELDS_BY_ALIGN TYPE_NATIVE(rec)
/* DWARF2 Unwinding doesn't work with exception handling yet. */
#undef DWARF2_UNWIND_INFO
#define DWARF2_UNWIND_INFO 0
/* Don't assume anything about the header files. */
#define NO_IMPLICIT_EXTERN_C
/* The definition of this macro implies that there are cases where
a scalar value cannot be returned in registers.
On NT (according to the spec) anything except strings/array that fits
in 64 bits is returned in the registers (this appears to differ from
the rest of the Alpha family). */
#undef RETURN_IN_MEMORY
#define RETURN_IN_MEMORY(TYPE) \
(TREE_CODE (TYPE) == ARRAY_TYPE || int_size_in_bytes(TYPE) > 8)
#define ASM_LOAD_ADDR(loc, reg) " lda " #reg "," #loc "\n"
#undef ASM_FILE_START
#define ASM_FILE_START(FILE) \
{ \
alpha_write_verstamp (FILE); \
fprintf (FILE, "\t.set noreorder\n"); \
fprintf (FILE, "\t.set volatile\n"); \
fprintf (FILE, "\t.set noat\n"); \
fprintf (FILE, "\t.globl\t__fltused\n"); \
ASM_OUTPUT_SOURCE_FILENAME (FILE, main_input_filename); \
}
/* Definitions of target machine for GNU compiler, for DEC Alpha
running Windows/NT.
Copyright (C) 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
Derived from code
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
Donn Terry, Softway Systems, Inc.
This file contains the code-generation stuff common to the 32-bit
versions of the DEC/Compaq Alpha architecture. It is shared by
Interix and NT/Win32 ports. It should not contain compile-time
or run-time dependent environment values (such as compiler options
or anything containing a file or pathname.)
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 TARGET_ABI_WINDOWS_NT
#define TARGET_ABI_WINDOWS_NT 1
/* WinNT (and thus Interix) use unsigned int */
#define SIZE_TYPE "unsigned int"
/* Pointer is 32 bits but the hardware has 64-bit addresses, sign extended. */
#undef POINTER_SIZE
#define POINTER_SIZE 32
#define POINTERS_EXTEND_UNSIGNED 0
/* We don't change Pmode to the "obvious" SI mode... the above appears
to affect the in-memory size; we want the registers to stay DImode
to match the md file */
/* "long" is 32 bits. */
#undef LONG_TYPE_SIZE
#define LONG_TYPE_SIZE 32
/* Output assembler code for a block containing the constant parts
of a trampoline, leaving space for the variable parts.
The trampoline should set the static chain pointer to value placed
into the trampoline and should branch to the specified routine. */
#undef TRAMPOLINE_TEMPLATE
#define TRAMPOLINE_TEMPLATE(FILE) \
{ \
fprintf (FILE, "\tbr $27,$LTRAMPP\n"); \
fprintf (FILE, "$LTRAMPP:\n\tldl $1,12($27)\n"); \
fprintf (FILE, "\tldl $27,16($27)\n"); \
fprintf (FILE, "\tjmp $31,($27),0\n"); \
fprintf (FILE, "\t.long 0,0\n"); \
}
/* Length in units of the trampoline for entering a nested function. */
#undef TRAMPOLINE_SIZE
#define TRAMPOLINE_SIZE 24
/* The alignment of a trampoline, in bits. */
#undef TRAMPOLINE_ALIGNMENT
#define TRAMPOLINE_ALIGNMENT 32
/* Emit RTL insns to initialize the variable parts of a trampoline.
FNADDR is an RTX for the address of the function's pure code.
CXT is an RTX for the static chain value for the function. */
#undef INITIALIZE_TRAMPOLINE
#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
alpha_initialize_trampoline (TRAMP, FNADDR, CXT, 20, 16, 12)
# t-interix
# System headers will track gcc's needs.
USER_H=
LIB1ASMSRC = alpha/lib1funcs.asm
LIB1ASMFUNCS = _divqu _divq _divlu _divl _remqu _remq _remlu _reml
/* Definitions of target machine for GNU compiler,
for ARM with ConiX OS.
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
Contributed by Philip Blundell <pb@futuretv.com>
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
`Boston, MA 02111-1307, USA. */
/* elfos.h should have already been included. Now just override
any conflicting definitions and add any extras. */
/* Run-time Target Specification. */
#undef TARGET_VERSION
#define TARGET_VERSION fputs (" (ARM/ELF ConiX)", stderr);
/* Default to using APCS-32 and software floating point. */
#undef TARGET_DEFAULT
#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32)
#ifndef CPP_APCS_PC_DEFAULT_SPEC
#define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
#endif
#ifndef SUBTARGET_CPU_DEFAULT
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm7tdmi
#endif
#define TARGET_OS_CPP_BUILTINS() \
do { \
builtin_define ("__CONIX__"); \
builtin_define ("__ELF__"); \
} while (0)
LIB1ASMSRC = arm/lib1funcs.asm
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX _interwork_call_via_rX
# We want fine grained libraries, so use the new code to build the
# floating point emulation libraries.
FPBIT = fp-bit.c
DPBIT = dp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
echo '#ifndef __ARMEB__' >> fp-bit.c
echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c
echo '#endif' >> fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
dp-bit.c: $(srcdir)/config/fp-bit.c
echo '#ifndef __ARMEB__' > dp-bit.c
echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c
echo '#define FLOAT_WORD_ORDER_MISMATCH' >> dp-bit.c
echo '#endif' >> dp-bit.c
cat $(srcdir)/config/fp-bit.c >> dp-bit.c
# MULTILIB_OPTIONS = mhard-float/msoft-float mapcs-32/mapcs-26 mno-thumb-interwork/mthumb-interwork arm/thumb
# MULTILIB_DIRNAMES = le be fpu soft 32bit 26bit normal interwork arm thumb
# MULTILIB_MATCHES =
# MULTILIB_EXCEPTIONS = *mapcs-26/*mthumb-interwork* *mpacs-26/*mthumb*
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
LIB1ASMSRC = arm/lib1funcs.asm
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func
# We want fine grained libraries, so use the new code to build the
# floating point emulation libraries.
FPBIT = fp-bit.c
DPBIT = dp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
echo '#ifndef __ARMEB__' >> fp-bit.c
echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c
echo '#endif' >> fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
dp-bit.c: $(srcdir)/config/fp-bit.c
echo '#ifndef __ARMEB__' > dp-bit.c
echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c
echo '#define FLOAT_WORD_ORDER_MISMATCH' >> dp-bit.c
echo '#endif' >> dp-bit.c
cat $(srcdir)/config/fp-bit.c >> dp-bit.c
MULTILIB_OPTIONS = mlittle-endian/mbig-endian mhard-float/msoft-float
MULTILIB_DIRNAMES = le be fpu soft
MULTILIB_MATCHES =
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# Currently there is a bug somwehere in GCC's alias analysis
# or scheduling code that is breaking _fpmul_parts in fp-bit.c.
# Disabling function inlining is a workaround for this problem.
TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
/* Definitions for non-Linux based ARM systems using ELF old abi
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
Contributed by Catherine Moore <clm@cygnus.com>
This file is part of GCC.
GCC 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.
GCC 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 this program; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Run-time Target Specification. */
#undef TARGET_VERSION
#define TARGET_VERSION fputs (" (ARM/ELF non-Linux old abi)", stderr);
#undef ASM_SPEC
#define ASM_SPEC "-moabi %{mbig-endian:-EB} %{mcpu=*:-mcpu=%*} %{march=*:-march=%*} \
%{mapcs-*:-mapcs-%*} %{mthumb-interwork:-mthumb-interwork}"
/* Operating system specific defines to be used when targeting GCC for
hosting on Windows NT 3.x, using a Unix style C library and tools,
as distinct from winnt.h, which is used to build GCC for use with a
windows style library and tool set and uses the Microsoft tools.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002
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. */
/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */
#define HANDLE_PRAGMA_PACK_PUSH_POP 1
#define DBX_DEBUGGING_INFO 1
#define SDB_DEBUGGING_INFO 1
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
#include "i386/unix.h"
#include "i386/bsd.h"
#include "i386/gas.h"
#include "dbxcoff.h"
/* Augment TARGET_SWITCHES with the cygwin/win32 options. */
#define MASK_WIN32 0x40000000 /* Use -lming32 interface */
#define MASK_CYGWIN 0x20000000 /* Use -lcygwin interface */
#define MASK_WINDOWS 0x10000000 /* Use windows interface */
#define MASK_DLL 0x08000000 /* Use dll interface */
#define MASK_NOP_FUN_DLLIMPORT 0x20000 /* Ignore dllimport for functions */
#define TARGET_WIN32 (target_flags & MASK_WIN32)
#define TARGET_CYGWIN (target_flags & MASK_CYGWIN)
#define TARGET_WINDOWS (target_flags & MASK_WINDOWS)
#define TARGET_DLL (target_flags & MASK_DLL)
#define TARGET_NOP_FUN_DLLIMPORT (target_flags & MASK_NOP_FUN_DLLIMPORT)
#undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES \
{ "win32", MASK_WIN32, \
N_("Use Mingw32 interface") }, \
{ "cygwin", MASK_CYGWIN, \
N_("Use Cygwin interface") }, \
{ "windows", MASK_WINDOWS, \
N_("Use bare Windows interface") }, \
{ "dll", MASK_DLL, \
N_("Generate code for a DLL") }, \
{ "nop-fun-dllimport", MASK_NOP_FUN_DLLIMPORT, \
N_("Ignore dllimport for functions") }, \
{ "no-nop-fun-dllimport", MASK_NOP_FUN_DLLIMPORT, "" },
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define ("_WIN32"); \
builtin_define_std ("WINNT"); \
builtin_define ("_X86_"); \
builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
builtin_assert ("system=winnt"); \
if (TARGET_CYGWIN) \
{ \
builtin_define ("__CYGWIN32__"); \
builtin_define ("__CYGWIN__"); \
} \
else \
builtin_define ("__MINGW32__"); \
} \
while (0)
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%{mdll:dllcrt0%O%s} %{!mdll: %{!mcygwin:mcrt0%O%s} \
%{mcygwin:crt0%O%s} %{pg:gcrt0%O%s}}"
#undef CPP_SPEC
#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} \
%{!mcygwin:-iwithprefixbefore include/mingw32}"
/* We have to dynamic link to get to the system DLLs. All of libc, libm and
the Unix stuff is in cygwin.dll. The import library is called
'libcygwin.a'. For Windows applications, include more libraries, but
always include kernel32. We'd like to specific subsystem windows to
ld, but that doesn't work just yet. */
#undef LIB_SPEC
#define LIB_SPEC "%{pg:-lgmon} \
%{!mcygwin:-lmingw32 -lmoldname -lmsvcrt -lcrtdll} \
%{mcygwin:-lcygwin} %{mwindows:-luser32 -lgdi32 -lcomdlg32} \
-lkernel32 -ladvapi32 -lshell32"
#define LINK_SPEC "%{mwindows:--subsystem windows} \
%{mdll:--dll -e _DllMainCRTStartup@12}"
#define SIZE_TYPE "unsigned int"
#define PTRDIFF_TYPE "int"
#define WCHAR_TYPE_SIZE 16
#define WCHAR_TYPE "short unsigned int"
/* Currently we do not have the atexit() function,
so take that from libgcc2.c */
#define NEED_ATEXIT 1
#undef TARGET_ENCODE_SECTION_INFO
#define TARGET_ENCODE_SECTION_INFO i386_pe_encode_section_info
#undef TARGET_STRIP_NAME_ENCODING
#define TARGET_STRIP_NAME_ENCODING i386_pe_strip_name_encoding_full
/* Emit code to check the stack when allocating more that 4000
bytes in one go. */
#define CHECK_STACK_LIMIT 4000
/* By default, target has a 80387, uses IEEE compatible arithmetic,
and returns float values in the 387 and needs stack probes */
#undef TARGET_SUBTARGET_DEFAULT
#define TARGET_SUBTARGET_DEFAULT \
(MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_STACK_PROBE)
/* This is how to output an assembler line
that says to advance the location counter
to a multiple of 2**LOG bytes. */
#undef ASM_OUTPUT_ALIGN
#define ASM_OUTPUT_ALIGN(FILE,LOG) \
if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG))
/* Define this macro if in some cases global symbols from one translation
unit may not be bound to undefined symbols in another translation unit
without user intervention. For instance, under Microsoft Windows
symbols must be explicitly imported from shared libraries (DLLs). */
#define MULTIPLE_SYMBOL_SPACES
extern void i386_pe_unique_section PARAMS ((tree, int));
#define TARGET_ASM_UNIQUE_SECTION i386_pe_unique_section
#define SUPPORTS_ONE_ONLY 1
/* Switch into a generic section. */
#define TARGET_ASM_NAMED_SECTION i386_pe_asm_named_section
/* Select attributes for named sections. */
#define TARGET_SECTION_TYPE_FLAGS i386_pe_section_type_flags
#undef ASM_COMMENT_START
#define ASM_COMMENT_START " #"
/* Don't assume anything about the header files. */
#define NO_IMPLICIT_EXTERN_C
#define SUBTARGET_PROLOGUE \
if (current_function_profile \
&& MAIN_NAME_P (DECL_NAME (current_function_decl)) \
{ \
rtx xops[1]; \
xops[0] = gen_rtx_MEM (FUNCTION_MODE, \
gen_rtx (SYMBOL_REF, Pmode, "_monstartup")); \
emit_call_insn (gen_rtx (CALL, VOIDmode, xops[0], const0_rtx)); \
}
/* Definitions of target machine for GNU compiler, for a 3b1 using GAS.
Copyright (C) 1987, 1988 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. */
#include "m68k/m68k.h"
/* See m68k.h. 0 means 68000 with no 68881. */
#define TARGET_DEFAULT 0
/* Don't try using XFmode. */
#undef LONG_DOUBLE_TYPE_SIZE
#define LONG_DOUBLE_TYPE_SIZE 64
/* Define __HAVE_68881 in preprocessor only if -m68881 is specified.
This will control the use of inline 68881 insns in certain macros.
Also inform the program which CPU this is for. */
#define CPP_SPEC "%{m68881:-D__HAVE_68881__} \
%{!ansi:%{m68020:-Dmc68020}%{mc68020:-Dmc68020}%{!mc68020:%{!m68020:-Dmc68010}}}"
/* -m68020 requires special flags to the assembler. */
#define ASM_SPEC \
"%{m68020:-mc68020}%{mc68020:-mc68020}%{!mc68020:%{!m68020:-mc68010}}"
/* Names to predefine in the preprocessor for this target machine. */
#define CPP_PREDEFINES "-Dmc68000 -Dmc68k -Dunix -Dunixpc -Asystem=unix -Asystem=svr3 -Acpu=m68k -Amachine=m68k"
/* This is (not really) BSD, so (but) it wants DBX format. */
#define DBX_DEBUGGING_INFO 1
/* Specify how to pad function arguments.
Value should be `upward', `downward' or `none'.
Same as the default, except no padding for large or variable-size args. */
#define FUNCTION_ARG_PADDING(MODE, TYPE) \
(((MODE) == BLKmode \
? ((TYPE) && TREE_CODE (TYPE_SIZE (TYPE)) == INTEGER_CST \
&& int_size_in_bytes (TYPE) < PARM_BOUNDARY / BITS_PER_UNIT) \
: GET_MODE_BITSIZE (MODE) < PARM_BOUNDARY) \
? downward : none)
/* Every structure or union's size must be a multiple of 2 bytes. */
#define STRUCTURE_SIZE_BOUNDARY 16
/* Generate calls to memcpy, memcmp and memset. */
#define TARGET_MEM_FUNCTIONS
/* Definitions of target machine for GNU compiler.
Commodore Amiga A3000UX version.
Copyright (C) 1991, 1993, 2000 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. */
#include "m68k/m68kv4.h"
/* rhealey@aggregate.com says dots are no good either. */
#define NO_DOT_IN_LABEL
/* Alter assembler syntax for fsgldiv and fsglmul.
It is highly likely that this is a generic SGS m68k assembler dependency.
If so, it should eventually be handled in the m68k/sgs.h ASM_OUTPUT_OPCODE
macro, like the other SGS assembler quirks. -fnf */
#define FSGLDIV_USE_S /* Use fsgldiv.s, not fsgldiv.x */
#define FSGLMUL_USE_S /* Use fsglmul.s, not fsglmul.x */
/* Names to predefine in the preprocessor for this target machine. For the
Amiga, these definitions match those of the native AT&T compiler. Note
that we override the definition in m68kv4.h, where SVR4 is defined and
AMIX isn't. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES \
"-Dm68k -Dunix -DAMIX -D__svr4__ -D__motorola__ \
-Amachine=m68k -Acpu=m68k -Asystem=unix -Alint=off"
/* At end of a switch table, define LDnnn iff the symbol LInnn was defined.
Some SGS assemblers have a bug such that "Lnnn-LInnn-2.b(pc,d0.l*2)"
fails to assemble. Luckily "Lnnn(pc,d0.l*2)" produces the results
we want. This difference can be accommodated by making the assembler
define such "LDnnn" to be either "Lnnn-LInnn-2.b", "Lnnn", or any other
string, as necessary. This is accomplished via the ASM_OUTPUT_CASE_END
macro. (the Amiga assembler has this bug) */
#undef ASM_OUTPUT_CASE_END
#define ASM_OUTPUT_CASE_END(FILE,NUM,TABLE) \
do { \
if (switch_table_difference_label_flag) \
asm_fprintf ((FILE), "%s%LLD%d,%LL%d\n", SET_ASM_OP, (NUM), (NUM));\
switch_table_difference_label_flag = 0; \
} while (0)
int switch_table_difference_label_flag;
/* This says how to output assembler code to declare an
uninitialized external linkage data object. Under SVR4,
the linker seems to want the alignment of data objects
to depend on their types. We do exactly that here.
[This macro overrides the one in svr4.h because the amix assembler
has a minimum default alignment of 4, and will not accept any
explicit alignment smaller than this. -fnf] */
#undef ASM_OUTPUT_ALIGNED_COMMON
#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
do { \
fputs ("\t.comm\t", (FILE)); \
assemble_name ((FILE), (NAME)); \
fprintf ((FILE), ",%u,%u\n", (SIZE), MAX ((ALIGN) / BITS_PER_UNIT, 4)); \
} while (0)
/* This says how to output assembler code to declare an
uninitialized internal linkage data object. Under SVR4,
the linker seems to want the alignment of data objects
to depend on their types. We do exactly that here.
[This macro overrides the one in svr4.h because the amix assembler
has a minimum default alignment of 4, and will not accept any
explicit alignment smaller than this. -fnf] */
#undef ASM_OUTPUT_ALIGNED_LOCAL
#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
do { \
fprintf ((FILE), "%s%s,%u,%u\n", \
BSS_ASM_OP, (NAME), (int)(SIZE), MAX ((ALIGN) / BITS_PER_UNIT, 4)); \
} while (0)
/* This definition of ASM_OUTPUT_ASCII is the same as the one in m68k/sgs.h,
which has been overridden by the one in svr4.h. However, we can't use
the one in svr4.h because the amix assembler croaks on some of the
strings that it emits (such as .string "\"%s\"\n"). */
#undef ASM_OUTPUT_ASCII
#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \
do { \
register size_t sp = 0, limit = (LEN); \
fputs (integer_asm_op (1, TRUE), (FILE)); \
do { \
int ch = (PTR)[sp]; \
if (ch > ' ' && ! (ch & 0x80) && ch != '\\') \
{ \
fprintf ((FILE), "'%c", ch); \
} \
else \
{ \
fprintf ((FILE), "0x%x", ch); \
} \
if (++sp < limit) \
{ \
if ((sp % 10) == 0) \
{ \
fprintf ((FILE), "\n%s", integer_asm_op (1, TRUE)); \
} \
else \
{ \
putc (',', (FILE)); \
} \
} \
} while (sp < limit); \
putc ('\n', (FILE)); \
} while (0)
/* The following should be unnecessary as a result of PIC_CASE_VECTOR_ADDRESS.
But rhealey@aggregate.com says they are still needed. */
/* Override these for the sake of an assembler bug: the Amix
assembler can't handle .LC0@GOT syntax. This pollutes the final
table for shared librarys but what's a poor soul to do; sigh... RFH */
#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
do { \
if (flag_pic && !strcmp(PREFIX,"LC")) \
sprintf (LABEL, "*%s%%%ld", PREFIX, (long)(NUM)); \
else \
sprintf (LABEL, "*%s%s%ld", LOCAL_LABEL_PREFIX, PREFIX, (long)(NUM)); \
} while (0)
/* Definitions of target machine for GNU compiler.
Atari TT ASV version.
Copyright (C) 1994, 1995, 2000 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. */
#include "m68k/m68kv4.h"
/* Dollars and dots in labels are not allowed. */
#define NO_DOLLAR_IN_LABEL
#define NO_DOT_IN_LABEL
/* Alter assembler syntax for fsgldiv and fsglmul.
It is highly likely that this is a generic SGS m68k assembler dependency.
If so, it should eventually be handled in the m68k/sgs.h ASM_OUTPUT_OPCODE
macro, like the other SGS assembler quirks. -fnf */
#define FSGLDIV_USE_S /* Use fsgldiv.s, not fsgldiv.x */
#define FSGLMUL_USE_S /* Use fsglmul.s, not fsglmul.x */
/* At end of a switch table, define LDnnn iff the symbol LInnn was defined.
Some SGS assemblers have a bug such that "Lnnn-LInnn-2.b(pc,d0.l*2)"
fails to assemble. Luckily "Lnnn(pc,d0.l*2)" produces the results
we want. This difference can be accommodated by making the assembler
define such "LDnnn" to be either "Lnnn-LInnn-2.b", "Lnnn", or any other
string, as necessary. This is accomplished via the ASM_OUTPUT_CASE_END
macro. (the Amiga assembler has this bug) */
#undef ASM_OUTPUT_CASE_END
#define ASM_OUTPUT_CASE_END(FILE,NUM,TABLE) \
do { \
if (switch_table_difference_label_flag) \
asm_fprintf ((FILE), "%s%LLD%d,%LL%d\n", SET_ASM_OP, (NUM), (NUM));\
switch_table_difference_label_flag = 0; \
} while (0)
int switch_table_difference_label_flag;
/* This definition of ASM_OUTPUT_ASCII is the same as the one in m68k/sgs.h,
which has been overridden by the one in svr4.h. However, we can't use
the one in svr4.h because the ASV assembler croaks on some of the
strings that it emits (such as .string "\"%s\"\n"). */
#undef ASM_OUTPUT_ASCII
#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \
{ \
register size_t sp = 0, limit = (LEN); \
fputs (integer_asm_op (1, TRUE), (FILE)); \
do { \
int ch = (PTR)[sp]; \
if (ch > ' ' && ! (ch & 0x80) && ch != '\\') \
{ \
fprintf ((FILE), "'%c", ch); \
} \
else \
{ \
fprintf ((FILE), "0x%x", ch); \
} \
if (++sp < limit) \
{ \
if ((sp % 10) == 0) \
{ \
fprintf ((FILE), "\n%s", integer_asm_op (1, TRUE)); \
} \
else \
{ \
putc (',', (FILE)); \
} \
} \
} while (sp < limit); \
putc ('\n', (FILE)); \
}
/* Override these for the sake of an assembler bug: the ASV
assembler can't handle .LC0@GOT syntax. This pollutes the final
table for shared librarys but what's a poor soul to do; sigh... RFH */
#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
do { \
if (flag_pic && !strcmp(PREFIX,"LC")) \
sprintf (LABEL, "*%s%%%ld", PREFIX, (long)(NUM)); \
else \
sprintf (LABEL, "*%s%s%ld", LOCAL_LABEL_PREFIX, PREFIX, (long)(NUM)); \
} while (0)
/* Definitions of target machine for GNU compiler. Concurrent 68k version.
Copyright (C) 1987, 1988, 1995, 1996, 1997 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. */
#ifndef MASSCOMP
#define MASSCOMP
#endif
#ifndef CONCURRENT
#define CONCURRENT
#endif
#ifndef __mc68000__
#define __mc68000__
#endif
#ifndef __mc68020__
#define __mc68020__
#endif
#define USE_GAS
#define MOVE_RATIO 100
#define SPACE_AFTER_L_OPTION
#define SWITCHES_NEED_SPACES "oL"
/* See m68k.h. 7 means 68020 with 68881. */
#define TARGET_DEFAULT (MASK_68040|MASK_BITFIELD|MASK_68881|MASK_68020)
#include "m68k/m68k.h"
#define SIZE_TYPE "int"
/* for 68k machines this only needs to be TRUE for the 68000 */
#undef STRICT_ALIGNMENT
#define STRICT_ALIGNMENT 0
/* Names to predefine in the preprocessor for this target machine. */
#define CPP_PREDEFINES \
"-Dmc68000 -Dmasscomp -DMASSCOMP -Dunix -DLANGUAGE_C -Dconcurrent -DCONCURRENT"
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (68k, GNU GAS syntax)");
/* Discard internal local symbols beginning with 'L'. */
#define LINK_SPEC "-X"
/* Every structure or union's size must be a multiple of 4 bytes. */
#define STRUCTURE_SIZE_BOUNDARY 16
/* No data type wants to be aligned rounder than this. */
#undef BIGGEST_ALIGNMENT
#define BIGGEST_ALIGNMENT 32
/* Allocation boundary (in *bits*) for storing pointers in memory. */
#undef POINTER_BOUNDARY
#define POINTER_BOUNDARY 32
/* Alignment of field after `int : 0' in a structure. */
#undef EMPTY_FIELD_BOUNDARY
#define EMPTY_FIELD_BOUNDARY 32
/* Allocation boundary in bits for the code of a function */
#undef FUNCTION_BOUNDARY
#define FUNCTION_BOUNDARY 32
/* Make strings long-word aligned so dhrystones will run faster. */
#define CONSTANT_ALIGNMENT(EXP, ALIGN) \
(TREE_CODE (EXP) == STRING_CST \
&& (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
/* Make arrays of chars word-aligned for the same reasons. */
#define DATA_ALIGNMENT(TYPE, ALIGN) \
(TREE_CODE (TYPE) == ARRAY_TYPE \
&& TYPE_MODE (TREE_TYPE (TYPE)) == QImode \
&& (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
/* This is BSD, so it wants DBX format. */
#define DBX_DEBUGGING_INFO 1
/* Override parts of m68k.h */
#undef CALL_USED_REGISTERS
#define CALL_USED_REGISTERS \
{1, 1, 0, 0, 0, 0, 0, 0, \
1, 1, 0, 0, 0, 0, 0, 1, \
1, 1, 0, 0, 0, 0, 1, 1 }
#undef REG_ALLOC_ORDER
#define REG_ALLOC_ORDER \
{ 0, 1, 2, 3, 4, 5, 6, 7,\
8, 9, 10, 11, 12, 13, 14, 15, \
16, 17, 22, 23, 18, 19, 20, 21 }
#undef ASM_FILE_START
#define ASM_FILE_START(FILE) \
fprintf (FILE, "#NO_APP\n.globl fltused\n");
#undef ASM_OUTPUT_ALIGN
#define ASM_OUTPUT_ALIGN(FILE,LOG) \
{ int _LOG = LOG; \
if (_LOG == 1) \
fprintf (FILE, "\t.even\n"); \
else if (_LOG == 2) \
fprintf (FILE, "\t.align 4\n"); \
else if (_LOG != 0) \
fprintf (FILE, "\t.align %d\n", _LOG);\
}
/* crt0.c should use the vax-bsd style of entry, with a dummy arg. */
#define CRT0_DUMMIES bogus_fp,
/* Definitions of target machine for GNU compiler. HP 9000/200 68000 version.
Copyright (C) 1987, 1991 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. */
#include "m68k/m68k.h"
/* See m68k.h. 0 means 68000 with no 68881. */
#define TARGET_DEFAULT 0
/* Don't try using XFmode. */
#undef LONG_DOUBLE_TYPE_SIZE
#define LONG_DOUBLE_TYPE_SIZE 64
/* Define __HAVE_68881 in preprocessor only if -m68881 is specified.
This will control the use of inline 68881 insns in certain macros.
Also inform the program which CPU this is for. */
#define CPP_SPEC "%{m68881:-D__HAVE_68881__} \
%{!ansi:%{m68020:-Dmc68020}%{mc68020:-Dmc68020}%{!mc68020:%{!m68020:-Dmc68010}}}"
/* -m68020 requires special flags to the assembler. */
#define ASM_SPEC \
"%{m68020:-mc68020}%{mc68020:-mc68020}%{!mc68020:%{!m68020:-mc68010}}"
/* Names to predefine in the preprocessor for this target machine. */
#define CPP_PREDEFINES "-Dmc68000 -Dmc68010 -Dhp200 -Dunix -Asystem=unix -Asystem=bsd -Acpu=m68k -Amachine=m68k"
/* Link with libg.a when debugging, for dbx's sake. */
#define LIB_SPEC "%{g:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} "
/* Alignment of field after `int : 0' in a structure. */
#undef EMPTY_FIELD_BOUNDARY
#define EMPTY_FIELD_BOUNDARY 16
/* Every structure or union's size must be a multiple of 2 bytes. */
#define STRUCTURE_SIZE_BOUNDARY 16
/* This is BSD, so it wants DBX format. */
#define DBX_DEBUGGING_INFO 1
/* Define subroutines to call to handle multiply, divide, and remainder.
These routines are built into the c-library on the hp200.
XXX What other routines from the c-library could we use?
The `*' prevents an underscore from being prepended by the compiler. */
#define DIVSI3_LIBCALL "*ldiv"
#define UDIVSI3_LIBCALL "*uldiv"
#define MODSI3_LIBCALL "*lrem"
#define UMODSI3_LIBCALL "*ulrem"
#define MULSI3_LIBCALL "*lmul"
#define UMULSI3_LIBCALL "*ulmul"
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
we want to retain compatibility with older gcc versions. */
#define DEFAULT_PCC_STRUCT_RETURN 0
#include "m68k/m68k.h"
/* See m68k.h. 7 means 68020 with 68881. */
#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68881|MASK_68020)
/* Define __HAVE_68881__ in preprocessor, unless -msoft-float is specified.
This will control the use of inline 68881 insns in certain macros. */
#define CPP_SPEC "%{!msoft-float:-D__HAVE_68881__ -D__HAVE_FPU__}"
/* Names to predefine in the preprocessor for this target machine. */
#define CPP_PREDEFINES "-Dmc68000 -Dmc68020 -Dhp300 -Dhp9000 -Dunix -Asystem=unix -Asystem=bsd -Acpu=m68k -Amachine=m68k"
/* Link with libg.a when debugging, for dbx's sake. */
#define LIB_SPEC "%{g:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} "
/* Every structure or union's size must be a multiple of 2 bytes. */
#define STRUCTURE_SIZE_BOUNDARY 16
/* This is BSD, so it wants DBX format. */
#define DBX_DEBUGGING_INFO 1
/* Do not break .stabs pseudos into continuations. */
#define DBX_CONTIN_LENGTH 0
/* This is the char to use for continuation (in case we need to turn
continuation back on). */
#define DBX_CONTIN_CHAR '?'
/* Don't use the `xsfoo;' construct in DBX output; this system
doesn't support it. */
#define DBX_NO_XREFS
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
we want to retain compatibility with older gcc versions. */
#define DEFAULT_PCC_STRUCT_RETURN 0
#include "m68k/m68k.h"
/* See m68k.h. 7 means 68020 with 68881. */
#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68881|MASK_68020)
/* Define __HAVE_68881__ in preprocessor, unless -msoft-float is specified.
This will control the use of inline 68881 insns in certain macros. */
#define CPP_SPEC "%{!msoft-float:-D__HAVE_68881__ -D__HAVE_FPU__}"
/* Names to predefine in the preprocessor for this target machine. */
#define CPP_PREDEFINES "-Dmc68000 -Dmc68020 -Dhp300 -Dhp9000 -Dunix -D__BSD_4_4__ -Asystem=unix -Asystem=bsd -Acpu=m68k -Amachine=m68k"
/* No more libg.a */
#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}"
/* Make gcc agree with <machine/ansi.h> */
#define SIZE_TYPE "unsigned int"
#define PTRDIFF_TYPE "int"
#undef WCHAR_TYPE
#define WCHAR_TYPE "short unsigned int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 16
/* Every structure or union's size must be a multiple of 2 bytes. */
#define STRUCTURE_SIZE_BOUNDARY 16
/* This is BSD, so it wants DBX format. */
#define DBX_DEBUGGING_INFO 1
/* Do not break .stabs pseudos into continuations. */
#define DBX_CONTIN_LENGTH 0
/* This is the char to use for continuation (in case we need to turn
continuation back on). */
#define DBX_CONTIN_CHAR '?'
/* Don't use the `xsfoo;' construct in DBX output; this system
doesn't support it. */
#define DBX_NO_XREFS
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
we want to retain compatibility with older gcc versions. */
#define DEFAULT_PCC_STRUCT_RETURN 0
/* Definitions for Motorola m68k running Linux-based GNU systems.
Copyright (C) 1995, 1996, 1997, 2002 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. */
#include <m68k/m68k.h>
#include <linux-aout.h>
/* 68020 with 68881 */
#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68881|MASK_68020)
#define DBX_DEBUGGING_INFO 1
#define ASM_COMMENT_START "|"
#define CPP_PREDEFINES \
"-Dunix -Dmc68000 -Dmc68020 -D__gnu_linux__ -Dlinux -Asystem=unix -Asystem=posix -Acpu=m68k -Amachine=m68k"
#undef CPP_SPEC
#if TARGET_DEFAULT & MASK_68881
#define CPP_SPEC \
"%{!msoft-float:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE}"
#else
#define CPP_SPEC \
"%{m68881:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE}"
#endif
#undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES {"ieee-fp", 0, \
N_("Use IEEE math for fp comparisons") },
#undef ASM_SPEC
#define ASM_SPEC \
"%{m68030} %{m68040} %{fpic:-k} %{fPIC:-k}"
#undef LIB_SPEC
#if 1
/* We no longer link with libc_p.a or libg.a by default. If you want
to profile or debug the GNU/Linux C library, please add -lc_p or -ggdb
to LDFLAGS at the link time, respectively. */
#define LIB_SPEC \
"%{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} %{!ggdb:-lc} %{ggdb:-lg}"
#else
#define LIB_SPEC \
"%{mieee-fp:-lieee} %{p:-lgmon -lc_p} %{pg:-lgmon -lc_p} %{!p:%{!pg:%{!g*:-lc} %{g*:-lg}}}"
#endif
/* We want to pass -v to linker */
#undef LINK_SPEC
#define LINK_SPEC "-m m68klinux %{v:-dll-verbose}"
#define SIZE_TYPE "unsigned int"
#define PTRDIFF_TYPE "int"
/* Generate calls to memcpy, memcmp and memset. */
#define TARGET_MEM_FUNCTIONS
/* Don't default to pcc-struct-return, because gcc is the only compiler. */
#undef PCC_STATIC_STRUCT_RETURN
#define DEFAULT_PCC_STRUCT_RETURN 0
/* Definitions of a target machine for the GNU compiler:
68040 running pSOS, ELF object files, DBX debugging.
Copyright (C) 1996 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. */
/* Use MOTOROLA assembler syntax, as gas is configured that way and
glibc also seems to use it. Must come BEFORE m68k.h! */
#define MOTOROLA
/* Get generic m68k definitions. */
#include "m68k/m68k.h"
#include "m68k/m68kemb.h"
/* Default processor type is a (pure) 68040 with 68881 emulation using
the floating-point support package. */
#undef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_68040_ONLY|MASK_BITFIELD|MASK_68881|MASK_68020)
/* Options passed to CPP, GAS, CC1 and CC1PLUS. We override
m68k-none.h for consistency with TARGET_DEFAULT. */
#undef CPP_SPEC
#define CPP_SPEC \
"%{!mc68000:%{!m68000:%{!m68332:%{!msoft-float:-D__HAVE_68881__ }}}}\
%{!ansi:-Dmc68000 %{m68010:-Dmc68010 }%{m68020:-Dmc68020 }%{mc68020:-Dmc68020 }%{m68030:-Dmc68030 }%{m68040:-Dmc68040 }%{m68020-40:-Dmc68020 -Dmc68030 -Dmc68040 }%{m68302:-Dmc68302 }%{m68332:-Dmc68332 }%{!mc68000:%{!m68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68302:%{!m68332:-Dmc68040 }}}}}}}}}}}\
-D__mc68000__ -D__mc68000 %{m68010:-D__mc68010__ -D__mc68010 }%{m68020:-D__mc68020__ -D__mc68020 }%{mc68020:-D__mc68020__ -D__mc68020 }%{m68030:-D__mc68030__ -D__mc68030 }%{m68040:-D__mc68040__ -D__mc68040 }%{m68020-40:-D__mc68020__ -D__mc68030__ -D__mc68040__ -D__mc68020 -D__mc68030 -D__mc68040 }%{m68302:-D__mc68302__ -D__mc68302 }%{m68332:-D__mc68332__ -D__mc68332 }%{!mc68000:%{!m68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68302:%{!m68332:-D__mc68040__ -D__mc68040 }}}}}}}}}}"
#undef ASM_SPEC
#define ASM_SPEC \
"%{m68851}%{mno-68851}%{m68881}%{mno-68881}%{msoft-float:-mno-68881 }\
%{m68000}%{mc68000}%{m68010}%{m68020}%{mc68020}%{m68030}%{m68040}%{m68020-40:-mc68040}%{m68302}%{m68332}%{!m68000:%{!mc68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68302:%{!m68332:-mc68040}}}}}}}}}}"
#undef CC1_SPEC
#define CC1_SPEC \
"%{m68000:%{!m68881:-msoft-float }}%{m68302:-m68000}%{m68332:-m68020 -mnobitfield %{!m68881:-msoft-float}}%{!m68000:%{!mc68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68302:%{!m68332:-m68040}}}}}}}}}}"
#undef CC1PLUS_SPEC
#define CC1PLUS_SPEC \
"%{m68000:%{!m68881:-msoft-float }}%{m68302:-m68000}%{m68332:-m68020 -mnobitfield %{!m68881:-msoft-float}}%{!m68000:%{!mc68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68302:%{!m68332:-m68040}}}}}}}}}}"
/* Get processor-independent pSOS definitions. */
#include "psos.h"
/* end of m68k-psos.h */
/* Definitions of target machine for GNU compiler.
Citicorp/TTI Unicom PBB version (using GAS with a %-register prefix)
Copyright (C) 1987, 1988, 1990, 1996, 1997, 2002 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. */
/* Note: This config uses a version of gas with a postprocessing stage that
converts the output of gas to coff containing stab debug symbols.
(See vasta@apollo.com or mb@soldev.tti.com) */
#include "m68k/m68k.h"
/* See m68k.h. 5 means 68020 without 68881. */
#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68020)
/* Don't try using XFmode. */
#undef LONG_DOUBLE_TYPE_SIZE
#define LONG_DOUBLE_TYPE_SIZE 64
/* Every structure or union's size must be a multiple of 2 bytes. */
#define STRUCTURE_SIZE_BOUNDARY 16
/* Define __HAVE_68881__ in preprocessor if -m68881 is specified.
This will control the use of inline 68881 insns in certain macros. */
#define CPP_SPEC "%{m68881:-D__HAVE_68881__}"
/* Names to predefine in the preprocessor for this target machine. */
#define CPP_PREDEFINES "-Dm68k -Dunix -DUnicomPBB -Dmc68k -Dmc68020 -Dmc68k32 -Asystem=unix -Acpu=m68k -Amachine=m68k"
/* We want DBX format for use with gdb under COFF. */
#define DBX_DEBUGGING_INFO 1
/* Generate calls to memcpy, memcmp and memset. */
#define TARGET_MEM_FUNCTIONS
/* -m68000 requires special flags to the assembler. */
#define ASM_SPEC \
" %{m68000:-mc68010}%{mc68000:-mc68010}"
/* we use /lib/libp/lib* when profiling */
#define LIB_SPEC "%{p:-L/usr/lib/libp} %{pg:-L/usr/lib/libp} -lc"
/* Use crt1.o as a startup file and crtn.o as a closing file. */
/*
* The loader directive file gcc.ifile defines how to merge the constructor
* sections into the data section. Also, since gas only puts out those
* sections in response to N_SETT stabs, and does not (yet) have a
* ".sections" directive, gcc.ifile also defines the list symbols
* __DTOR_LIST__ and __CTOR_LIST__.
*
* Finally, we must explicitly specify the file from libgcc.a that defines
* exit(), otherwise if the user specifies (for example) "-lc_s" on the
* command line, the wrong exit() will be used and global destructors will
* not get called .
*/
#define STARTFILE_SPEC \
"%{!r: gcc.ifile%s} %{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}} \
%{!r:_exit.o%s}"
#define ENDFILE_SPEC "crtn.o%s"
/* GAS register prefix assembly syntax: */
/* User labels have no prefix */
#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX ""
/* local labels are prefixed with ".L" */
#undef LOCAL_LABEL_PREFIX
#define LOCAL_LABEL_PREFIX "."
/* registers are prefixed with "%" */
#undef REGISTER_PREFIX
#define REGISTER_PREFIX "%"
#undef REGISTER_NAMES
#define REGISTER_NAMES \
{"%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7", \
"%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%sp", \
"%fp0", "%fp1", "%fp2", "%fp3", "%fp4", "%fp5", "%fp6", "%fp7"}
#undef FUNCTION_EXTRA_EPILOGUE
#define FUNCTION_EXTRA_EPILOGUE(FILE, SIZE) \
{ if (current_function_returns_pointer \
&& ! find_equiv_reg (0, get_last_insn (), 0, 0, 0, 8, Pmode)) \
asm_fprintf (FILE, "\tmovl %Rd0,%Ra0\n"); }
#define ASM_RETURN_CASE_JUMP \
do { \
if (TARGET_5200) \
{ \
if (ADDRESS_REG_P (operands[0])) \
return "jmp %%pc@(2,%0:l)"; \
else \
return "ext%.l %0\n\tjmp %%pc@(2,%0:l)"; \
} \
else \
return "jmp %%pc@(2,%0:w)"; \
} while (0)
/* Although the gas we use can create .ctor and .dtor sections from N_SETT
stabs, it does not support section directives, so we need to have the loader
define the lists.
*/
#define CTOR_LISTS_DEFINED_EXTERNALLY
/* similar to default, but allows for the table defined by ld with gcc.ifile.
nptrs is always 0. So we need to instead check that __DTOR_LIST__[1] != 0.
The old check is left in so that the same macro can be used if and when
a future version of gas does support section directives. */
#define DO_GLOBAL_DTORS_BODY {int nptrs = *(int *)__DTOR_LIST__; int i; \
if (nptrs == -1 || (__DTOR_LIST__[0] == 0 && __DTOR_LIST__[1] != 0)) \
for (nptrs = 0; __DTOR_LIST__[nptrs + 1] != 0; nptrs++); \
for (i = nptrs; i >= 1; i--) \
__DTOR_LIST__[i] (); }
/*
* Here is an example gcc.ifile. I've tested it on PBB 68k and on sco 386
* systems. The NEXT(0x200000) works on just about all 386 and m68k systems,
* but can be reduced to any power of 2 that is >= NBPS (0x10000 on a pbb).
SECTIONS {
.text BIND(0x200200) BLOCK (0x200) :
{ *(.init) *(.text) vfork = fork; *(.fini) }
GROUP BIND( NEXT(0x200000) + ADDR(.text) + SIZEOF(.text)):
{ .data : { __CTOR_LIST__ = . ; . += 4; *(.ctor) . += 4 ;
__DTOR_LIST__ = . ; . += 4; *(.dtor) . += 4 ; }
.bss : { }
}
}
*/
/*
Local variables:
version-control: t
End:
*/
/* Definitions of target machine for GNU compiler, for 680X0 based Plexus
Computers running SYSVR2
Copyright (C) 1990, 1994, 1996 Free Software Foundation, Inc.
Contributed by Randy Welch (rwelch@netcom.com).
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. */
/* The Plexus port of gcc requires you to use gas ( either 1.3X with COFF
patches or 2.X ), If you use gas 2.X you have to use binutils-2.X.
With using gas-2.X the Plexus gcc port is now capable of generating
output suitable for use by gdb-4.X ( send mail to above address for
info on getting gdb patches or other GNU items for the Plexus )
This is configured for label output default by gas as LXXX instead of
plexus cc/as combination requires .LXXX */
#include "m68k/m68k.h"
/* Define __HAVE_68881 in preprocessor only if -m68881 is specified.
This will control the use of inline 68881 insns in certain macros. */
#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68020)
/* Don't try using XFmode. */
#undef LONG_DOUBLE_TYPE_SIZE
#define LONG_DOUBLE_TYPE_SIZE 64
#define CPP_SPEC "%{m68881:-D__HAVE_68881__}"
#define CPP_PREDEFINES "-Dm68 -Dunix -Dplexus -Asystem=unix -Acpu=m68k -Amachine=m68k"
#if TARGET_DEFAULT & MASK_68020
#define ASM_SPEC \
"%{m68000:-mc68000}%{mc68000:-mc68000}%{!mc68000:%{!m68000:-mc68020}}"
#undef STRICT_ALIGNMENT
#define STRICT_ALIGNMENT 0
#else
#define ASM_SPEC\
"%{m68020:-mc68020}%{mc68020:-mc68020}%{!mc68020:%{!mc68020:-mc68000}}"
#endif
/***************************************************************************/
/* Un comment the following if you want adb to be able to follow a core */
/* file if you compile a program with -O */
/***************************************************************************/
/* #define FRAME_POINTER_REQUIRED */
/* Let's be compatible with the Plexus C compiler by default. Why not? */
#define PLEXUS_CC_COMPAT
#ifdef PLEXUS_CC_COMPAT
#define STRUCTURE_SIZE_BOUNDARY 16 /* for compatibility with cc */
#undef STACK_BOUNDARY
#define STACK_BOUNDARY 32 /* ditto */
#endif
#undef NEED_PROBE
#define NEED_PROBE -132 /* plexus needs a stack probe */
/***********************************************************************/
/* if you have binutils-2.X and gas-2.X running you can generate code */
/* that gdb can understand ( gdb support available for 4.11 ) */
/* */
/* If you use gas-1.3X don't define this as the version of the coff */
/* patches for gas-1.3x ( stabs in coff ) does not generate coff debug */
/* syms */
/***********************************************************************/
#define HAVE_GAS_2_X
#ifdef HAVE_GAS_2_X
#undef DBX_DEBUGGING_INFO
#define SDB_DEBUGGING_INFO 1
#undef ASM_FILE_START
#define ASM_FILE_START(FILE) \
output_file_directive((FILE), main_input_filename)
#else
#undef DBX_DEBUGGING_INFO /* no real debugger */
#undef SDB_DEBUGGING_INFO
#endif
#define TARGET_MEM_FUNCTIONS
/***********************************************************************/
/* items for collect2 */
/***********************************************************************/
#define NM_FLAGS ""
#define SIZE_TYPE "int"
/* Definitions of target machine for GNU compiler. Sun 68010 version.
Copyright (C) 1987, 1988, 1995 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. */
#include "m68k/m68k.h"
/* See m68k.h. 0 means 68000 with no 68881. */
#define TARGET_DEFAULT 0
/* Don't try using XFmode. */
#undef LONG_DOUBLE_TYPE_SIZE
#define LONG_DOUBLE_TYPE_SIZE 64
/* Define __HAVE_68881 in preprocessor only if -m68881 is specified.
This will control the use of inline 68881 insns in certain macros.
Also inform the program which CPU this is for. */
#define CPP_SPEC "%{m68881:-D__HAVE_68881__} \
%{!ansi:%{m68020:-Dmc68020}%{mc68020:-Dmc68020}%{!mc68020:%{!m68020:-Dmc68010}}}"
/* -m68020 requires special flags to the assembler. */
#define ASM_SPEC \
"%{m68020:-mc68020}%{mc68020:-mc68020}%{!mc68020:%{!m68020:-mc68010}} \
%{fpic:-k} %{fPIC:-k} %{R} %{j} %{J} %{h} %{d2} %{keep-local-as-symbols:-L}"
/* Names to predefine in the preprocessor for this target machine. */
#define CPP_PREDEFINES "-Dmc68000 -Dsun -Dunix -Asystem=unix -Asystem=bsd -Acpu=m68k -Amachine=m68k"
/* Prevent error on `-sun2' and `-target sun2' options. */
#define CC1_SPEC "%{sun2:} %{target:}"
/* These compiler options take an argument. We ignore -target for now. */
#define WORD_SWITCH_TAKES_ARG(STR) \
(DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \
|| !strcmp (STR, "target") || !strcmp (STR, "assert"))
/* Specify what to link with. */
/* Link with libg.a when debugging, for dbx's sake. */
/* Include the support for -a when appropriate. */
#define LIB_SPEC "%{g:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} \
%{a:/usr/lib/bb_link.o -lc} "
/* Alignment of field after `int : 0' in a structure. */
#undef EMPTY_FIELD_BOUNDARY
#define EMPTY_FIELD_BOUNDARY 16
/* Every structure or union's size must be a multiple of 2 bytes. */
#define STRUCTURE_SIZE_BOUNDARY 16
/* This is BSD, so it wants DBX format. */
#define DBX_DEBUGGING_INFO 1
/* Definitions of target machine for GNU compiler. Sun 2 running SunOS 4.
Copyright (C) 1987, 1988, 1993, 1996, 1997 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. */
#include "m68k/sun2.h"
/* Define __HAVE_SKY__ in preprocessor, according to the -m flags.
Also inform the program which CPU this is for. */
#undef CPP_SPEC
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
#undef SIZE_TYPE
#define SIZE_TYPE "int"
#undef WCHAR_TYPE
#define WCHAR_TYPE "short unsigned int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 16
#if TARGET_DEFAULT & MASK_SKY
/* -msky is the default */
#define CPP_SPEC \
"%{!msoft-float:-D__HAVE_SKY__}\
%{!ansi:%{m68020:-Dmc68020}%{mc68020:-Dmc68020}%{!mc68020:%{!m68020:-Dmc68010}}}"
#else
/* -msoft-float is the default */
#define CPP_SPEC \
"%{msky:-D__HAVE_SKY__ }\
%{!ansi:%{m68020:-Dmc68020}%{mc68020:-Dmc68020}%{!mc68020:%{!m68020:-Dmc68010}}}"
#endif
/* STARTFILE_SPEC to include sun floating point initialization
This is necessary (tr: Sun does it) for the sky routines.
I'm not sure what would happen below if people gave contradictory
arguments (eg. -msoft-float -mfpa) */
#undef STARTFILE_SPEC
#if TARGET_DEFAULT & MASK_SKY
/* -msky is the default */
#define STARTFILE_SPEC \
"%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}} \
%{msoft-float:Fcrt1.o%s} \
%{!msoft-float:Scrt1.o%s}"
#else
/* -msoft-float is the default */
#define STARTFILE_SPEC \
"%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}} \
%{msky:Scrt1.o%s} \
%{!msky:Fcrt1.o%s}"
#endif
/* Specify library to handle `-a' basic block profiling.
Control choice of libm.a (if user says -lm)
based on fp arith default and options. */
#undef LIB_SPEC
#if TARGET_DEFAULT & MASK_SKY
/* -msky is the default */
#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} \
%{a:/usr/lib/bb_link.o -lc} %{g:-lg} \
%{msoft-float:-L/usr/lib/fsoft} \
%{!msoft_float:-L/usr/lib/fsky}"
#else
/* -msoft-float is the default */
#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} \
%{a:/usr/lib/bb_link.o -lc} %{g:-lg} \
%{!msky:-L/usr/lib/fsoft} \
%{msky:-L/usr/lib/ffpa}"
#endif
#undef LINK_SPEC
#define LINK_SPEC \
"%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{static:-Bstatic}"
#undef ASM_OUTPUT_FLOAT_OPERAND
#define ASM_OUTPUT_FLOAT_OPERAND(CODE,FILE,VALUE) \
do { \
if (CODE != 'f') \
{ \
long l; \
REAL_VALUE_TO_TARGET_SINGLE (VALUE, l); \
if (sizeof (int) == sizeof (long)) \
asm_fprintf ((FILE), "%I0x%x", (int) l); \
else \
asm_fprintf ((FILE), "%I0x%lx", l); \
} \
else if (REAL_VALUE_ISINF (VALUE)) \
{ \
if (REAL_VALUE_NEGATIVE (VALUE)) \
fprintf (FILE, "#0r-99e999"); \
else \
fprintf (FILE, "#0r99e999"); \
} \
else if (REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \
fprintf (FILE, "#0r-0.0"); \
} \
else \
{ char dstr[30]; \
real_to_decimal (dstr, &(VALUE), sizeof (dstr), 9, 0); \
fprintf (FILE, "#0r%s", dstr); \
} \
} while (0)
#undef ASM_OUTPUT_DOUBLE_OPERAND
#define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE) \
do { if (REAL_VALUE_ISINF (VALUE)) \
{ \
if (REAL_VALUE_NEGATIVE (VALUE)) \
fprintf (FILE, "#0r-99e999"); \
else \
fprintf (FILE, "#0r99e999"); \
} \
else if (REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \
fprintf (FILE, "#0r-0.0"); \
} \
else \
{ char dstr[30]; \
real_to_decimal (dstr, &(VALUE), sizeof (dstr), 0, 1); \
fprintf (FILE, "#0r%s", dstr); \
} \
} while (0)
/* Definitions of target machine for GNU compiler. Sun 68000/68020 version.
Copyright (C) 1987, 1988, 1993, 1995, 1996, 1998, 1999
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. */
/* This comment is here to see if it will keep Sun's cpp from dying. */
/* If you do not need to generate floating point code for the optional
Sun FPA board, you can safely comment out the SUPPORT_SUN_FPA define
to gain a little speed and code size. */
#define SUPPORT_SUN_FPA
#include "m68k/m68k.h"
/* See m68k.h. 7 means 68020 with 68881. */
#ifndef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68881|MASK_68020)
#endif
/* Define __HAVE_FPA__ or __HAVE_68881__ in preprocessor,
according to the -m flags.
This will control the use of inline 68881 insns in certain macros.
Also inform the program which CPU this is for. */
#if TARGET_DEFAULT & MASK_68881
/* -m68881 is the default */
#define CPP_SPEC \
"%{!msoft-float:%{mfpa:-D__HAVE_FPA__ }%{!mfpa:-D__HAVE_68881__ }}\
%{m68000:-D__mc68010__}%{mc68000:-D__mc68010__}%{!mc68000:%{!m68000:-D__mc68020__}} \
%{!ansi:%{m68000:-Dmc68010}%{mc68000:-Dmc68010}%{!mc68000:%{!m68000:-Dmc68020}}}"
#else
/* -msoft-float is the default */
#define CPP_SPEC \
"%{m68881:-D__HAVE_68881__ }%{mfpa:-D__HAVE_FPA__ }\
%{m68000:-D__mc68010__}%{mc68000:-D__mc68010__}%{!mc68000:%{!m68000:-D__mc68020__}} \
%{!ansi:%{m68000:-Dmc68010}%{mc68000:-Dmc68010}%{!mc68000:%{!m68000:-Dmc68020}}}"
#endif
/* Prevent error on `-sun3' and `-target sun3' options. */
#define CC1_SPEC "%{sun3:} %{target:}"
#define PTRDIFF_TYPE "int"
/* We must override m68k.h. */
#undef WCHAR_TYPE
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE "short unsigned int"
#define WCHAR_TYPE_SIZE 16
/* These compiler options take an argument. We ignore -target for now. */
#define WORD_SWITCH_TAKES_ARG(STR) \
(DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \
|| !strcmp (STR, "target") || !strcmp (STR, "assert"))
/* -m68000 requires special flags to the assembler. */
#define ASM_SPEC \
"%{m68000:-mc68010}%{mc68000:-mc68010}%{!mc68000:%{!m68000:-mc68020}} \
%{fpic:-k} %{fPIC:-k} %{R} %{j} %{J} %{h} %{d2} %{keep-local-as-symbols:-L}"
/* Names to predefine in the preprocessor for this target machine. */
/* For a while, -D_CROSS_TARGET_ARCH=SUN3 was included here,
but it doesn't work, partly because SUN3 etc. aren't defined
(and shouldn't be). It seems that on a native compiler _CROSS_TARGET_ARCH
should not be defined. For cross compilers, let's do things as we
normally do in GCC. -- rms. */
#define CPP_PREDEFINES "-Dmc68000 -Dsun -Dunix -Asystem=unix -Asystem=bsd -Acpu=m68k -Amachine=m68k"
/* STARTFILE_SPEC to include sun floating point initialization
This is necessary (tr: Sun does it) for both the m68881 and the fpa
routines.
Note that includes knowledge of the default specs for gcc, ie. no
args translates to the same effect as -m68881
I'm not sure what would happen below if people gave contradictory
arguments (eg. -msoft-float -mfpa) */
#if TARGET_DEFAULT & MASK_FPA
/* -mfpa is the default */
#define STARTFILE_SPEC \
"%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}} \
%{m68881:Mcrt1.o%s} \
%{msoft-float:Fcrt1.o%s} \
%{!m68881:%{!msoft-float:Wcrt1.o%s}}"
#else
#if TARGET_DEFAULT & MASK_68881
/* -m68881 is the default */
#define STARTFILE_SPEC \
"%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}} \
%{mfpa:Wcrt1.o%s} \
%{msoft-float:Fcrt1.o%s} \
%{!mfpa:%{!msoft-float:Mcrt1.o%s}}"
#else
/* -msoft-float is the default */
#define STARTFILE_SPEC \
"%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}} \
%{m68881:Mcrt1.o%s} \
%{mfpa:Wcrt1.o%s} \
%{!m68881:%{!mfpa:Fcrt1.o%s}}"
#endif
#endif
/* Specify library to handle `-a' basic block profiling.
Control choice of libm.a (if user says -lm)
based on fp arith default and options. */
#if TARGET_DEFAULT & MASK_FPA
/* -mfpa is the default */
#define LIB_SPEC "%{g:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} \
%{g:-lg} \
%{msoft-float:-L/usr/lib/fsoft}%{m68881:-L/usr/lib/f68881}\
%{!msoft_float:%{!m68881:-L/usr/lib/ffpa}}"
#else
#if TARGET_DEFAULT & MASK_68881
/* -m68881 is the default */
#define LIB_SPEC "%{g:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} \
%{g:-lg} \
%{msoft-float:-L/usr/lib/fsoft}%{!msoft-float:%{!mfpa:-L/usr/lib/f68881}}\
%{mfpa:-L/usr/lib/ffpa}"
#else
/* -msoft-float is the default */
#define LIB_SPEC "%{g:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} \
%{g:-lg} \
%{!m68881:%{!mfpa:-L/usr/lib/fsoft}}%{m68881:-L/usr/lib/f68881}\
%{mfpa:-L/usr/lib/ffpa}"
#endif
#endif
/* Provide required defaults for linker -e and -d switches. */
#define LINK_SPEC \
"%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*}"
/* Every structure or union's size must be a multiple of 2 bytes. */
#define STRUCTURE_SIZE_BOUNDARY 16
/* This is BSD, so it wants DBX format. */
#define DBX_DEBUGGING_INFO 1
/* Generate calls to memcpy, memcmp and memset. */
#define TARGET_MEM_FUNCTIONS
/* This is not a good idea. It prevents interoperation between
files compiled with -m68881 and those compiled with -msoft-float. */
#if 0
#define FUNCTION_VALUEX(MODE) \
gen_rtx_REG ((MODE), \
((TARGET_68881 \
&& ((MODE) == SFmode || (MODE) == DFmode \
|| (MODE) == XFmode)) \
? 16 : 0))
#undef FUNCTION_VALUE
#define FUNCTION_VALUE(VALTYPE,FUNC) FUNCTION_VALUEX (TYPE_MODE (VALTYPE))
#endif /* 0 */
/* This is how to output an assembler lines defining floating operands.
There's no way to output a NaN's fraction, so we lose it. */
#undef ASM_OUTPUT_FLOAT_OPERAND
#define ASM_OUTPUT_FLOAT_OPERAND(CODE,FILE,VALUE) \
do { \
if (CODE != 'f') \
{ \
long l; \
REAL_VALUE_TO_TARGET_SINGLE (VALUE, l); \
if (sizeof (int) == sizeof (long)) \
asm_fprintf ((FILE), "%I0x%x", (int) l); \
else \
asm_fprintf ((FILE), "%I0x%lx", l); \
} \
else if (REAL_VALUE_ISINF (VALUE)) \
{ \
if (REAL_VALUE_NEGATIVE (VALUE)) \
asm_fprintf (FILE, "%I0r-99e999"); \
else \
asm_fprintf (FILE, "%I0r99e999"); \
} \
else if (REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \
asm_fprintf (FILE, "%I0r-0.0"); \
} \
else \
{ char dstr[30]; \
real_to_decimal (dstr, &(VALUE), sizeof (dstr), 9, 0); \
asm_fprintf (FILE, "%I0r%s", dstr); \
} \
} while (0)
#undef ASM_OUTPUT_DOUBLE_OPERAND
#define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE) \
do { if (REAL_VALUE_ISINF (VALUE)) \
{ \
if (REAL_VALUE_NEGATIVE (VALUE)) \
asm_fprintf (FILE, "%I0r-99e999"); \
else \
asm_fprintf (FILE, "%I0r99e999"); \
} \
else if (REAL_VALUE_MINUS_ZERO (VALUE)) \
{ \
asm_fprintf (FILE, "%I0r-0.0"); \
} \
else \
{ char dstr[30]; \
real_to_decimal (dstr, &(VALUE), sizeof (dstr), 0, 1); \
asm_fprintf (FILE, "%I0r%s", dstr); \
} \
} while (0)
#include "m68k/sun3.h"
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dmc68000 -Dsun -Dsun3 -Dunix -DMACH -DCMU -DMTXINU -DBIT_MSF -DBYTE_MSF -Asystem=unix -Asystem=mach -Acpu=m68k -Amachine=m68k"
/* Specify extra dir to search for include files. */
#define SYSTEM_INCLUDE_DIR "/usr/mach/include"
/* LINK_SPEC is needed only for SunOS 4. */
#undef LINK_SPEC
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
we want to retain compatibility with older gcc versions. */
#define DEFAULT_PCC_STRUCT_RETURN 0
/* Define target machine as a Sun 3 with no 68881. */
#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68020)
#include "m68k/sun3.h"
/* Don't try using XFmode. */
#undef LONG_DOUBLE_TYPE_SIZE
#define LONG_DOUBLE_TYPE_SIZE 64
#include "m68k/sun3n.h"
/* LINK_SPEC is needed only for SunOS 4. */
#undef LINK_SPEC
#include "m68k/sun3.h"
/* LINK_SPEC is needed only for SunOS 4. */
#undef LINK_SPEC
MULTILIB_OPTIONS=m68000/m68020 msoft-float
MULTILIB_DIRNAMES=
MULTILIB_MATCHES=m68000=mc68000 m68000=m68302 m68000=m68332 m68020=mc68020 m68020=m68040
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
CRT0_S = $(srcdir)/config/m68k/mot3300-crt0.S
MCRT0_S = $(srcdir)/config/m68k/mot3300Mcrt0.S
CRT0STUFF_T_CFLAGS = -DMOTOROLA -DSGS_CMP_ORDER
T_CPPFLAGS = -DUSE_GAS -DUSE_GLD
TARGET_LIBGCC2_CFLAGS = -DUSE_GAS
LIB1ASMSRC = m68k/lb1sf68.asm
LIB1ASMFUNCS = _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \
_double _float _floatex \
_eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \
_eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2
LIB2FUNCS_EXTRA = fpgnulib.c xfgnulib.c
fpgnulib.c: $(srcdir)/config/m68k/fpgnulib.c
cp $(srcdir)/config/m68k/fpgnulib.c fpgnulib.c
xfgnulib.c: $(srcdir)/config/m68k/fpgnulib.c
echo '#define EXTFLOAT' > xfgnulib.c
cat $(srcdir)/config/m68k/fpgnulib.c >> xfgnulib.c
MULTILIB_OPTIONS=m68000/m68020 msoft-float
MULTILIB_DIRNAMES=
MULTILIB_MATCHES=m68000=mc68000 m68000=m68302 m68000=m68332 m68020=mc68020 m68020=m68040
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
CRT0_S = $(srcdir)/config/m68k/mot3300-crt0.S
MCRT0_S = $(srcdir)/config/m68k/mot3300Mcrt0.S
CRT0STUFF_T_CFLAGS =
T_CPPFLAGS = -DUSE_GAS
TARGET_LIBGCC2_CFLAGS = -DUSE_GAS
LIB1ASMSRC = m68k/lb1sf68.asm
LIB1ASMFUNCS = _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \
_double _float _floatex \
_eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \
_eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2
LIB2FUNCS_EXTRA = fpgnulib.c xfgnulib.c
fpgnulib.c: $(srcdir)/config/m68k/fpgnulib.c
cp $(srcdir)/config/m68k/fpgnulib.c fpgnulib.c
xfgnulib.c: $(srcdir)/config/m68k/fpgnulib.c
echo '#define EXTFLOAT' > xfgnulib.c
cat $(srcdir)/config/m68k/fpgnulib.c >> xfgnulib.c
MULTILIB_OPTIONS=m68000/m68020 msoft-float
MULTILIB_DIRNAMES=
MULTILIB_MATCHES=m68000=mc68000 m68000=m68302 m68000=m68332 m68020=mc68020 m68020=m68040
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
CRT0_S = $(srcdir)/config/m68k/mot3300-crt0.S
MCRT0_S = $(srcdir)/config/m68k/mot3300Mcrt0.S
CRT0STUFF_T_CFLAGS =
T_CPPFLAGS = -DUSE_GLD
MULTILIB_OPTIONS=m68000/m68020 msoft-float
MULTILIB_DIRNAMES=
MULTILIB_MATCHES=m68000=mc68000 m68000=m68302 m68000=m68332 m68020=mc68020 m68020=m68040
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
CRT0_S = $(srcdir)/config/m68k/mot3300-crt0.S
MCRT0_S = $(srcdir)/config/m68k/mot3300Mcrt0.S
CRT0STUFF_T_CFLAGS = -DMOTOROLA -DSGS_CMP_ORDER
/* Definitions of target machine for GNU compiler.
Copyright (C) 1990, 1994, 1996 Free Software Foundation, Inc.
Contributed by Robert Andersson, International Systems, Oslo, ra@intsys.no.
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. */
/* For NCR Tower 32/4x0 and 32/6x0 running System V Release 3. I don't have
access to 200/700/800/850 machines, so I don't know if it works on those
as well. It shouldn't be far from it however. The hardware floating point
support is completely untested, as I do not have access to a machine with
a 6888x FPU in it. It does not work on the System V Release 2 based OS
releases. Making it work will not be easy, due to the silly way in which
stack expansion is implemented in the OS.
This file is included in tower-as.h.
Do *NOT* include this file directly. */
#include "m68k/m68k.h"
#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68020)
/* Don't try using XFmode. */
#undef LONG_DOUBLE_TYPE_SIZE
#define LONG_DOUBLE_TYPE_SIZE 64
/* Names to predefine in the preprocessor for this target machine. */
#define CPP_PREDEFINES "-Dunix -Dtower32 -Dtower32_200 -Asystem=unix -Asystem=svr3 -Acpu=m68k -Amachine=m68k"
#if 0 /* It is incorrect to test these symbols.
They describe the host, not the target.
It should not matter which model is specified. */
#ifdef tower32_600
#define CPP_PREDEFINES "-Dunix -Dtower32 -Dtower32_600 -Asystem=unix -Asystem=svr3 -Acpu=m68k -Amachine=m68k"
#endif
#ifdef tower32_700
#define CPP_PREDEFINES "-Dunix -Dtower32 -Dtower32_700 -Asystem=unix -Asystem=svr3 -Acpu=m68k -Amachine=m68k"
#endif
#ifdef tower32_800
#define CPP_PREDEFINES "-Dunix -Dtower32 -Dtower32_800 -Asystem=unix -Asystem=svr3 -Acpu=m68k -Amachine=m68k"
#endif
#ifdef tower32_850
#define CPP_PREDEFINES "-Dunix -Dtower32 -Dtower32_850 -Asystem=unix -Asystem=svr3 -Acpu=m68k -Amachine=m68k"
#endif
#endif
/* The startfiles and libraries depend on the -p and -m68881 options.
The Tower does not support the -pg option. */
#define LINK_SPEC \
"%{p:%{m68881:-L/usr/lib/fp/libp} -L/usr/lib/libp} \
%{m68881:-L/usr/lib/fp}"
#define LIB_SPEC \
"%{shlib:-lc_s} -lc crtend.o%s crtn.o%s"
#define STARTFILE_SPEC \
"%{p:mcrt1.o%s} %{!p:crt1.o%s} crtbegin.o%s"
/* Use mem* functions, recognize #ident lines. */
#define TARGET_MEM_FUNCTIONS
#define IDENT_DIRECTIVE
/* Every structure and union's size must be a multiple of two bytes. */
#define STRUCTURE_SIZE_BOUNDARY 16
/* All register names should have a leading % character. */
#undef REGISTER_NAMES
#define REGISTER_NAMES \
{"%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7", \
"%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%sp", \
"%fp0", "%fp1", "%fp2", "%fp3", "%fp4", "%fp5", "%fp6", "%fp7"}
#undef REGISTER_PREFIX
#define REGISTER_PREFIX "%"
#undef IMMEDIATE_PREFIX
#define IMMEDIATE_PREFIX "&"
/* The prefix to add to user-visible assembler symbols. */
/* We do not want leading underscores. */
#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX ""
/* Configuration fragment for an m88k OpenBSD target.
Copyright (C) 2000 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. */
/* a.out with DBX. */
#define DBX_DEBUGGING_INFO 1
#define DEFAULT_GDB_EXTENSIONS 0
/* Definitions for "naked" Motorola 88k using a.out object format files
and stabs debugging info.
Copyright (C) 1994 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 SDB_DEBUGGING_INFO
#define DBX_DEBUGGING_INFO 1
#include "m88k/m88k.h"
#include "aoutos.h"
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dm88000 -Dm88k -Acpu=m88k -Amachine=m88k"
/* end of m88k-aout.h */
/* Definitions of target machine for GNU compiler for Motorola m88100.
Copyright (C) 2002 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com).
Currently maintained by (gcc@dg-rtp.dg.com)
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. */
/* Extra machine modes to represent the condition code. */
CC (CCEVEN)
/* Definitions of target machine for GNU compiler for
Motorola m88100 in an 88open OCS/BCS environment.
Copyright (C) 2000 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com).
Currently maintained by (gcc@dg-rtp.dg.com)
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. */
#ifdef RTX_CODE
extern int m88k_debugger_offset PARAMS ((rtx, int));
extern void emit_bcnd PARAMS ((enum rtx_code, rtx));
extern void expand_block_move PARAMS ((rtx, rtx, rtx *));
extern void print_operand PARAMS ((FILE *, rtx, int));
extern void print_operand_address PARAMS ((FILE *, rtx));
extern const char *output_load_const_int PARAMS ((enum machine_mode, rtx *));
extern const char *output_load_const_float PARAMS ((rtx *));
extern const char *output_load_const_double PARAMS ((rtx *));
extern const char *output_load_const_dimode PARAMS ((rtx *));
extern const char *output_and PARAMS ((rtx[]));
extern const char *output_ior PARAMS ((rtx[]));
extern const char *output_xor PARAMS ((rtx[]));
extern const char *output_call PARAMS ((rtx[], rtx));
extern struct rtx_def *emit_test PARAMS ((enum rtx_code, enum machine_mode));
extern struct rtx_def *legitimize_address PARAMS ((int, rtx, rtx, rtx));
extern struct rtx_def *legitimize_operand PARAMS ((rtx, enum machine_mode));
extern int pic_address_needs_scratch PARAMS ((rtx));
extern int symbolic_address_p PARAMS ((rtx));
extern int condition_value PARAMS ((rtx));
extern int emit_move_sequence PARAMS ((rtx *, enum machine_mode, rtx));
extern int mostly_false_jump PARAMS ((rtx, rtx));
extern int real_power_of_2_operand PARAMS ((rtx, enum machine_mode));
extern int move_operand PARAMS ((rtx, enum machine_mode));
extern int call_address_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_0_operand PARAMS ((rtx, enum machine_mode));
extern int arith_operand PARAMS ((rtx, enum machine_mode));
extern int arith5_operand PARAMS ((rtx, enum machine_mode));
extern int arith32_operand PARAMS ((rtx, enum machine_mode));
extern int arith64_operand PARAMS ((rtx, enum machine_mode));
extern int int5_operand PARAMS ((rtx, enum machine_mode));
extern int int32_operand PARAMS ((rtx, enum machine_mode));
extern int add_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_bbx_mask_operand PARAMS ((rtx, enum machine_mode));
extern int real_or_0_operand PARAMS ((rtx, enum machine_mode));
extern int partial_ccmode_register_operand PARAMS ((rtx, enum machine_mode));
extern int relop PARAMS ((rtx, enum machine_mode));
extern int even_relop PARAMS ((rtx, enum machine_mode));
extern int odd_relop PARAMS ((rtx, enum machine_mode));
extern int relop_no_unsigned PARAMS ((rtx, enum machine_mode));
extern int equality_op PARAMS ((rtx, enum machine_mode));
extern int pc_or_label_ref PARAMS ((rtx, enum machine_mode));
extern int symbolic_operand PARAMS ((rtx, enum machine_mode));
#ifdef TREE_CODE
extern void m88k_va_start PARAMS ((tree, rtx));
#endif /* TREE_CODE */
#endif /* RTX_CODE */
#ifdef ANSI_PROTOTYPES
struct m88k_lang_independent_options;
#endif
extern void output_file_start PARAMS ((FILE *,
const struct m88k_lang_independent_options *,
int,
const struct m88k_lang_independent_options *,
int));
extern int null_prologue PARAMS ((void));
extern int integer_ok_for_set PARAMS ((unsigned));
extern void m88k_layout_frame PARAMS ((void));
extern void m88k_expand_prologue PARAMS ((void));
extern void m88k_expand_epilogue PARAMS ((void));
extern void output_function_profiler PARAMS ((FILE *, int, const char *, int));
extern void output_ascii PARAMS ((FILE *, const char *, int,
const char *, int));
extern void output_label PARAMS ((int));
extern struct rtx_def *m88k_builtin_saveregs PARAMS ((void));
extern enum m88k_instruction classify_integer PARAMS ((enum machine_mode, int));
extern int mak_mask_p PARAMS ((int));
#ifdef TREE_CODE
extern struct rtx_def *m88k_function_arg PARAMS ((CUMULATIVE_ARGS,
enum machine_mode, tree,
int));
extern struct rtx_def *m88k_va_arg PARAMS ((tree, tree));
extern tree m88k_build_va_list PARAMS ((void));
#endif /* TREE_CODE */
This source diff could not be displayed because it is too large. You can view the blob instead.
/* Configuration file for an m88k OpenBSD target.
Copyright (C) 2000 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. */
/* Identify the compiler. */
#undef VERSION_INFO1
#define VERSION_INFO1 "Motorola m88k, "
/* Macros to be automatically defined. */
#define CPP_PREDEFINES \
"-D__m88k__ -D__unix__ -D__OpenBSD__ -D__CLASSIFY_TYPE__=2 -Asystem=unix -Asystem=OpenBSD -Acpu=m88k -Amachine=m88k"
/* If -m88000 is in effect, add -Dmc88000; similarly for -m88100 and -m88110.
However, reproduce the effect of -Dmc88100 previously in CPP_PREDEFINES.
Here, the CPU_DEFAULT is assumed to be -m88100. */
#undef CPP_SPEC
#define CPP_SPEC "%{m88000:-D__mc88000__} \
%{!m88000:%{m88100:%{m88110:-D__mc88000__}}} \
%{!m88000:%{!m88100:%{m88110:-D__mc88110__}}} \
%{!m88000:%{!m88110:-D__mc88100__ -D__mc88100}} \
%{posix:-D_POSIX_SOURCE} \
%{pthread:-D_POSIX_THREADS}"
/* Layout of source language data types. */
/* This must agree with <machine/ansi.h> */
#undef SIZE_TYPE
#define SIZE_TYPE "unsigned int"
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
/* Every structure or union's size must be a multiple of 2 bytes. */
#undef STRUCTURE_SIZE_BOUNDARY
#define STRUCTURE_SIZE_BOUNDARY 16
/* Stack & calling: aggregate returns. */
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
we want to retain compatibility with older gcc versions. */
#define DEFAULT_PCC_STRUCT_RETURN 0
#undef SET_ASM_OP
#define SET_ASM_OP "\t.def\t"
/* Definitions of target machine for GNU compiler.
Motorola 88100 in an 88open ABI environment.
Copyright (C) 1990, 1991, 2000, 2001 Free Software Foundation, Inc.
Written by Ron Guilmette (rfg@netcom.com).
Contributed to FSF by Network Computing Devices.
Other contributions by Vince Guarna (vguarna@urbana.mcd.mot.com),
Ray Essick (essick@i88.isc.com), Wilson Tien (wtien@urbana.mcd.mot.com),
and Tom Wood (Tom_Wood@NeXT.com)
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. */
/* DWARF_DEBUGGING_INFO defined in svr4.h. */
#ifndef NO_BUGS
#define AS_BUG_DOT_LABELS
#define AS_BUG_POUND_TYPE
#endif
/* TODO: convert includes to ${tm_file} list in config.gcc. */
#include "m88k/m88k.h"
/* Identify the compiler. */
#undef VERSION_INFO1
#define VERSION_INFO1 "88open ABI"
/* Default switches */
#undef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_CHECK_ZERO_DIV | \
MASK_OCS_DEBUG_INFO | \
MASK_SVR4)
/* Cpp spec. These pre-assertions are needed for SVR4 as they occur
often in the system header files. __svr4__ is our extension. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES \
"-Dm88000 -Dm88k -Dunix -D__svr4__ -Amachine=m88k -Acpu=m88k -Asystem=unix -Asystem=svr4"
/* For the AT&T SVR4 port, the function is _mcount. */
#undef FUNCTION_PROFILER
#define FUNCTION_PROFILER(FILE, LABELNO) \
output_function_profiler (FILE, LABELNO, "_mcount", 1)
/* Override svr4.h and m88k.h. */
#undef INIT_SECTION_ASM_OP
#define INIT_SECTION_ASM_OP "\tsection\t.init,\"xa\",#progbits"
#undef FINI_SECTION_ASM_OP
#define FINI_SECTION_ASM_OP "\tsection\t.fini,\"xa\",#progbits"
/* Define the pseudo-ops used to switch to the .ctors and .dtors sections.
Note that we want to give these sections the SHF_WRITE attribute
because these sections will actually contain data (i.e. tables of
addresses of functions in the current root executable or shared library
file) and, in the case of a shared library, the relocatable addresses
will have to be properly resolved/relocated (and then written into) by
the dynamic linker when it actually attaches the given shared library
to the executing process. (Note that on SVR4, you may wish to use the
`-z text' option to the ELF linker, when building a shared library, as
an additional check that you are doing everything right. But if you do
use the `-z text' option when building a shared library, you will get
errors unless the .ctors and .dtors sections are marked as writable
via the SHF_WRITE attribute.) */
#undef CTORS_SECTION_ASM_OP
#define CTORS_SECTION_ASM_OP "\tsection\t.ctors,\"aw\""
#undef DTORS_SECTION_ASM_OP
#define DTORS_SECTION_ASM_OP "\tsection\t.dtors,\"aw\""
# Specify how to create the *.asm files
MOVE_ASM = moveHI15x.asm moveQI16x.asm moveSI46x.asm moveSI64n.asm \
moveHI48x.asm moveSI45x.asm moveSI47x.asm moveSI96x.asm \
moveDI96x.asm
$(MOVE_ASM): $(srcdir)/config/m88k/m88k-move.sh
$(srcdir)/config/m88k/m88k-move.sh -no-tdesc
LIB2FUNCS_EXTRA = $(MOVE_ASM)
# Specify how to create the *.asm files
MOVE_ASM = moveHI15x.asm moveQI16x.asm moveSI46x.asm moveSI64n.asm \
moveHI48x.asm moveSI45x.asm moveSI47x.asm moveSI96x.asm \
moveDI96x.asm
$(MOVE_ASM): $(srcdir)/config/m88k/m88k-move.sh
$(SHELL) $(srcdir)/config/m88k/m88k-move.sh -no-tdesc
LIB2FUNCS_EXTRA = $(MOVE_ASM)
T_CPPFLAGS = -DUSE_GAS
# Specify how to create the *.asm files
MOVE_ASM = moveHI15x.asm moveQI16x.asm moveSI46x.asm moveSI64n.asm \
moveHI48x.asm moveSI45x.asm moveSI47x.asm moveSI96x.asm \
moveDI96x.asm
$(MOVE_ASM): $(srcdir)/config/m88k/m88k-move.sh
$(srcdir)/config/m88k/m88k-move.sh
LIB2FUNCS_EXTRA = $(MOVE_ASM)
# Specify how to create the *.asm files
MOVE_ASM = moveHI15x.asm moveQI16x.asm moveSI46x.asm moveSI64n.asm \
moveHI48x.asm moveSI45x.asm moveSI47x.asm moveSI96x.asm \
moveDI96x.asm
# Use the -abi option for version 03.00 syntax.
$(MOVE_ASM): $(srcdir)/config/m88k/m88k-move.sh
$(srcdir)/config/m88k/m88k-move.sh -abi
LIB2FUNCS_EXTRA = $(MOVE_ASM)
# We need to use -fPIC when we are using gcc to compile the routines in
# crtstuff.c. This is only really needed when we are going to use gcc/g++
# to produce a shared library, but since we don't know ahead of time when
# we will be doing that, we just always use -fPIC when compiling the
# routines in crtstuff.c.
CRTSTUFF_T_CFLAGS=-fPIC
/* Output routines for Motorola MCore processor
Copyright (C) 1993, 1999, 2000 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. */
/* float.h for the M*Core microprocessor. It uses IEEE floating point.
* float is 32 bit IEEE-754 format
* double is 64 bit IEEE-754 format
* long double is not defined right now...
*/
#ifndef __FLOAT_H___
#define __FLOAT_H___
#define FLT_RADIX 2
#define FLT_ROUNDS 1
#define FLT_MANT_DIG 24
#define FLT_DIG 6
#define FLT_EPSILON ((float)1.19209290e-07)
#define FLT_MIN_EXP (-125)
#define FLT_MIN ((float)1.17549435e-38)
#define FLT_MIN_10_EXP (-37)
#define FLT_MAX_EXP 128
#define FLT_MAX ((float)3.40282347e+38)
#define FLT_MAX_10_EXP 38
#define DBL_MANT_DIG 53
#define DBL_DIG 15
#define DBL_EPSILON 2.2204460492503131e-16
#define DBL_MIN_EXP (-1021)
#define DBL_MIN 2.2250738585072014e-308
#define DBL_MIN_10_EXP (-307)
#define DBL_MAX_EXP 1024
#define DBL_MAX 1.7976931348623157e+308
#define DBL_MAX_10_EXP 308
/* No definitions for LDBL at this time. */
#undef LDBL_MANT_DIG
#undef LDBL_DIG
#undef LDBL_EPSILON
#undef LDBL_MIN_EXP
#undef LDBL_MIN
#undef LDBL_MIN_10_EXP
#undef LDBL_MAX_EXP
#undef LDBL_MAX
#undef LDBL_MAX_10_EXP
#endif /* __FLOAT_H__ */
/* Definitions for rtems targeting a MIPS ORION using ecoff.
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
Contributed by Joel Sherrill (joel@OARcorp.com).
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. */
/* Specify predefined symbols in preprocessor. */
#define TARGET_OS_CPP_BUILTINS() \
do { \
builtin_define ("__rtems__"); \
builtin_assert ("system=rtems"); \
} while (0)
#undef EXTRA_SECTIONS
#define EXTRA_SECTIONS in_sdata
#undef EXTRA_SECTION_FUNCTIONS
#define EXTRA_SECTION_FUNCTIONS \
SECTION_FUNCTION_TEMPLATE(sdata_section, in_sdata, SDATA_SECTION_ASM_OP)
#undef STARTFILE_SPEC
#undef ENDFILE_SPEC
/* Enable debugging. */
#define DBX_DEBUGGING_INFO 1
#define SDB_DEBUGGING_INFO 1
#define MIPS_DEBUGGING_INFO 1
#define DWARF_DEBUGGING_INFO 1
#undef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
/* We need to use .esize and .etype instead of .size and .type to
avoid conflicting with ELF directives. These are only recognized
by gas, anyhow, not the native assembler. */
#undef PUT_SDB_SIZE
#define PUT_SDB_SIZE(a) \
do { \
extern FILE *asm_out_text_file; \
fprintf (asm_out_text_file, "\t.esize\t"); \
fprintf (asm_out_text_file, HOST_WIDE_INT_PRINT_DEC, (HOST_WIDE_INT) (a)); \
fprintf (asm_out_text_file, ";"); \
} while (0)
#undef PUT_SDB_TYPE
#define PUT_SDB_TYPE(a) \
do { \
extern FILE *asm_out_text_file; \
fprintf (asm_out_text_file, "\t.etype\t0x%x;", (a)); \
} while (0)
/* This is how to equate one symbol to another symbol. The syntax used is
`SYM1=SYM2'. Note that this is different from the way equates are done
with most svr4 assemblers, where the syntax is `.set SYM1,SYM2'. */
#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \
do { fprintf ((FILE), "\t"); \
assemble_name (FILE, LABEL1); \
fprintf (FILE, " = "); \
assemble_name (FILE, LABEL2); \
fprintf (FILE, "\n"); \
} while (0)
/* Definitions of target machine for GNU compiler. SNI SINIX version.
Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
Contributed by Marco Walther (Marco.Walther@mch.sni.de).
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. */
#define MIPS_SVR4
#define TARGET_OS_CPP_BUILTINS() \
do { \
builtin_define_std ("host_mips"); \
builtin_define_std ("SYSTYPE_SVR4"); \
builtin_define_std ("unix"); \
builtin_define_std ("mips"); \
builtin_define_std ("sinix"); \
builtin_define_std ("SNI"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=svr4"); \
builtin_assert ("machine=mips"); \
} while (0)
#define LINK_SPEC "\
%{G*} \
%{!mgas: \
%{dy} %{dn}}"
#define LIB_SPEC "\
%{p:-lprof1} \
%{!p:%{pg:-lprof1} \
%{!pg:-L/usr/ccs/lib/ -lc /usr/ccs/lib/crtn.o%s}}"
#define STARTFILE_SPEC "\
%{pg:gcrt0.o%s} \
%{!pg:%{p:mcrt0.o%s} \
%{!p:/usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xt.o%s}}"
/* Mips System V.4 doesn't have a getpagesize() function needed by the
trampoline code, so use the POSIX sysconf function to get it.
This is only done when compiling the trampoline code. */
#ifdef L_trampoline
#include <unistd.h>
#define getpagesize() sysconf(_SC_PAGE_SIZE)
#endif /* L_trampoline */
#define OBJECT_FORMAT_ELF
#define TARGET_DEFAULT MASK_ABICALLS
#define ABICALLS_ASM_OP "\t.option pic2"
#define MACHINE_TYPE "SNI running SINIX 5.42"
#define MIPS_DEFAULT_GVALUE 0
#define NM_FLAGS "-p"
#define ASM_GLOBAL ".rdata\n\t\t.globl\t"
#include "mips/mips.h"
/* We do not want to run mips-tfile! */
#undef ASM_FINAL_SPEC
#undef OBJECT_FORMAT_COFF
/* We don't support debugging info for now. */
#undef DBX_DEBUGGING_INFO
#undef SDB_DEBUGGING_INFO
#undef MIPS_DEBUGGING_INFO
#undef PREFERRED_DEBUGGING_TYPE
#define DWARF2_UNWIND_INFO 0
LIB1ASMSRC = mips/mips16.S
LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \
_m16eqsf2 _m16nesf2 _m16gtsf2 _m16gesf2 _m16lesf2 _m16ltsf2 \
_m16fltsisf _m16fixsfsi \
_m16adddf3 _m16subdf3 _m16muldf3 _m16divdf3 \
_m16extsfdf2 _m16trdfsf2 \
_m16eqdf2 _m16nedf2 _m16gtdf2 _m16gedf2 _m16ledf2 _m16ltdf2 \
_m16fltsidf _m16fixdfsi \
_m16retsf _m16retdf \
_m16stub1 _m16stub2 _m16stub5 _m16stub6 _m16stub9 _m16stub10 \
_m16stubsf0 _m16stubsf1 _m16stubsf2 _m16stubsf5 _m16stubsf6 \
_m16stubsf9 _m16stubsf10 \
_m16stubdf0 _m16stubdf1 _m16stubdf2 _m16stubdf5 _m16stubdf6 \
_m16stubdf9 _m16stubdf10
# We must build libgcc2.a with -G 0, in case the user wants to link
# without the $gp register.
TARGET_LIBGCC2_CFLAGS = -G 0
# Build the libraries for both hard and soft floating point
MULTILIB_OPTIONS = msoft-float/msingle-float EL/EB mips1/mips3
MULTILIB_DIRNAMES = soft-float single el eb mips1 mips3
MULTILIB_MATCHES = EL=mel EB=meb
MULTILIB_MATCHES = msingle-float=m4650
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# Add additional dependencies to recompile selected modules whenever the
# tm.h file changes. The files compiled are:
#
# gcc.c (*_SPEC changes)
# toplev.c (new switches + assembly output changes)
# sdbout.c (debug format changes)
# dbxout.c (debug format changes)
# dwarfout.c (debug format changes)
# final.c (assembly output changes)
# varasm.c (assembly output changes)
# cse.c (cost functions)
# insn-output.c (possible ifdef changes in tm.h)
# regclass.c (fixed/call used register changes)
# explow.c (GO_IF_LEGITIMATE_ADDRESS)
# recog.c (GO_IF_LEGITIMATE_ADDRESS)
# reload.c (GO_IF_LEGITIMATE_ADDRESS)
gcc.o: $(CONFIG2_H)
toplev.o: $(CONFIG2_H)
sdbout.o: $(CONFIG2_H)
dbxout.o: $(CONFIG2_H)
dwarfout.o: $(CONFIG2_H)
final.o: $(CONFIG2_H)
varasm.o: $(CONFIG2_H)
cse.o: $(CONFIG2_H)
insn-output.o: $(CONFIG2_H)
regclass.o: $(CONFIG2_H)
explow.o: $(CONFIG2_H)
recog.o: $(CONFIG2_H)
reload.o: $(CONFIG2_H)
/* Definitions of target machine for GNU compiler. Matsushita MN10200 series
Copyright (C) 2000 Free Software Foundation, Inc.
Contributed by Jeff Law (law@cygnus.com).
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. */
#ifdef RTX_CODE
extern void print_operand PARAMS ((FILE *, rtx, int));
extern void print_operand_address PARAMS ((FILE *, rtx));
extern void notice_update_cc PARAMS ((rtx, rtx));
extern enum reg_class secondary_reload_class PARAMS ((enum reg_class,
enum machine_mode,
rtx, int));
extern const char *emit_a_shift PARAMS ((rtx, rtx *));
extern const char *output_tst PARAMS ((rtx, rtx));
extern int expand_a_shift PARAMS ((enum machine_mode, int, rtx[]));
extern int call_address_operand PARAMS ((rtx, enum machine_mode));
extern int extendpsi_operand PARAMS ((rtx, enum machine_mode));
extern int psimode_truncation_operand PARAMS ((rtx, enum machine_mode));
extern int constant_memory_operand PARAMS ((rtx, enum machine_mode));
extern int nshift_operator PARAMS ((rtx, enum machine_mode));
#endif /* RTX_CODE */
#ifdef TREE_CODE
extern struct rtx_def *function_arg PARAMS ((CUMULATIVE_ARGS *,
enum machine_mode, tree, int));
extern struct rtx_def *mn10200_va_arg PARAMS ((tree, tree));
extern int function_arg_partial_nregs PARAMS ((CUMULATIVE_ARGS *,
enum machine_mode, tree, int));
#endif /* TREE_CODE */
extern void asm_file_start PARAMS ((FILE *));
extern void expand_prologue PARAMS ((void));
extern void expand_epilogue PARAMS ((void));
extern int total_frame_size PARAMS ((void));
LIB1ASMSRC = mn10200/lib1funcs.asm
LIB1ASMFUNCS = _divhi3 \
_modhi3 \
_addsi3 \
_subsi3 \
_mulsi3 \
_ashlsi3 \
_lshrsi3 \
_ashrsi3 \
_negsi2_d0 \
_negsi2_d2 \
_zero_extendpsisi2_d0 \
_zero_extendpsisi2_d2 \
_sign_extendpsisi2_d0 \
_sign_extendpsisi2_d2 \
_truncsipsi2_d0_d0 \
_truncsipsi2_d0_d1 \
_truncsipsi2_d0_d2 \
_truncsipsi2_d0_d3 \
_truncsipsi2_d2_d0 \
_truncsipsi2_d2_d1 \
_truncsipsi2_d2_d2 \
_truncsipsi2_d2_d3 \
_cmpsi2 \
_ucmpsi2 \
_prologue \
_epilogue_a0 \
_epilogue_d0 \
_epilogue_noreturn \
_floatdisf \
_fixsfdi
# We do not have DF or DI types, so fake out the libgcc2 compilation.
TARGET_LIBGCC2_CFLAGS=-DDF=SF -DDI=SI
LIB2FUNCS_EXTRA = $(srcdir)/config/udivmodsi4.c \
$(srcdir)/config/divmod.c $(srcdir)/config/udivmod.c
# We want fine grained libraries, so use the new code to build the
# floating point emulation libraries. The mn10200 only has single
# precision floating point.
FPBIT = fp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
echo '#define FLOAT_ONLY' >> fp-bit.c
echo '#define SMALL_MACHINE' >> fp-bit.c
echo '#define CMPtype HItype' >> fp-bit.c
echo '#ifdef __LITTLE_ENDIAN__' >> fp-bit.c
echo '#define FLOAT_BIT_ORDER_MISMATCH' >>fp-bit.c
echo '#endif' >> fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
/* Definitions of target machine for GNU compiler, for HI-UX.
Copyright (C) 1993, 1995, 1996, 2002 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. */
/* HIUX is just a HPUX variant. We can simply use the HPUX configuration
for just about everything. */
/* OS cpp builtins are the one noteworthy difference between HPUX and HIUX.
The following defines are similar to those for hpux10 with the addition
of __H3050R and __H3050RX. */
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_assert ("system=hiux"); \
builtin_assert ("system=unix"); \
builtin_define ("__hp9000s800"); \
builtin_define ("__hp9000s800__"); \
builtin_define ("__hiux"); \
builtin_define ("__hiux__"); \
builtin_define ("__unix"); \
builtin_define ("__unix__"); \
builtin_define ("__H3050R"); \
builtin_define ("__H3050RX"); \
if (c_language == clk_cplusplus) \
{ \
builtin_define ("_HIUX_SOURCE"); \
builtin_define ("_INCLUDE_LONGLONG"); \
} \
else if (!flag_iso) \
{ \
builtin_define ("_HIUX_SOURCE"); \
if (preprocessing_trad_p ()) \
{ \
builtin_define ("hp9000s800"); \
builtin_define ("hppa"); \
builtin_define ("hiux"); \
builtin_define ("unix"); \
builtin_define ("__CLASSIC_C__"); \
builtin_define ("_PWB"); \
builtin_define ("PWB"); \
} \
else \
builtin_define ("__STDC_EXT__"); \
} \
if (TARGET_SIO) \
builtin_define ("_SIO"); \
else \
{ \
builtin_define ("__hp9000s700"); \
builtin_define ("__hp9000s700__"); \
builtin_define ("_WSIO"); \
} \
} \
while (0)
#undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES \
{ "sio", MASK_SIO, N_("Generate cpp defines for server IO") }, \
{ "wsio", -MASK_SIO, N_("Generate cpp defines for workstation IO") },
/* Definitions of target machine for GNU compiler, for HP-UX.
Copyright (C) 1991, 1995, 1996, 2002 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. */
#ifndef TARGET_DEFAULT
#define TARGET_DEFAULT 0
#endif
/* Make GCC agree with types.h. */
#undef SIZE_TYPE
#undef PTRDIFF_TYPE
#define SIZE_TYPE "unsigned int"
#define PTRDIFF_TYPE "int"
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_assert ("system=hpux"); \
builtin_assert ("system=unix"); \
builtin_define ("__hp9000s800"); \
builtin_define ("__hp9000s800__"); \
builtin_define ("__hp9k8"); \
builtin_define ("__hp9k8__"); \
builtin_define ("__hpux"); \
builtin_define ("__hpux__"); \
builtin_define ("__unix"); \
builtin_define ("__unix__"); \
if (c_language == clk_cplusplus) \
{ \
builtin_define ("_HPUX_SOURCE"); \
builtin_define ("_INCLUDE_LONGLONG"); \
} \
else if (!flag_iso) \
{ \
builtin_define ("_HPUX_SOURCE"); \
if (preprocessing_trad_p ()) \
{ \
builtin_define ("hp9000s800"); \
builtin_define ("hp9k8"); \
builtin_define ("hppa"); \
builtin_define ("hpux"); \
builtin_define ("unix"); \
builtin_define ("__CLASSIC_C__"); \
builtin_define ("_PWB"); \
builtin_define ("PWB"); \
} \
else \
builtin_define ("__STDC_EXT__"); \
} \
if (TARGET_SIO) \
builtin_define ("_SIO"); \
else \
{ \
builtin_define ("__hp9000s700"); \
builtin_define ("__hp9000s700__"); \
builtin_define ("_WSIO"); \
} \
} \
while (0)
#undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES \
{ "sio", MASK_SIO, N_("Generate cpp defines for server IO") }, \
{ "wsio", -MASK_SIO, N_("Generate cpp defines for workstation IO") },
/* Like the default, except no -lg. */
#undef LIB_SPEC
#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p: -L/lib/libp/ -lc}%{pg: -L/lib/libp/ -lc}"
/* Definitions of target machine for GNU compiler, for HP PA-RISC 1.1
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
Contributed by Tim Moore (moore@defmacro.cs.utah.edu)
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. */
/* We can debug dynamically linked executables on hpux9; we also want
dereferencing of a NULL pointer to cause a SEGV. */
#undef LINK_SPEC
#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_PA_11)
#define LINK_SPEC \
"%{!mpa-risc-1-0:%{!shared:-L/lib/pa1.1 -L/usr/lib/pa1.1 }} -z %{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{shared:-b}"
#else
#define LINK_SPEC \
"-z %{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{shared:-b}"
#endif
/* Definitions of target machine for GNU compiler, for HP PA-RISC 1.1
Copyright (C) 1991, 1996 Free Software Foundation, Inc.
Contributed by Tim Moore (moore@defmacro.cs.utah.edu)
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. */
#define HP_FP_ARG_DESCRIPTOR_REVERSED
LIB2FUNCS_EXTRA= quadlib.c
quadlib.c: $(srcdir)/config/pa/quadlib.c
rm -f quadlib.c
cp $(srcdir)/config/pa/quadlib.c .
/* Operating system specific defines to be used when targeting GCC for some
embedded system running pSOS. We assume GNU tools with ELF, but
try to maintain compatibility with the MRI tools. Based on svr4.h.
Copyright (C) 1996, 1999, 2000 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.
To use this file, make up a file with a name like:
?????-psos.h
where ????? is replaced by the name of the basic hardware that you
are targeting for. Then, in the file ?????-psos.h, put something
like:
#include "?????.h"
#include "psos.h"
followed by any really system-specific defines (or overrides of
defines) which you find that you need.
*/
/* Define a symbol indicating that we are using psos.h. */
#define USING_PSOS_H
/* All pSOS targets currently use the ELF object file format. */
#define OBJECT_FORMAT_ELF
/* Provide a NULL STARTFILE_SPEC. The startfile cannot be specified
here because it depends on the architecture (e.g. 68K), the
board-support package (e.g. M162) and the run-time configuration
(e.g. application vs. ram-image vs. rom-image). Specify the
startfile in a linker-script created from the generic
architecture-specific linker-scripts. */
#undef STARTFILE_SPEC
#define STARTFILE_SPEC ""
/* Predefined macros (independent of processor type). */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dpsos"
/* Implicit library calls should use ANSI memcpy rather than BSD
bcopy, etc. */
#define TARGET_MEM_FUNCTIONS
/* This is how we tell the assembler that a symbol is weak. */
#define ASM_WEAKEN_LABEL(FILE,NAME) \
do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
fputc ('\n', FILE); } while (0)
/* Switch into a generic section. */
#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
/* Use DBX debugging info by default. */
#ifndef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
#endif
/* For pSOS we use DBX debugging info. */
#define DBX_DEBUGGING_INFO 1
/* Definitions of target machine for GNU compiler, for ROMP chip.
Copyright (C) 2000 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@nyu.edu)
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. */
#ifdef RTX_CODE
extern int next_insn_tests_no_unsigned PARAMS ((rtx));
extern void update_cc PARAMS ((rtx, rtx));
extern int restore_compare_p PARAMS ((rtx));
extern void print_operand PARAMS ((FILE *, rtx, int));
extern rtx get_symref PARAMS ((const char *));
extern int check_precision PARAMS ((enum machine_mode, rtx, rtx));
extern const char *output_fpop PARAMS ((enum rtx_code, rtx, rtx, rtx, rtx));
extern int constant_pool_address_operand PARAMS ((rtx, enum machine_mode));
extern int romp_symbolic_operand PARAMS ((rtx, enum machine_mode));
extern int zero_memory_operand PARAMS ((rtx, enum machine_mode));
extern int short_memory_operand PARAMS ((rtx, enum machine_mode));
extern int symbolic_memory_operand PARAMS ((rtx, enum machine_mode));
extern int current_function_operand PARAMS ((rtx, enum machine_mode));
extern int constant_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_cint_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_any_cint_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_D_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_add_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_and_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_mem_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_nonsymb_mem_operand PARAMS ((rtx, enum machine_mode));
extern int romp_operand PARAMS ((rtx, enum machine_mode));
extern int reg_0_operand PARAMS ((rtx, enum machine_mode));
extern int reg_15_operand PARAMS ((rtx, enum machine_mode));
extern int float_binary PARAMS ((rtx, enum machine_mode));
extern int float_unary PARAMS ((rtx, enum machine_mode));
extern int float_conversion PARAMS ((rtx, enum machine_mode));
extern void romp_initialize_trampoline PARAMS ((rtx, rtx, rtx));
#endif /* RTX_CODE */
extern int first_reg_to_save PARAMS ((void));
extern int romp_pushes_stack PARAMS ((void));
extern int romp_using_r14 PARAMS ((void));
extern int null_epilogue PARAMS ((void));
extern int romp_sa_size PARAMS ((void));
extern int romp_makes_calls PARAMS ((void));
extern void output_encoded_offset PARAMS ((FILE *, unsigned));
extern int romp_debugger_auto_correction PARAMS ((int));
extern int romp_debugger_arg_correction PARAMS ((int));
extern const char *output_in_line_mul PARAMS ((void));
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 running AIX version 3.1.
Copyright (C) 1993,1997, 2000, 2001, 2003 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@nyu.edu)
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
/* Output something to declare an external symbol to the assembler. Most
assemblers don't need this.
If we haven't already, add "[RW]" (or "[DS]" for a function) to the
name. Normally we write this out along with the name. In the few cases
where we can't, it gets stripped off. */
#undef ASM_OUTPUT_EXTERNAL
#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
{ rtx _symref = XEXP (DECL_RTL (DECL), 0); \
if ((TREE_CODE (DECL) == VAR_DECL \
|| TREE_CODE (DECL) == FUNCTION_DECL) \
&& (NAME)[strlen (NAME) - 1] != ']') \
{ \
XSTR (_symref, 0) = concat (XSTR (_symref, 0), \
(TREE_CODE (DECL) == FUNCTION_DECL \
? "[DS]" : "[RW]"), \
NULL); \
} \
fputs ("\t.extern ", FILE); \
assemble_name (FILE, XSTR (_symref, 0)); \
if (TREE_CODE (DECL) == FUNCTION_DECL) \
{ \
fputs ("\n\t.extern .", FILE); \
RS6000_OUTPUT_BASENAME (FILE, XSTR (_symref, 0)); \
} \
putc ('\n', FILE); \
}
/* Similar, but for libcall. We only have to worry about the function name,
not that of the descriptor. */
#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \
{ fputs ("\t.extern .", FILE); \
assemble_name (FILE, XSTR (FUN, 0)); \
putc ('\n', FILE); \
}
/* AIX 3.2 defined _AIX32, but older versions do not. */
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define ("_IBMR2"); \
builtin_define ("_AIX"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=aix"); \
builtin_assert ("cpu=rs6000"); \
builtin_assert ("machine=rs6000"); \
} \
while (0)
/* AIX 3.1 uses bit 15 in CROR as the magic nop. */
#undef RS6000_CALL_GLUE
#define RS6000_CALL_GLUE "cror 15,15,15"
/* AIX 3.1 does not prepend underscores to itrunc, uitrunc, or mcount. */
#undef RS6000_ITRUNC
#define RS6000_ITRUNC "itrunc"
#undef RS6000_UITRUNC
#define RS6000_UITRUNC "uitrunc"
#undef RS6000_MCOUNT
#define RS6000_MCOUNT ".mcount"
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 POWER running AIX version 3.x with the fixed assembler.
Copyright (C) 1995, 1996, 2000, 2001, 2003 Free Software Foundation, Inc.
Contributed by Jason Merrill (jason@cygnus.com).
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
/* Tell the assembler to assume that all undefined names are external. */
#undef ASM_SPEC
#define ASM_SPEC "-u %(asm_cpu)"
#undef ASM_DEFAULT_SPEC
#define ASM_DEFAULT_SPEC "-mpwr"
/* Define the options for the binder: Start text at 512, align all segments
to 512 bytes, and warn if there is text relocation.
The -bhalt:4 option supposedly changes the level at which ld will abort,
but it also suppresses warnings about multiply defined symbols and is
used by the AIX cc command. So we use it here.
-bnodelcsect undoes a poor choice of default relating to multiply-defined
csects. See AIX documentation for more information about this.
-bM:SRE tells the linker that the output file is Shared REusable. Note
that to actually build a shared library you will also need to specify an
export list with the -Wl,-bE option.
If -mcpu=common, export the architecture dependent multiply/divide routines
as per README.RS6000. */
#undef LINK_SPEC
#ifndef CROSS_COMPILE
#define LINK_SPEC "-T512 -H512 %{!r:-btextro} -bhalt:4 -bnodelcsect\
%{static:-bnso -bI:/lib/syscalls.exp} \
%{mcpu=common: milli.exp%s} \
%{!shared:%{g*:-bexport:/usr/lib/libg.exp}} %{shared:-bM:SRE}"
#else
#define LINK_SPEC "-T512 -H512 %{!r:-btextro} -bhalt:4 -bnodelcsect\
%{static:-bnso} \
%{mcpu=common: milli.exp%s} \
%{shared:-bM:SRE}"
#endif
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 running MACH.
Copyright (C) 1992, 1999, 2003 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@nyu.edu)
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
#define TARGET_AIX 0
/* Print subsidiary information on the compiler version in use. */
#define TARGET_VERSION fprintf (stderr, " (Mach-RS/6000)");
/* We don't define AIX under MACH; instead we define `unix'. */
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define_std ("rios"); \
builtin_define ("_IBMR2"); \
builtin_define_std ("unix"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=mach"); \
builtin_assert ("cpu=rs6000"); \
builtin_assert ("machine=rs6000"); \
} \
while (0)
/* Define different binder options for MACH. */
#undef LINK_SPEC
#define LINK_SPEC \
"-T0x10000000 -D0x20000000 -K %{!nostdlib:%{!r*:%{!e*:-e __start}}} \
-bnoso -berrmsg -btextro -bhalt:4 -bnodelcsect"
/* MACH doesn't have atexit. */
#define NEED_ATEXIT
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
we want to retain compatibility with older gcc versions. */
#define DEFAULT_PCC_STRUCT_RETURN 0
#undef LIB_SPEC
#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:%{p:gcrt0.o%s}%{!p:crt0.o%s}}"
/* Definitions of target machine for GNU compiler, for HAL
SPARC running Solaris 2 HALOS
Copyright 1998 Free Software Foundation, Inc.
Contributed by Carol LePage (carolo@hal.com)
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. */
/* Need different command line for assembler */
#undef ASM_SPEC
#define ASM_SPEC \
"%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*} -e1 \
%{fpic:-K PIC} %{fPIC:-K PIC}"
/* Need DWARF for debuggers. */
#undef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
/* Definitions for SPARC running Linux-based GNU systems with a.out.
Copyright (C) 1996, 1997, 1999, 2002 Free Software Foundation, Inc.
Contributed by Eddie C. Dost (ecd@skynet.be)
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. */
/* Don't assume anything about the header files. */
#define NO_IMPLICIT_EXTERN_C
/* GNU/Linux uses ctype from glibc.a. I am not sure how complete it is.
For now, we play safe. It may change later. */
#if 0
#undef MULTIBYTE_CHARS
#define MULTIBYTE_CHARS 1
#endif
/* We need that too. */
#define HANDLE_SYSV_PRAGMA 1
#undef MD_EXEC_PREFIX
#undef MD_STARTFILE_PREFIX
/* Output at beginning of assembler file. */
/* The .file command should always begin the output. */
#undef ASM_FILE_START
#define ASM_FILE_START(FILE) output_file_directive (FILE, main_input_filename)
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%{pg:gcrt0.o%s} %{!pg:%{p:gcrt0.o%s} %{!p:crt0.o%s}} %{static:-static}"
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (sparc GNU/Linux with a.out)");
#undef SIZE_TYPE
#define SIZE_TYPE "unsigned int"
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -Dsparc -D__gnu_linux__ -Dlinux -Asystem=unix -Asystem=posix"
#undef CPP_SUBTARGET_SPEC
#define CPP_SUBTARGET_SPEC \
"%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
/* Don't default to pcc-struct-return, because gcc is the only compiler,
and we want to retain compatibility with older gcc versions. */
#undef DEFAULT_PCC_STRUCT_RETURN
#define DEFAULT_PCC_STRUCT_RETURN 0
#undef LIB_SPEC
#if 1
/* We no longer link with libc_p.a or libg.a by default. If you
want to profile or debug the GNU/Linux C library, please add
-lc_p or -ggdb to LDFLAGS at the link time, respectively. */
#define LIB_SPEC \
"%{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} %{!ggdb:-lc} %{ggdb:-lg}"
#else
#define LIB_SPEC \
"%{mieee-fp:-lieee} %{p:-lgmon -lc_p} %{pg:-lgmon -lc_p} \
%{!p:%{!pg:%{!g*:-lc} %{g*:-lg -static}}}"
#endif
#undef LINK_SPEC
#define LINK_SPEC "-m sparclinux"
/* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
It's safe to pass -s always, even if -g is not used. */
#undef ASM_SPEC
#define ASM_SPEC \
"%{V} %{v:%{!V:-V}} %{n} %{T} %{Ym,*} %{Wa,*:%*} -s %{fpic:-K PIC} %{fPIC:-K PIC}"
/* Definitions for SPARC running LynxOS, using Lynx's old as and ld.
Copyright (C) 1993, 1995 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. */
/* ??? Must redefine to get sparclite and v8 defines. Can this be done
differently? */
#undef CPP_SPEC
#define CPP_SPEC "%{mthreads:-D_MULTITHREADED} \
%{mposix:-D_POSIX_SOURCE} \
%{msystem-v:-I/usr/include_v} \
%(cpp_cpu)"
/* Names to predefine in the preprocessor for this target machine. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -Dsparc -DLynx -DIBITS32 -Asystem=unix -Asystem=lynx -Acpu=sparc -Amachine=sparc"
/* Provide required defaults for linker switches. */
#undef LINK_SPEC
#define LINK_SPEC "-e __main -T 0 %{msystem-v:-V} %{mcoff:-k}"
/* Definitions for SPARC running LynxOS.
Copyright (C) 1993, 1995, 1996, 2000 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 ASM_OUTPUT_IDENT
#define BSS_SECTION_ASM_OP "\t.section\t\".bss\""
/* ??? Must redefine to get sparclite and v8 defines. Can this be done
differently? */
#undef CPP_SPEC
#define CPP_SPEC "%{mthreads:-D_MULTITHREADED} \
%{mposix:-D_POSIX_SOURCE} \
%{msystem-v:-I/usr/include_v} \
%(cpp_cpu)"
/* Names to predefine in the preprocessor for this target machine. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -Dsparc -DSPARC -DLynx -DLYNX -DIBITS32 -Asystem=unix -Asystem=lynx -Acpu=sparc -Amachine=sparc"
#undef LINK_SPEC
/* SPARC version of libc.a has references to libm.a (printf calls pow for
instance), so we must always link both. */
#undef LIB_SPEC
#define LIB_SPEC "%{mthreads:-L/lib/thread/} \
%{msystem-v:-lc_v -lm_v -lc_v} \
%{!msystem-v:%{mposix:-lc_p} -lc -lm -lc}"
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
NETBSD_OS_CPP_BUILTINS_AOUT(); \
builtin_define_std ("sparc"); \
builtin_assert ("cpu=sparc"); \
builtin_assert ("machine=sparc"); \
} \
while (0)
/* Make sure this is undefined. */
#undef CPP_PREDEFINES
/* What extra spec entries do we need? */
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
{ "netbsd_cpp_spec", NETBSD_CPP_SPEC },
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %(netbsd_cpp_spec)"
/* Make gcc agree with <machine/ansi.h> */
#undef SIZE_TYPE
#define SIZE_TYPE "unsigned int"
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
/* This is BSD, so it wants DBX format. */
#define DBX_DEBUGGING_INFO 1
/* This is the char to use for continuation (in case we need to turn
continuation back on). */
#define DBX_CONTIN_CHAR '?'
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
we want to retain compatibility with older gcc versions. */
#undef DEFAULT_PCC_STRUCT_RETURN
#define DEFAULT_PCC_STRUCT_RETURN 0
/* Until they use ELF or something that handles dwarf2 unwinds
and initialization stuff better. */
#define DWARF2_UNWIND_INFO 0
/* Attempt to enable execute permissions on the stack. */
#define TRANSFER_FROM_TRAMPOLINE NETBSD_ENABLE_EXECUTE_STACK
/* Definitions of target machine for GNU compiler, for sparclite 86x w/o FPU.
Copyright (C) 1998, 1999, 2000 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 CPP_PREDEFINES
#define CPP_PREDEFINES "-D__sparc__ -D__sparclite86x__ -Acpu=sparc -Amachine=sparc"
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (sparclite 86x)");
/* Enable app-regs and epilogue options. Do not enable the fpu. */
#undef TARGET_DEFAULT
#define TARGET_DEFAULT MASK_APP_REGS
#undef ASM_SPEC
#define ASM_SPEC "%{v:-v} %{mlittle-endian-data:--little-endian-data} %(asm_cpu)"
/* US Software GOFAST library support. */
#undef INIT_SUBTARGET_OPTABS
#define INIT_SUBTARGET_OPTABS INIT_GOFAST_OPTABS
#undef LINK_SPEC
#define LINK_SPEC "%{v:-V}"
#undef BYTES_BIG_ENDIAN
#define BYTES_BIG_ENDIAN (! TARGET_LITTLE_ENDIAN_DATA)
#undef WORDS_BIG_ENDIAN
#define WORDS_BIG_ENDIAN (! TARGET_LITTLE_ENDIAN_DATA)
#define TARGET_LITTLE_ENDIAN_DATA (target_flags & MASK_LITTLE_ENDIAN)
#undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES \
{ "little-endian-data", MASK_LITTLE_ENDIAN, N_("Use little-endian byte order for data")},
/* Definitions of target machine for GNU compiler, for SPARClet.
Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
Contributed by Doug Evans (dje@cygnus.com).
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 TARGET_DEFAULT
#define TARGET_DEFAULT MASK_APP_REGS
#define CPP_PREDEFINES "-Dsparc -Acpu=sparc -Amachine=sparc"
#undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES \
{"big-endian", -MASK_LITTLE_ENDIAN, N_("Generate code for big endian") }, \
{"little-endian", MASK_LITTLE_ENDIAN, N_("Generate code for little endian") },
#undef ASM_SPEC
#define ASM_SPEC "%{mlittle-endian:-EL} %(asm_cpu)"
/* Require the user to supply crt0.o. */
#undef STARTFILE_SPEC
#define STARTFILE_SPEC ""
#undef LINK_SPEC
#define LINK_SPEC "%{mlittle-endian:-EL}"
/* sparclet chips are bi-endian. */
#undef BYTES_BIG_ENDIAN
#define BYTES_BIG_ENDIAN (! TARGET_LITTLE_ENDIAN)
#undef WORDS_BIG_ENDIAN
#define WORDS_BIG_ENDIAN (! TARGET_LITTLE_ENDIAN)
/* Definitions of target machine for GNU compiler, for SunOS 4.x with gas
Copyright (C) 1997, 2000 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. */
/* defaults.h will define DWARF2_UNWIND_INFO for us. */
#undef DWARF2_UNWIND_INFO
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dsparc -Dsun -Dunix -Asystem=unix -Asystem=bsd"
/* Override the name of the mcount profiling function. */
#undef MCOUNT_FUNCTION
#define MCOUNT_FUNCTION "*.mcount"
/* LINK_SPEC is needed only for SunOS 4. */
#undef LINK_SPEC
/* Definitions of target machine for GNU compiler, for SunOS 4.x
Copyright (C) 1994, 1999 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 SUNOS4_SHARED_LIBRARIES
#define SUNOS4_SHARED_LIBRARIES 1
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dsparc -Dsun -Dunix -Asystem=unix -Asystem=bsd"
#define LIB_SPEC "%{!shared:%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} %{g:-lg}}"
/* Provide required defaults for linker -e and -d switches. */
#define LINK_SPEC \
"%{!shared:%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp} %{static:-Bstatic} \
%{assert*} %{shared:%{!mimpure-text:-assert pure-text}}"
/* Use N_BINCL stabs. */
#define DBX_USE_BINCL
/* The Sun as doesn't like unaligned data. */
#define DWARF2_UNWIND_INFO 0
/* SunOS has on_exit instead of atexit. */
/* The man page says it returns int. */
#ifdef IN_LIBGCC2
extern int on_exit PARAMS ((void *, void *));
#endif
#define ON_EXIT(FUNC) on_exit ((FUNC), 0)
#define NEED_ATEXIT
LIB1ASMSRC = sparc/lb1spc.asm
LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3
# We want fine grained libraries, so use the new code to build the
# floating point emulation libraries.
FPBIT = fp-bit.c
DPBIT = dp-bit.c
dp-bit.c: $(srcdir)/config/fp-bit.c
cat $(srcdir)/config/fp-bit.c > dp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
# MULTILIB_OPTIONS should have msparclite too, but we'd have to make
# gas build...
MULTILIB_OPTIONS =
MULTILIB_DIRNAMES =
MULTILIB_MATCHES =
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# Assemble startup files.
crti.o: $(srcdir)/config/sparc/sol2-ci.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) -c -o crti.o -x assembler $(srcdir)/config/sparc/sol2-ci.asm
crtn.o: $(srcdir)/config/sparc/sol2-cn.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) -c -o crtn.o -x assembler $(srcdir)/config/sparc/sol2-cn.asm
# For a native HALOS compile, we need to set -e1 for the assembler
AS=as -e1
# configuration file for a bare sparc cpu
LIB1ASMSRC = sparc/lb1spc.asm
LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3
# We want fine grained libraries, so use the new code to build the
# floating point emulation libraries.
FPBIT = fp-bit.c
DPBIT = dp-bit.c
dp-bit.c: $(srcdir)/config/fp-bit.c
cat $(srcdir)/config/fp-bit.c > dp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
# MULTILIB_OPTIONS should have msparclite too, but we'd have to make
# gas build...
MULTILIB_OPTIONS = msoft-float mcpu=v8
MULTILIB_DIRNAMES = soft v8
MULTILIB_MATCHES = msoft-float=mno-fpu mcpu?v8=mv8
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# configuration file for a bare sparclet cpu, aout format files
LIB1ASMSRC = sparc/lb1spc.asm
LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3
# We want fine grained libraries, so use the new code to build the
# floating point emulation libraries.
FPBIT = fp-bit.c
DPBIT = dp-bit.c
dp-bit.c: $(srcdir)/config/fp-bit.c
cat $(srcdir)/config/fp-bit.c > dp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
MULTILIB_OPTIONS = mlittle-endian mflat
MULTILIB_DIRNAMES = little flat
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# SunOS 4.1.*
MULTILIB_OPTIONS = fpic/fPIC mcpu=v8
MULTILIB_DIRNAMES = pic ucpic v8
MULTILIB_MATCHES = mcpu?v8=mv8
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# The native linker doesn't handle linking -fpic code with -fPIC code. Ugh.
# We cope by building both variants of libgcc.
#TARGET_LIBGCC2_CFLAGS = -fPIC
/* Definitions for rtems targeting a v850 using elf
Copyright (C) 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
Contributed by Joel Sherrill (joel@OARcorp.com).
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Specify predefined symbols in preprocessor. */
#define TARGET_OS_CPP_BUILTINS() do { \
builtin_define( "__rtems__" ); \
builtin_assert( "system=rtems" ); \
} while (0)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment