EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  <19981999  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  Index 1994  1995  1996  1997  <19981999  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 
<== Date ==> <== Thread ==>

Subject: RE: powerPC floating point underflow
From: [email protected] (Jeff Hill)
To: "'Kevin Tsubota'" <[email protected]>
Cc: "EPICS-tech-talk (E-mail)" <[email protected]>
Date: Wed, 14 Oct 1998 18:24:52 -0600
Kevin,

I typed "tt "CA client"" on my PC IOC and I saw that the VX_FP_TASK option has been
specified when these tasks are created. Please verify that this is also the case on your system.
As I recall, if there is a task that uses floating point, but VX_FP_TASK was not specified
when the task was created then it is possible for other tasks in the system to receive a floating
point exception because the floating point registers are not restored when there is a task
switch. This includes interrupt service routines (ISRs). If you use floating point in an ISR
then you must (in your ISR) save the floating point registers at the start of the ISR, and 
restore the original values at the end of the ISR routine. There are system routines in vxWorks 
that save/restore the floating point registers.

Jeff

On Wednesday, October 14, 1998 2:49 PM, Kevin Tsubota [SMTP:[email protected]] wrote:
> 
> Jeff,
> 
> Thank you for your help.  Here is 2 traces, the first I did not
> specify the task.  The second I specified the task.  I also did
> a lkAddr.  It always seems to be in aiRecordSizeOffset.
> 
> Again, thank you!
> 
> Kevin
> 
> **** no task specified on trace
> 
> Floating point underflow
> Floating point inexact
> Exception current instruction address: 0x01a9db3c
> Machine Status Register: 0x0010b130
> Condition Register: 0x42000040
> Fp Control and Status Register: 0xca008070
> Task: 0x1663e38 "CA client"
> filename="../taskwd.c" line number=175
> task 1663e38 CA client suspended
>  
> int0-.> tt
>  999d4 vxTaskEntry    +60 : camsgtask ()
> 1b2ff68 camsgtask      +38c: camessage ()
> 1b30420 camessage      +3d8: db_put_field ()
> 1b28300 db_put_field   +d4 : dbPutField ()
> 1b11018 dbPutField     +448: dbProcess ()
> 1b0fe38 dbProcess      +318: 1aa5724 ()
> 1aa585c longoutRecordSizeOffset+a20: 1aa5da4 ()
> 1aa5e40 longoutRecordSizeOffset+1004: 1ab2358 ()
> 1ab2394 waveformRecordSizeOffset+1d50: dbPutLinkValue ()
> 1b105dc dbPutLinkValue +dc : dbScanLink ()
> 1b0fa90 dbScanLink     +4c : dbProcess ()
> 1b0fe38 dbProcess      +318: 1ac4e9c ()
> 1ac50bc genSubRecordSizeOffset+29f4: dbPutLinkValue ()
> 1b105dc dbPutLinkValue +dc : dbScanLink ()
> 1b0fa90 dbScanLink     +4c : dbProcess ()
> 1b0fe38 dbProcess      +318: 1a9d3e8 ()
> 1a9d4bc aiRecordSizeOffset+b04: 1a9db14 ()
> value = 0 = 0x0

When You do a tt() it is probably best to use "tt 0x1663e38"
specifying the task id for the suspended task so that I know
that I am looking at a task trace from the task
that has died. You can obtain a list of suspended tasks with the "i"
command. Note that there is one task named "CA client"
for every CA client that is attached to the IOC.

> 
> int0-.> lkAddr 0x01a9db3c
> 0x01a9c9b8 aiRecordSizeOffset        text    
> 0x01a9dd4c aoRecordSizeOffset        text    
> 0x01a9f55c biRecordSizeOffset        text    
> 0x01aa0290 boRecordSizeOffset        text    
> 0x01aa1490 calcRecordSizeOffset      text    
> 0x01aa2734 dfanoutRecordSizeOffset   text    
> 0x01aa36f8 fanoutRecordSizeOffset    text    
> 0x01aa3ec8 longinRecordSizeOffset    text    
> 0x01aa4e3c longoutRecordSizeOffset   text    
> 0x01aa5ee0 mbbiRecordSizeOffset      text    
> 0x01aa72f4 mbbiDirectRecordSizeOffset text    
> 0x01aa806c mbboRecordSizeOffset      text    
> value = 0 = 0x0
> 
> 
> ***** task "CA client" specified on trace
> 
> Floating point underflow
> Floating point inexact
> Exception current instruction address: 0x01a9e0c4
> Machine Status Register: 0x0010b130
> Condition Register: 0x42000040
> Fp Control and Status Register: 0xca008070
> Task: 0x1640060 "CA client"
> filename="../taskwd.c" line number=175
> task 1640060 CA client suspended
>  
> int0-.> tt "CA client"
>  999d4 vxTaskEntry    +60 : camsgtask ()
> 1b2febc camsgtask      +2e0: recv ()
>  5caf0 recv           +4c : bsdRecv ()
>  6113c bsdRecv        +68 : soreceive ()
>  a4728 soreceive      +2fc: sbwait ()
>  a5d30 sbwait         +28 : ksleep ()
>  4eb18 ksleep         +68 : semTake ()
>  90bf4 semTake        +fc : semBTake ()
> value = 0 = 0x0
> 

We dont expect to receive a floating point exception while in 
semBTake() since this routine probably does not use floating point.

> int0-.> lkAddr 0x01a9e0c4
> 0x01a9cf40 aiRecordSizeOffset        text    
> 0x01a9e2d4 aoRecordSizeOffset        text    
> 0x01a9fae4 biRecordSizeOffset        text    
> 0x01aa0818 boRecordSizeOffset        text    
> 0x01aa1a18 calcRecordSizeOffset      text    
> 0x01aa2cbc dfanoutRecordSizeOffset   text    
> 0x01aa3c80 fanoutRecordSizeOffset    text    
> 0x01aa4450 longinRecordSizeOffset    text    
> 0x01aa53c4 longoutRecordSizeOffset   text    
> 0x01aa6468 mbbiRecordSizeOffset      text    
> 0x01aa787c mbbiDirectRecordSizeOffset text    
> 0x01aa85f4 mbboRecordSizeOffset      text    
> value = 0 = 0x0
> int0-.> 
> 

Navigate by Date:
Prev: Re: Flash programming on 162 Graham Waters
Next: Re: Flash programming on 162 Ralph Lange
Index: 1994  1995  1996  1997  <19981999  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 
Navigate by Thread:
Prev: powerPC floating point underflow Kevin Tsubota
Next: Flash programming on 162 Garrett D. Rinehart
Index: 1994  1995  1996  1997  <19981999  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 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·