freebsd-skq/contrib/gcc/config
jhibbits 40c4c3de40 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
sparc Pass --enable-new-dtags to the linker invocation by default. If 2012-07-15 10:54:10 +00:00
darwin9.h
darwin-64.c
darwin-c.c
darwin-crt2.c
darwin-crt3.c
darwin-protos.h
darwin-sections.def
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
dbx.h
dbxcoff.h
dbxelf.h
dfp-bit.c
dfp-bit.h
divmod.c
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
floatunsisf.c
floatunsitf.c
floatunsixf.c
fp-bit.c
fp-bit.h
freebsd-nthr.h
freebsd-spec.h
freebsd.h Silence a warning about redefinition of TARGET_ELF on powerpc. 2012-01-06 18:37:49 +00:00
gnu.h
gofast.h
host-darwin.c
host-darwin.h
host-hpux.c
host-linux.c
host-solaris.c
interix3.h
interix.h
kaos.h
kfreebsd-gnu.h
knetbsd-gnu.h
libgcc-glibc.ver
libgloss.h
linux.h
linux.opt
lynx.h
lynx.opt
memcmp.c
memcpy.c
memmove.c
memset.c
netbsd-aout.h
netbsd-elf.h
netbsd.h
openbsd-oldgas.h
openbsd.h
ptx4.h
README
rtems.h
sol2-6.h
sol2-10.h
sol2-c.c
sol2-protos.h
sol2.c
sol2.h
svr3.h
svr4.h gcc: another round of merges from the gcc pre-43 branch. 2013-11-21 16:38:57 +00:00
t-darwin
t-dfprules
t-freebsd
t-freebsd-thread
t-gnu
t-libc-ok
t-libgcc-pic
t-libunwind
t-libunwind-elf
t-linux
t-lynx
t-netbsd
t-openbsd
t-openbsd-thread
t-rtems
t-slibgcc-darwin
t-slibgcc-elf-ver
t-slibgcc-nolc-override
t-slibgcc-sld
t-sol2
t-svr4
t-vxworks
tm-dwarf2.h
udivmod.c
udivmodsi4.c
usegas.h
vx-common.h
vxlib.c
vxworks.h
vxworks.opt
vxworksae.h
windiss.h
x-darwin
x-hpux
x-interix
x-linux
x-solaris

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.