fpa11.inl
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

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