1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #ifndef _FPU_CONTROL_H
- #define _FPU_CONTROL_H
- #define _FPU_RC_NEAREST 0x00
- #define _FPU_RC_DOWN 0x03
- #define _FPU_RC_UP 0x02
- #define _FPU_RC_ZERO 0x01
- #define _FPU_MASK_NI 0x04
- #define _FPU_MASK_ZM 0x10
- #define _FPU_MASK_OM 0x40
- #define _FPU_MASK_UM 0x20
- #define _FPU_MASK_XM 0x08
- #define _FPU_MASK_IM 0x80
- #define _FPU_RESERVED 0xffffff00
- #define _FPU_DEFAULT 0x00000000
- #define _FPU_IEEE 0x000000f0
- typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
- #define _FPU_GETCW(__cw) ( { \
- union { double d; fpu_control_t cw[2]; } \
- tmp __attribute__ ((__aligned__(8))); \
- __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \
- (__cw)=tmp.cw[1]; \
- tmp.cw[1]; } )
- #define _FPU_SETCW(__cw) { \
- union { double d; fpu_control_t cw[2]; } \
- tmp __attribute__ ((__aligned__(8))); \
- tmp.cw[0] = 0xFFF80000; \
- tmp.cw[1] = __cw; \
- __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \
- }
- #if 0
- extern fpu_control_t __fpu_control;
- #endif
- #endif
|