Crash under sparc/rtems-4.11 when compiling with FPU

Needell, Jerry Jerry.Needell at
Mon Feb 8 10:36:09 UTC 2016

sorry for the typo - I meant -mcpu v8 …
I have used this for bsps (RTEMS 4.9) with FPU without needing the -mhard-float specification
For non FPU bsps I have used -msoft-float
both with-mcpu v8

On Feb 8, 2016, at 5:14 AM, Needell, Jerry <Jerry.Needell at<mailto:Jerry.Needell at>> wrote:

I thought it was best to use -mv8 rather tahtn -mcypress for leon3 bsps?  Does this make any difference in your case?
On Feb 8, 2016, at 4:50 AM, Athanasios.Tsiodras at<mailto:Athanasios.Tsiodras at> wrote:

I verified Sebastian's suggestion - by modifying the leon3.cfg file...

    diff --git a/c/src/lib/libbsp/sparc/leon3/make/custom/leon3.cfg b/c/src/lib/libbsp/sparc/leon3/make/custom/leon3.cfg
    index 58f2f07..30fc3a4 100644
    --- a/c/src/lib/libbsp/sparc/leon3/make/custom/leon3.cfg
    +++ b/c/src/lib/libbsp/sparc/leon3/make/custom/leon3.cfg
    @@ -9,7 +9,8 @@ RTEMS_CPU_MODEL=leon3

     #  This contains the compiler options necessary to select the CPU model
     #  and (hopefully) optimize for it.
    -CPU_CFLAGS = -mcpu=cypress -msoft-float
    +CPU_CFLAGS = -mcpu=cypress -mhard-float

...the generated binary of hello.exe works fine - I went a step further and did a test calculation, too:

    diff --git a/testsuites/samples/hello/init.c b/testsuites/samples/hello/init.c
    index d8fe450..6ee33f6 100644
    --- a/testsuites/samples/hello/init.c
    +++ b/testsuites/samples/hello/init.c
    @@ -27,8 +27,13 @@ rtems_task Init(
       rtems_task_argument ignored
    +  int i = 0;
    +  float a=3.14159f, b=1.0f;
    -  printf( "Hello World\n" );
    +  for (i=0; i<10; i++)
    +      b*=a;
    +  printf( "Hello World, %f\n", b );
       exit( 0 );

...which worked fine:

    (gdb) tar extended-remote ... ( to grmon)
    (gdb) c

    Hello World, 1.000000

...and I made sure that FPU instructions are inside:

      for (i=0; i<10; i++)
      28:   82 80 7f ff     addcc  %g1, -1, %g1
      2c:   12 bf ff ff     bne  28 <Init+0x28>
      30:   91 a2 09 29     fmuls  %f8, %f9, %f8
      printf( "Hello World, %f\n", b );
      34:   91 a0 19 28     fstod  %f8, %f8

So, executive summary....  It seems that the default compilation settings of the Leon3 BSP forbid "real FPU" work.
If one needs to work in native (non-emulated) FPU mode, then the leon3.cfg must be patched as I showed above.

In the long run, as Sebastian indicated, a leon3fp (and a corresponding leon2fp, I imagine)
should ideally be added as new BSP targets - and the FPU page
( should probably
be updated to indicate this.

Thanks to everyone for their help,

European Space Agency (via HE Space)
Thanassis Tsiodras
Real-time Embedded Software Engineer
System, Software and Technology Department

Keplerlaan 1, PO Box 299
NL-2200 AG Noordwijk, The Netherlands
Athanasios.Tsiodras at<mailto:Athanasios.Tsiodras at> |<x-msg://11/>
T +31 71 565 5332

From:        "Sebastian Huber" <sebastian.huber at<mailto:sebastian.huber at>>
To:        "RTEMS List" <users at<mailto:users at>>
Cc:        software at<mailto:software at>
Date:        07/02/2016 07:40
Subject:        Re: Crash under sparc/rtems-4.11 when compiling with FPU
Sent by:        "users" <users-bounces at<mailto:users-bounces at>>

Hello Athanasios,

it was always a miracle to me how you are supposed to use the leon2/leon3 BSPs with a FPU. If you want to use the FPU, then the BSP must be built with the -mhard-float option, otherwise the FPU support is not enabled in the operating system support. In addition the application configuration must be compiled with exactly the same compiler flags as the BSP, otherwise it will generate a corrupt configuration.

I think we need leon2fp and leon3fp BSPs, which use -mhard-float.

Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at<>
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
users mailing list
users at<mailto:users at>

This message and any attachments are intended for the use of the addressee or addressees only.
The unauthorised disclosure, use, dissemination or copying (either in whole or in part) of its
content is not permitted.
If you received this message in error, please notify the sender and delete it from your system.
Emails can be altered and their integrity cannot be guaranteed by the sender.

Please consider the environment before printing this email.

users mailing list
users at<mailto:users at>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the users mailing list