Differences between revisions 26 and 27
Revision 26 as of 2011-06-27 10:08:44
Size: 6559
Editor: NeilWilliams
Comment: add disambiguation
Revision 27 as of 2011-06-27 10:10:11
Size: 6537
Editor: NeilWilliams
Comment: make an easier id link
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
== SPE = Signal Processing Extention (Freescale/IBM) == == Signal Processing Extention ==

Signal Processing Extention

The 'powerpcspe' architecture is aimed at chips provided FreeScale and IBM. SPE in this context means "Signal Processing Extension" (for ?FreeScale parts) and not "Synergistic Processing Element" (for Cell / PS3 parts), although both are PowerPC. powerpcspe is not compatible with PS3 which can use the standard powerpc packages from Debian. See also http://lists.debian.org/debian-devel/2011/06/msg00592.html

Current status

There is no known gcc bug atm.

Current 'powerpcspe' bug list

PowerpcSPE specific type-handling

Repositories and Build Status

Hosting for the unofficial PowerPCSPE port is graciously provided by the wonderful people at debian-ports.org. In particular we'd like to thank Aurelien Jarno for his help getting everything set up.

Latest Statistics

Packages which need fixes to build natively (List is incomplete)

Package

Assigned-to

Status

Debian Bug

Comments

eglibc

Kyle Moffett

Merged

#579778

gcc-4.3

TODO

gcc-4.4

Kyle Moffett

Merged/Buggy

#579780

gcc-4.5

N/A

Merged/Buggy

#579780

libffi

Kyle Moffett

Patched

Upstream soft-float ABI support is buggy

openssl

Kyle Moffett

Submitted

#579805

strace

Sebastian

Submitted

#579842

xorg

Sebastian

Submitted

#583288

Packages for which fixes have been merged

Package

Version

VCS Commit

Comment

eglibc

2.10.2-9

FIXME

Upstream still needs various fixes

gcc-4.4

4.4.4-2

FIXME

Upstream still needs various fixes

gcc-4.5

4.5.0-3

FIXME

Upstream still needs various fixes

Architecture summary

The 'powerpcspe' architecture is a binary-incompatible variant of the PowerPC/POWER designed and supported by FreeScale and IBM. It is also known under the trade names "e500"/"MPC8500" and "e200"/"MPC5xx".

Additional information can be found at:

Instruction set

In particular, the 'powerpcspe' architecture lacks the classic FPU with dedicated FPRs found on most other PowerPC systems. It is replaced with a set of "SPE" instructions which perform floating-point operations on the integer registers.

In an unfortunate choice of architecture design, the instructions used for the "SPE" operations overlap with those for the Altivec unit on most other modern PowerPC cores.

Chipset details

The "e500v2"-series chips have 64-bit GPRs, where the high 32-bits are accessible only via the special "SPE" instructions, allowing them to make efficient use of the "double" datatype.

The relatively rare "e500v1"-series chips have only 32-bit GPRs, and require software traps and emulation to support native "double".

The "e200z3" and "e200z6" chips have no support for floating point at all, but with software traps and emulation are binary-compatible with the "e500"-series chips.

GCC/EGLIBC considerations

The Debian port to this architecture specifically chooses to optimize for the higher-end chips (e500v2), as most of the others are targeted at automotive applications or no longer in production.

GCC 4.4.4+ currently suffer from PR44169, causing most code using Thread Local Storage to be miscompiled and crash when built with -O1. The problem does not exist in GCC 4.4.3 or older. UPDATE: This has been fixed in 4_4-branch, 4_5-branch, and trunk

Some versions of GCC also seems to suffer from PR44364 in which the upper half of the 64-bit GPRs (used by floating point and vector code) does not always get saved on the stack before being overwritten. This bug has been confirmed and a patch is available. The patch seems to fix all known issues to date.

Full support for the e500v2 requires the following options to GCC's "configure":

  •  --with-cpu=8548 

  •  --enable-e500_double 

  •  --with-long-double-128 

Please note that the  --with-long-double-128  is desired to match the behavior of long double on other PowerPC-based platforms. (Otherwise long double is exactly the same as double).

Installing the port

Get the debootstraped image. Currently debootstrapping is tricky because not all packages are in unstable. Once you have the image:

  • unpack the image as the root user with tar xjpf powerpcspe-debootstrap-root.tar.bz2 on your destination disk.

    • if it fails please verify the checksum of image using sha1sum.

    • some versions of busybox's tar may choke on this image. Please consider using gnu tar in such a case.
  • if you need a console on ttyS0:
    • edit etc/inittab and add a line like T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100

    • make sure /dev/ttyS0 exist. Either install udev or use the following command mknod ttyS0 c 4 64

  • edit etc/apt/sources.list and enter a mirror from here which is close to you.

  • the password for root is root

This is a minimal environment in which you can boot into.

Final notes

At this time the 'powerpcspe' architecture port is still very much an unofficial port. While we hope that will change in the future, it is entirely possible that the embedded niche of the processor will make such an official Debian port problematic.