File: /usr/src/linux/arch/arm/nwfpe/fpa11.inl

1     /*
2         NetWinder Floating Point Emulator
3         (c) Rebel.COM, 1998,1999
4     
5         Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
6     
7         This program is free software; you can redistribute it and/or modify
8         it under the terms of the GNU General Public License as published by
9         the Free Software Foundation; either version 2 of the License, or
10         (at your option) any later version.
11     
12         This program is distributed in the hope that it will be useful,
13         but WITHOUT ANY WARRANTY; without even the implied warranty of
14         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15         GNU General Public License for more details.
16     
17         You should have received a copy of the GNU General Public License
18         along with this program; if not, write to the Free Software
19         Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20     */
21     
22     #include "fpa11.h"
23     
24     /* Read and write floating point status register */
25     extern __inline__ unsigned int readFPSR(void)
26     {
27       FPA11 *fpa11 = GET_FPA11();
28       return(fpa11->fpsr);
29     }
30     
31     extern __inline__ void writeFPSR(FPSR reg)
32     {
33       FPA11 *fpa11 = GET_FPA11();
34       /* the sysid byte in the status register is readonly */
35       fpa11->fpsr = (fpa11->fpsr & MASK_SYSID) | (reg & ~MASK_SYSID);
36     }
37     
38     /* Read and write floating point control register */
39     extern __inline__ FPCR readFPCR(void)
40     {
41       FPA11 *fpa11 = GET_FPA11();
42       /* clear SB, AB and DA bits before returning FPCR */
43       return(fpa11->fpcr & ~MASK_RFC);
44     }
45     
46     extern __inline__ void writeFPCR(FPCR reg)
47     {
48       FPA11 *fpa11 = GET_FPA11();
49       fpa11->fpcr &= ~MASK_WFC;		/* clear SB, AB and DA bits */
50       fpa11->fpcr |= (reg & MASK_WFC);	/* write SB, AB and DA bits */
51     }
52