freebsd-nq/lib/libc
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 Attach the cortex strings library to the build. Only a subset of functions 2016-09-19 15:08:03 +00:00
amd64 Reduce duplicate NOASM and PSEUDO definitions 2016-09-08 22:38:20 +00:00
arm Reduce duplicate NOASM and PSEUDO definitions 2016-09-08 22:38:20 +00:00
capability
compat-43 Use ANSI C prototypes. Eliminates -Wold-style-definition warnings. 2015-09-20 20:53:24 +00:00
db hash(3): protect in-memory page when using cross-endianness. 2016-09-26 16:06:50 +00:00
gdtoa META MODE: Don't create .meta files when symlinking sources into the obj directory. 2015-11-25 19:44:43 +00:00
gen Add comment on use of abort() in libc 2016-10-12 13:56:14 +00:00
gmon Replace the last non-optional use of sbrk() in the tree with mmap(). 2016-01-21 18:17:19 +00:00
i386 Reduce duplicate NOASM and PSEUDO definitions 2016-09-08 22:38:20 +00:00
iconv citrus: Remove redundant code in _citrus_esdb_get_list(). 2016-06-02 17:28:39 +00:00
include Rewrite ptrace(2) wrappers in C. 2016-08-29 18:47:51 +00:00
inet Update ^/vendor/NetBSD/tests/dist to a more recent snapshot 2016-08-12 01:05:07 +00:00
isc libc: do not include <sys/types.h> where <sys/param.h> was already included 2016-04-18 21:05:15 +00:00
locale Change the return type of freelocale(3) to void. 2016-07-29 17:18:47 +00:00
md
mips Fix strchr, strrchr implementation: convert c to char 2016-10-13 15:23:53 +00:00
nameser libc: spelling fixes. 2016-04-30 01:24:24 +00:00
net 'addrlen' does not matter when we need to find the first non-zero bit in 2016-08-31 18:49:50 +00:00
nls Use current locale (f.e. set by thread). It was global locale always 2016-08-24 16:44:27 +00:00
posix1e libc: spelling fixes. 2016-04-30 01:24:24 +00:00
powerpc Reduce duplicate NOASM and PSEUDO definitions 2016-09-08 22:38:20 +00:00
powerpc64 Reduce duplicate NOASM and PSEUDO definitions 2016-09-08 22:38:20 +00:00
powerpcspe Create a new MACHINE_ARCH for Freescale PowerPC e500v2 2016-10-22 01:57:15 +00:00
quad
regex 1) Eliminate possibility to call __*collate_range_cmp() with inclomplete 2016-07-14 09:07:25 +00:00
resolv Don't leak addrinfo if ai->ai_addrlen <= minsiz test fails. 2016-06-08 09:40:06 +00:00
riscv Reduce duplicate NOASM and PSEUDO definitions 2016-09-08 22:38:20 +00:00
rpc Update ^/vendor/NetBSD/tests/dist to a more recent snapshot 2016-08-12 01:05:07 +00:00
secure libc: do not include <sys/types.h> where <sys/param.h> was already included 2016-04-18 21:05:15 +00:00
softfloat libc: replace 0 with NULL for pointers. 2016-04-10 19:33:58 +00:00
sparc64 Reduce duplicate NOASM and PSEUDO definitions 2016-09-08 22:38:20 +00:00
stdio Fix error handling. 2016-09-05 06:46:04 +00:00
stdlib Improve phrasing of the STANDARDS section. 2016-10-15 08:09:55 +00:00
stdtime 1) For already non-standard %z extension implement GNU compatible formats: 2016-09-21 15:47:40 +00:00
string Add timingsafe_bcmp and timingsafe_memcmp. 2016-08-14 23:38:50 +00:00
sys Use 'cmd' rather than 'command' to match the function prototype. 2016-10-17 22:36:37 +00:00
tests Only build lib/libc/tests/iconv if MK_ICONV != no 2016-10-21 04:54:43 +00:00
uuid libc: replace 0 with NULL for pointers. 2016-04-10 19:33:58 +00:00
x86/sys Implement userspace gettimeofday(2) with HPET timecounter. 2016-08-17 09:52:09 +00:00
xdr libc/xdr: unsign some loop indexes. 2016-05-06 16:03:40 +00:00
yp Use on crypto.x and rpc.x from the source tree. 2016-06-28 19:53:16 +00:00
libc_nossp.ldscript Add different libc ldscript: the one without libssp -- 2016-10-12 13:19:21 +00:00
libc.ldscript
Makefile Add different libc ldscript: the one without libssp -- 2016-10-12 13:19:21 +00:00
Makefile.depend DIRDEPS_BUILD: Regenerate without local dependencies. 2016-02-24 17:20:11 +00:00
Versions.def Create namespace for the symbols added during 12-CURRENT cycle. 2016-08-06 13:28:58 +00:00