Hi,

For enabling floating point the ARMv8-M architecture allows the flowing possibilities :

 

• Stacking the basic Floating-point context.
• Stacking the basic Floating-point context and the additional Floating-point context.
• Activation of Lazy Floating-point state preservation.

 

The easiest way would be to enable FP context stacking for every context switch but it would impact every context switch irrespective of whether FP unit is used in that context or not . I guess this is the approach taken by Andrej ? . The Lazy Floating point state preservation would be better for performance but it would have additional complexity in managing the contexts.

 

Just blue sky thinking here: There could be a middle ground wherein some partitions are allowed to use FP while others are not because they don’t really need to. The ones allowed to use FP will need to cater for the additional stack requirement to save FP context. The actual save of the context can be done either on context switch to the partition or lazily. This approach could give the benefit of both performance and memory savings but it requires some analysis and design to be done in TF-M.

 

Best Regards

Soby Mathew

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Ken Liu via TF-M
Sent: 01 June 2020 09:05
To: tf-m@lists.trustedfirmware.org
Cc: nd <nd@arm.com>
Subject: Re: [TF-M] DSP instructions and FPU use

 

Hi Andrej,

 

You mean the hardware floatpoint can be used in the Secure Partition?

 

That’s a good information, can you share us the compiler flags about float-point you are using? Thanks.

 

/Ken

 

From: Andrej Butok <andrey.butok@nxp.com>
Sent: Monday, June 1, 2020 2:46 PM
To: Ken Liu <Ken.Liu@arm.com>
Cc: tf-m@lists.trustedfirmware.org
Subject: RE: DSP instructions and FPU use

 

FYI: >>  Can you do some experiments on enabling hardware float point and see if it is working

In our SDK, the LPC55S HW Float point is enabled for all TFM projects (Kel, GCC/MCUx), and it works.

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Ken Liu via TF-M
Sent: Monday, June 1, 2020 8:41 AM
To: tf-m@lists.trustedfirmware.org
Cc: nd <nd@arm.com>
Subject: Re: [TF-M] DSP instructions and FPU use

 

Hi Cindy,

 

The reason is we need to estimate the potential security risks after enabling hardware floating-point, so it is set as software FPU as default.

 

Can you do some experiments on enabling hardware float point and see if it is working, and then let's see the patch? That would be helpful for our estimation.

 

During bootup, we cleared the CONTROL.FPCA, and if you access hardware float point in a partition thread should work because it would re-invoke the FPCA bit and make everything work as usual. But as I mentioned, we need to estimate it and give a proper solution and then enable your patch.

 

For DSP, a similar reason is there, we need to take an estimation. But in theory, you can enable the things you have on the hardware, just be caution that the shared resources between S/NS can be the risk (and the resource sharing caused – co-work problem, the context save/load).

 

Thanks.

 

/Ken

 

From: TF-M <tf-m-bounces@lists.trustedfirmware.org> On Behalf Of Cindy Chaumont via TF-M
Sent: Friday, May 29, 2020 6:39 PM
To: tf-m@lists.trustedfirmware.org
Subject: [TF-M] DSP instructions and FPU use

 

Hello,

 

I am using the GNUARM compiler and LPCXpresso55S69-EVK dev board and I would like to use DSP instructions and FPU (in secure image).

 

About FPU, it seems there is no way to use the hardware floating-point support instead of the software support (see "-msoft-float" flag in CommonConfig.cmake file).

Is there a reason for that? Maybe some performance reasons?

 

About DSP, in CompilerGNUARMxy.cmake files, architecture definition is preferred to CPU type and, in my case, "-march=armv8-m.main" flags is chosen (without +dsp option). The solution I found is to only define ARM_CPU_TYPE (and not ARM_CPU_ARCHITECTURE) to use "-mcpu=cortex-m33" flag instead of "-march=armv8-m.main". So I can use DSP instructions. However, I am not sure if this is the best solution. Maybe an option could be added to allow or not the use of DSP instructions?

 

Thank you in advance for the answer,

Best regards,

 

Cindy