freebsd-dev/contrib/gcc/config
Justin Hibbits dc9b124d66 Create a new MACHINE_ARCH for Freescale PowerPC e500v2
Summary:
The Freescale e500v2 PowerPC core does not use a standard FPU.
Instead, it uses a Signal Processing Engine (SPE)--a DSP-style vector processor
unit, which doubles as a FPU.  The PowerPC SPE ABI is incompatible with the
stock powerpc ABI, so a new MACHINE_ARCH was created to deal with this.
Additionaly, the SPE opcodes overlap with Altivec, so these are mutually
exclusive.  Taking advantage of this fact, a new file, powerpc/booke/spe.c, was
created with the same function set as in powerpc/powerpc/altivec.c, so it
becomes effectively a drop-in replacement.  setjmp/longjmp were modified to save
the upper 32-bits of the now-64-bit GPRs (upper 32-bits are only accessible by
the SPE).

Note: This does _not_ support the SPE in the e500v1, as the e500v1 SPE does not
support double-precision floating point.

Also, without a new MACHINE_ARCH it would be impossible to provide binary
packages which utilize the SPE.

Additionally, no work has been done to support ports, work is needed for this.
This also means no newer gcc can yet be used.  However, gcc's powerpc support
has been refactored which would make adding a powerpcspe-freebsd target very
easy.

Test Plan:
This was lightly tested on a RouterBoard RB800 and an AmigaOne A1222
(P1022-based) board, compiled against the new ABI.  Base system utilities
(/bin/sh, /bin/ls, etc) still function appropriately, the system is able to boot
multiuser.

Reviewed By:	bdrewery, imp
Relnotes:	yes
Differential Revision:	https://reviews.freebsd.org/D5683
2016-10-22 01:57:15 +00:00
..
aarch64 Also define DWARF_FRAME_REGISTERS. This is used to size arrays, without 2015-03-26 18:25:53 +00:00
arm rename ARM's libunwind.S to to avoid conflict with llvm libunwind 2016-07-27 16:34:19 +00:00
i386 MFV r302423: 2016-08-30 21:51:53 +00:00
ia64 Pass --enable-new-dtags to the linker invocation by default. If 2012-07-15 10:54:10 +00:00
mips Pass --enable-new-dtags to the linker invocation by default. If 2012-07-15 10:54:10 +00:00
riscv64 Add a minimal gcc config for RISC-V. 2016-01-23 15:33:11 +00:00
rs6000 Create a new MACHINE_ARCH for Freescale PowerPC e500v2 2016-10-22 01:57:15 +00:00
s390 Upgrade of base gcc and libstdc++ to the last GPLv2-licensed revision 2011-03-29 20:53:51 +00:00
soft-fp Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
sparc Pass --enable-new-dtags to the linker invocation by default. If 2012-07-15 10:54:10 +00:00
darwin9.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
darwin-64.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
darwin-c.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
darwin-crt2.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
darwin-crt3.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
darwin-protos.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
darwin-sections.def Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
darwin.c gcc: Add ability to generate DWARF pubtypes section if 2013-12-24 20:42:48 +00:00
darwin.h libcpp: misc fixes from Apple's GCC. 2014-01-05 00:32:38 +00:00
darwin.opt Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
dbx.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
dbxcoff.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
dbxelf.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
dfp-bit.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
dfp-bit.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
divmod.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
elfos.h Apply backported fix for gcc PR 20218. This makes __attribute__ 2010-11-25 20:29:14 +00:00
fixdfdi.c Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain. 2010-06-02 11:06:03 +00:00
fixsfdi.c Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain. 2010-06-02 11:06:03 +00:00
fixunsdfsi.c Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain. 2010-06-02 11:06:03 +00:00
fixunssfsi.c Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain. 2010-06-02 11:06:03 +00:00
floatdidf.c Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain. 2010-06-02 11:06:03 +00:00
floatdisf.c Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain. 2010-06-02 11:06:03 +00:00
floatundidf.c Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain. 2010-06-02 11:06:03 +00:00
floatundisf.c Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain. 2010-06-02 11:06:03 +00:00
floatunsidf.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
floatunsisf.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
floatunsitf.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
floatunsixf.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
fp-bit.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
fp-bit.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
freebsd-nthr.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
freebsd-spec.h Properly support -fPIE by linking PIE binaries with specially-built 2009-12-02 16:34:20 +00:00
freebsd.h Silence a warning about redefinition of TARGET_ELF on powerpc. 2012-01-06 18:37:49 +00:00
gnu.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
gofast.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
host-darwin.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
host-darwin.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
host-hpux.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
host-linux.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
host-solaris.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
interix3.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
interix.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
kaos.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
kfreebsd-gnu.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
knetbsd-gnu.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
libgcc-glibc.ver Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
libgloss.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
linux.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
linux.opt Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
lynx.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
lynx.opt Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
memcmp.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
memcpy.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
memmove.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
memset.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
netbsd-aout.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
netbsd-elf.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
netbsd.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
openbsd-oldgas.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
openbsd.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
ptx4.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
README Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
rtems.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
sol2-6.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
sol2-10.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
sol2-c.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
sol2-protos.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
sol2.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
sol2.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
svr3.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
svr4.h gcc: another round of merges from the gcc pre-43 branch. 2013-11-21 16:38:57 +00:00
t-darwin Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-dfprules Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-freebsd Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-freebsd-thread Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-gnu Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-libc-ok Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-libgcc-pic Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-libunwind Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-libunwind-elf Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-linux Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-lynx Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-netbsd Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-openbsd Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-openbsd-thread Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-rtems Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-slibgcc-darwin Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-slibgcc-elf-ver Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-slibgcc-nolc-override Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-slibgcc-sld Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-sol2 Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-svr4 Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
t-vxworks Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
tm-dwarf2.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
udivmod.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
udivmodsi4.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
usegas.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
vx-common.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
vxlib.c Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
vxworks.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
vxworks.opt Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
vxworksae.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
windiss.h Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
x-darwin Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
x-hpux Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
x-interix Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
x-linux Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00
x-solaris Reorganize the gcc vendor import work area. This flattens out a bunch 2008-06-01 00:03:21 +00:00

This directory contains machine-specific files for the GNU C compiler.
It has a subdirectory for each basic CPU type.
The only files in this directory itself
are some .h files that pertain to particular operating systems
and are used for more than one CPU type.