Embedded Artistry Framework
Embedded Systems C++ Framework
Macros | Enumerations | Functions
bsd_ieeefp.h File Reference

Macros

#define fp_except_t   int
 
#define FP_X_INV   0x01 /* invalid operation */
 
#define FP_X_DNML   0x02 /* denormal */
 
#define FP_X_DZ   0x04 /* zero divide */
 
#define FP_X_OFL   0x08 /* overflow */
 
#define FP_X_UFL   0x10 /* underflow */
 
#define FP_X_IMP   0x20 /* (im)precision */
 
#define FP_X_STK   0x40 /* stack fault */
 
#define FP_MSKS_FLD   0x3f /* exception masks field */
 
#define FP_PRC_FLD   0x300 /* precision control field */
 
#define FP_RND_FLD   0xc00 /* rounding control field */
 
#define FP_STKY_FLD   0x3f /* sticky flags field */
 
#define FP_MSKS_OFF   0 /* exception masks offset */
 
#define FP_PRC_OFF   8 /* precision control offset */
 
#define FP_RND_OFF   10 /* rounding control offset */
 
#define FP_STKY_OFF   0 /* sticky flags offset */
 
#define __fldcw(addr)   __asm __volatile("fldcw %0" : : "m" (*(addr)))
 
#define __fldenv(addr)   __asm __volatile("fldenv %0" : : "m" (*(addr)))
 
#define __fnclex()   __asm __volatile("fnclex")
 
#define __fnstcw(addr)   __asm __volatile("fnstcw %0" : "=m" (*(addr)))
 
#define __fnstenv(addr)   __asm __volatile("fnstenv %0" : "=m" (*(addr)))
 
#define __fnstsw(addr)   __asm __volatile("fnstsw %0" : "=m" (*(addr)))
 

Enumerations

enum  fp_rnd_t {
  FP_RN =0, FP_RM, FP_RP, FP_RZ,
  FP_RN =0, FP_RM, FP_RP, FP_RZ
}
 
enum  fp_prec_t {
  FP_PS =0, FP_PRS, FP_PD, FP_PE,
  FP_PS =0, FP_PRS, FP_PD, FP_PE
}
 

Functions

static __inline void __fnldcw (unsigned short _cw, unsigned short _newcw)
 
static __inline fp_rnd_t fpgetround (void)
 
static __inline fp_rnd_t fpsetround (fp_rnd_t _m)
 
OLM_DLLEXPORT fp_prec_t fpgetprec (void)
 
OLM_DLLEXPORT fp_prec_t fpsetprec (fp_prec_t _m)
 
static __inline fp_except_t fpgetmask (void)
 
static __inline fp_except_t fpsetmask (fp_except_t _m)
 
static __inline fp_except_t fpgetsticky (void)
 
static __inline fp_except_t fpresetsticky (fp_except_t _m)
 

Macro Definition Documentation

◆ __fldcw

#define __fldcw (   addr)    __asm __volatile("fldcw %0" : : "m" (*(addr)))

◆ __fldenv

#define __fldenv (   addr)    __asm __volatile("fldenv %0" : : "m" (*(addr)))

◆ __fnclex

#define __fnclex ( )    __asm __volatile("fnclex")

◆ __fnstcw

#define __fnstcw (   addr)    __asm __volatile("fnstcw %0" : "=m" (*(addr)))

◆ __fnstenv

#define __fnstenv (   addr)    __asm __volatile("fnstenv %0" : "=m" (*(addr)))

◆ __fnstsw

#define __fnstsw (   addr)    __asm __volatile("fnstsw %0" : "=m" (*(addr)))

◆ fp_except_t

#define fp_except_t   int

◆ FP_MSKS_FLD

#define FP_MSKS_FLD   0x3f /* exception masks field */

◆ FP_MSKS_OFF

#define FP_MSKS_OFF   0 /* exception masks offset */

◆ FP_PRC_FLD

#define FP_PRC_FLD   0x300 /* precision control field */

◆ FP_PRC_OFF

#define FP_PRC_OFF   8 /* precision control offset */

◆ FP_RND_FLD

#define FP_RND_FLD   0xc00 /* rounding control field */

◆ FP_RND_OFF

#define FP_RND_OFF   10 /* rounding control offset */

◆ FP_STKY_FLD

#define FP_STKY_FLD   0x3f /* sticky flags field */

◆ FP_STKY_OFF

#define FP_STKY_OFF   0 /* sticky flags offset */

◆ FP_X_DNML

#define FP_X_DNML   0x02 /* denormal */

◆ FP_X_DZ

#define FP_X_DZ   0x04 /* zero divide */

◆ FP_X_IMP

#define FP_X_IMP   0x20 /* (im)precision */

◆ FP_X_INV

#define FP_X_INV   0x01 /* invalid operation */

◆ FP_X_OFL

#define FP_X_OFL   0x08 /* overflow */

◆ FP_X_STK

#define FP_X_STK   0x40 /* stack fault */

◆ FP_X_UFL

#define FP_X_UFL   0x10 /* underflow */

Enumeration Type Documentation

◆ fp_prec_t

enum fp_prec_t
Enumerator
FP_PS 
FP_PRS 
FP_PD 
FP_PE 
FP_PS 
FP_PRS 
FP_PD 
FP_PE 

◆ fp_rnd_t

enum fp_rnd_t
Enumerator
FP_RN 
FP_RM 
FP_RP 
FP_RZ 
FP_RN 
FP_RM 
FP_RP 
FP_RZ 

Function Documentation

◆ __fnldcw()

static __inline void __fnldcw ( unsigned short  _cw,
unsigned short  _newcw 
)
static

◆ fpgetmask()

static __inline fp_except_t fpgetmask ( void  )
static

References __fnstcw, FP_MSKS_FLD, and FP_MSKS_OFF.

◆ fpgetprec()

OLM_DLLEXPORT fp_prec_t fpgetprec ( void  )

References __fnstcw, FP_PRC_FLD, and FP_PRC_OFF.

Referenced by cbrtl().

Here is the caller graph for this function:

◆ fpgetround()

static __inline fp_rnd_t fpgetround ( void  )
static

References __fnstcw, FP_RND_FLD, and FP_RND_OFF.

◆ fpgetsticky()

static __inline fp_except_t fpgetsticky ( void  )
static

References __fnstsw, fp_except_t, FP_STKY_FLD, and FP_STKY_OFF.

Referenced by fpresetsticky().

◆ fpresetsticky()

static __inline fp_except_t fpresetsticky ( fp_except_t  _m)
static

◆ fpsetmask()

static __inline fp_except_t fpsetmask ( fp_except_t  _m)
static

◆ fpsetprec()

OLM_DLLEXPORT fp_prec_t fpsetprec ( fp_prec_t  _m)

References __fnldcw(), __fnstcw, FP_PRC_FLD, and FP_PRC_OFF.

Referenced by cbrtl().

Here is the caller graph for this function:

◆ fpsetround()

static __inline fp_rnd_t fpsetround ( fp_rnd_t  _m)
static