1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 <2005> 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 <2005> 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: compiler bug in gcc version 2.8.1 (Tornado1) for PPC corrupts floationg point constants? |
From: | Kay-Uwe Kasemir <[email protected]> |
To: | "'EPICS Tech Talk'" <[email protected]> |
Date: | Thu, 10 Feb 2005 09:11:04 -0500 |
Having learned the hard way, I'm now quite aware of the VX_FP_TASK option for vxWorks' taskCreate().
To be save inside ISR code, no matter how the compiler optimizes your non-floating point code: Are there vxWorks subroutines or asm(...)-type macros that allows me to save/restore the FP registers? If not, does anybody know the asm(..) lines that would work on a PPC CPU?
Thanks, -Kay
Jeff,
...we did discover during the investigation that a FP register's contents was being altered during the execution of the driver's interrupt service routine (ISR) and that, even though no FP operations were being performed in the ISR, the compiler optimization level that we were using caused the FP registers to be used to store temporary values....Jeff Hill wrote:enteringinterrupt service routines as, on vxWorks, the FP register contents are not saved / restored when
/ exiting interrupt context. The driver must do this manually if it finds a need to use FP in its ISR.