[RTEMS Project] #1740: Change PowerPC multi-libs for e200 and e500 cores
RTEMS trac
trac at rtems.org
Sat Nov 22 12:19:50 UTC 2014
#1740: Change PowerPC multi-libs for e200 and e500 cores
-----------------------------+-----------------------------
Reporter: sebastian.huber | Owner: ralf.corsepius
Type: defect | Status: closed
Priority: normal | Milestone: 4.11
Component: GCC | Version: 4.11
Severity: normal | Resolution: fixed
Keywords: |
-----------------------------+-----------------------------
Changes (by gedare):
* version: unspecified => 4.11
* milestone: => 4.11
Old description:
> 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.
New description:
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.
--
--
Ticket URL: <http://devel.rtems.org/ticket/1740#comment:14>
RTEMS Project <http://www.rtems.org/>
RTEMS Project
More information about the bugs
mailing list