[yocto] [PATCH 1/5] gcc: Add gcc configure for PowerPC e500v2/SPE embedded floating point ABI

Kumar Gala galak at kernel.crashing.org
Mon Jul 18 23:47:23 PDT 2011


On Jul 19, 2011, at 1:04 AM, Khem Raj wrote:

> On Mon, Jul 18, 2011 at 10:21 PM, Kumar Gala <galak at kernel.crashing.org> wrote:
>> The e500v2 core utilizes a unique floating point programming model / ABI.
>> We utilize TARGET_FPU = "spe" to distinguish this choice.  When building
>> the toolchain for this ABI we need configure gcc with --enable-e500_double.
>> 
>> Signed-off-by: Kumar Gala <galak at kernel.crashing.org>
>> ---
>>  meta/recipes-devtools/gcc/gcc-4.6.inc    |    2 +-
>>  meta/recipes-devtools/gcc/gcc-common.inc |    2 ++
>>  2 files changed, 3 insertions(+), 1 deletions(-)
>> 
>> diff --git a/meta/recipes-devtools/gcc/gcc-4.6.inc b/meta/recipes-devtools/gcc/gcc-4.6.inc
>> index 56064b5..b719155 100644
>> --- a/meta/recipes-devtools/gcc/gcc-4.6.inc
>> +++ b/meta/recipes-devtools/gcc/gcc-4.6.inc
>> @@ -1,6 +1,6 @@
>>  require gcc-common.inc
>> 
>> -PR = "r8"
>> +PR = "r9"
>> 
>>  # Third digit in PV should be incremented after a minor release
>>  # happens from this branch on gcc e.g. currently its 4.6.0
>> diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc
>> index 7bf036c..409ad01 100644
>> --- a/meta/recipes-devtools/gcc/gcc-common.inc
>> +++ b/meta/recipes-devtools/gcc/gcc-common.inc
>> @@ -12,6 +12,8 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
>>  def get_gcc_fpu_setting(bb, d):
>>     if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]:
>>         return "--with-float=soft"
>> +    if bb.data.getVar('TARGET_FPU', d, 1) in [ 'spe' ]:
>> +        return "--enable-e500_double"
>>     return ""
>> 
> 
> this will enable e500_double even for e500v1 which IIRC does not have
> DFP support
> have you tried building for e500v1 with this ?

I think you are correct.  Any suggestions on how to distinguish e500v1 vs e500v2?  Utilizing BASE_PACKAGE_ARCH has problems w/native builds since it seems to get set to x86_64 at some point.

I could do:

TARGET_FPU = "ppc-efs"  [Embedded scalar single-precision floating-point]
TARGET_FPU = "ppc-efd"  [Embedded scalar double-precision floating-point]

Than meta/recipes-devtools/gcc/gcc-common.inc:

 def get_gcc_fpu_setting(bb, d):
    if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]:
        return "--with-float=soft"
+    if bb.data.getVar('TARGET_FPU', d, 1) in [ 'ppc-efd' ]:
+        return "--enable-e500_double"
    return ""

And meta/conf/distro/include/tclibc-*libc.inc:

TARGET_OS_powerpc = "linux${@['','-gnuspe'][bb.data.getVar('TARGET_FPU',d,1) in ['ppc-efs', 'ppc-efd']]}"

thoughts?

- k


More information about the yocto mailing list