root / target-arm / nwfpe / fpa11.inl @ 4118a970
History | View | Annotate | Download (1.6 kB)
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 |
static inline unsigned int readFPSR(void) |
26 |
{ |
27 |
FPA11 *fpa11 = GET_FPA11(); |
28 |
return(fpa11->fpsr); |
29 |
} |
30 |
|
31 |
static 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 |
static 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 |
static 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 |
} |