#1740 closed defect (fixed)

Change PowerPC multi-libs for e200 and e500 cores

Reported by: Sebastian Huber Owned by: Ralf Corsepius
Priority: normal Milestone: 4.11
Component: tool/gcc Version: 4.11
Severity: normal Keywords:
Cc: joel.sherrill@…, thomas.doerfler@…, chrisj@…, dufault@… Blocked By:
Blocking:

Description (last modified by Gedare Bloom)

Some e200, the e500, and the e500v2 cores have a SPE and embedded floating point unit. They use the general purpose registers for floating point operations. Three multi-lib variants are useful here:

  1. Software floating point
  2. 32-bit hardware floating point (e200 and e500)
  3. 64-bit hardware floating point (e500v2)

We should not support SPE multi-lib variants, because this may effect the interrupt context save and restore overhead. There is also an open GCC bug related to the SPE: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47751

The patch is based on 'contrib/crossrpms/patches/gcc-core-4.5.2-rtems4.11-20101216.diff'.

One question to a part of it in t-rtems:

@@ -47,6 +47,10 @@ MULTILIB_MATCHES += mcpu?7400=mcpu?7450

# Map 750 to .
MULTILIB_MATCHES += mcpu?750=


+# Map e500, 8548 to 8540
+MULTILIB_MATCHES += mcpu?8540=mcpu?e500
+MULTILIB_MATCHES += mcpu?8540=mcpu?8548
+

# Soft-float only, default implies msoft-float
# NOTE: Must match with MULTILIB_MATCHES_FLOAT and MULTILIB_MATCHES
MULTILIB_SOFTFLOAT_ONLY = \

Why do we need this? For example a -mcpu=e500 yields a 'cc1: error: bad value (e500) for -mcpu= switch'.

Also in rtems.h:

+%{mcpu=8540: %{!Dppc*: %{!Dmpc*: -Dppc8540} } }"

This will not trigger in case of -mcpu=8548.

Attachments (6)

powerpc-multi-lib.patch (2.3 KB) - added by Sebastian Huber on 02/16/11 at 08:26:55.
Patch against GCC 4.5.2.
powerpc-multi-lib_v1.patch (2.0 KB) - added by Sebastian Huber on 02/16/11 at 13:57:48.
Patch against GCC 4.5.2.
powerpc-multi-lib_v2.patch (3.1 KB) - added by Sebastian Huber on 02/22/11 at 14:48:18.
Patch against GCC 4.5.2.
powerpc-multi-lib_v3.patch (3.1 KB) - added by Sebastian Huber on 02/28/11 at 07:09:19.
Patch against GCC 4.5.2.
powerpc.patch (3.2 KB) - added by Sebastian Huber on 03/22/11 at 15:07:40.
Patch against GCC 4.6.0-RC-20110321.
powerpc_spe.patch (1.1 KB) - added by dufault on 06/18/11 at 13:28:51.
Patch against GCC 4.6.0

Download all attachments as: .zip

Change History (21)

Changed on 02/16/11 at 08:26:55 by Sebastian Huber

Attachment: powerpc-multi-lib.patch added

Patch against GCC 4.5.2.

comment:1 Changed on 02/16/11 at 10:50:02 by dufault

Cc: dufault added

Changed on 02/16/11 at 13:57:48 by Sebastian Huber

Attachment: powerpc-multi-lib_v1.patch added

Patch against GCC 4.5.2.

comment:2 Changed on 02/16/11 at 13:57:48 by Sebastian Huber

attachments.isobsolete: 01

comment:3 Changed on 02/21/11 at 16:22:14 by Ralf Corsepius

Resolution: fixed
Status: newclosed

comment:4 Changed on 02/22/11 at 09:11:55 by Sebastian Huber

Resolution: fixed
Status: closedreopened

Changed on 02/22/11 at 14:48:18 by Sebastian Huber

Attachment: powerpc-multi-lib_v2.patch added

Patch against GCC 4.5.2.

comment:5 Changed on 02/22/11 at 14:48:18 by Sebastian Huber

attachments.isobsolete: 01

comment:6 Changed on 02/25/11 at 12:25:49 by Joel Sherrill

Cc: Joel Sherrill added

Changed on 02/28/11 at 07:09:19 by Sebastian Huber

Attachment: powerpc-multi-lib_v3.patch added

Patch against GCC 4.5.2.

comment:7 Changed on 02/28/11 at 07:09:19 by Sebastian Huber

attachments.isobsolete: 01

comment:8 Changed on 03/01/11 at 20:10:55 by Chris Johns

Cc: Chris Johns added

Changed on 03/22/11 at 15:07:40 by Sebastian Huber

Attachment: powerpc.patch added

Patch against GCC 4.6.0-RC-20110321.

comment:9 Changed on 03/22/11 at 15:07:40 by Sebastian Huber

attachments.isobsolete: 01

comment:10 Changed on 05/07/11 at 04:11:21 by thomas.doerfler

Cc: thomas.doerfler added

comment:11 Changed on 05/19/11 at 05:11:22 by Sebastian Huber

blocked: 1799

comment:12 Changed on 05/19/11 at 05:17:52 by Sebastian Huber

blocked: 1800

Changed on 06/18/11 at 13:28:51 by dufault

Attachment: powerpc_spe.patch added

Patch against GCC 4.6.0

comment:13 Changed on 07/15/11 at 09:53:59 by Ralf Corsepius

Resolution: fixed
Status: reopenedclosed

Replying to comment:32:

Replying to comment:31:

Created attachment 1205 [details]
Patch against GCC 4.6.0

I think all the patches in 1141 are applied except this. Can someone verify
and obsolete the earlier one?

Ralf, would you mind adding the patch posted by Peter Dufault to the current
GCC patch set.

Patch applied - Builds are in progress and will land inside of the repos once the builds have finished (Due to ongoing issues with the build farm machines, this may take a couple of days).

Finally, next time, please include a changelog entry into patch submissions.

comment:14 Changed on 11/22/14 at 12:19:50 by Gedare Bloom

Description: modified (diff)
Milestone: 4.11
Version: unspecified4.11

comment:15 Changed on 10/10/17 at 05:58:26 by Sebastian Huber

Component: GCCtool/gcc
Note: See TracTickets for help on using tickets.