Hi all,

 

I have been working with FPU lately and I have a few questions regarding this topic:

 

Looks like there are 4 use cases of FPU usage:

FPU is used in

Use case number

SPE

NSPE

1

-

-

2

-

+

3

+

-

4

+

+

 

From https://tf-m-user-guide.trustedfirmware.org/integration_guide/tfm_fpu_support.html my understanding is following:

  1. If SPE and NSPE both does not use SPU (use case 1) then they both must be compiler with fp=soft?
  2. consistent FP ABI types between SPE and NSPE must be used. So even if only one of SPE or NSPE (use cases 2 and 3) does not use FPU they both still must be compiler with fp=hard
    Also if both SPE and NSPE use PFU then they both must be compiler with fp=hard
  3. Even if FPU is not used by NSPE, NSPE still MUST enable CP10 an CP11? – Is this correct? Is it possible to enable FPU for SPE but don’t enable CP10 and CP11 in NSPE?

 

So basically if either SPE or NSPE or both of them need to use FPU then both of them need to enable CP10 and CP11 and be compiled with fp=hard

 

Is my understanding correct? Inline comments are welcome.

 

 

Regards,

Bohdan Hunko

 

Cypress Semiconductor Ukraine

Engineer

CSUKR CSS ICW SW FW

Mobile: +38099 50 19 714
Bohdan.Hunko@infineon.com