Hello,

I just noticed that the SPARC floating point unit (FPU) support is a bit odd:

1. the context switch saves and restores all 32 floating point registers (%f0 up to %f31) and the FSR

http://git.rtems.org/rtems/tree/cpukit/score/cpu/sparc/rtems/score/cpu.h#n551

2. the interrupt entry/exit doesn't save/restore the floating point registers.

Since we use the System V ABI, this makes no sense. Here all floating point registers are volatile.

The SPARC V8 trap entry sequence doesn't disable the FPU via the PSR_EF bit. So it seems that interrupt handler using the FPU can destroy the FPU context of the interrupted thread?

For a System V ABI conforming implementation it should be:

1. the interrupt entry/exit must save/restore the floating point registers to/from the stack of the interrupted thread

2. nothing more

What was the reason for the existing implementation?

--
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.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel

Reply via email to