Changeset 13936 for branches


Ignore:
Timestamp:
Jul 7, 2010, 7:46:47 PM (9 years ago)
Author:
rme
Message:

Define TCR_FLAG_BIT_FOREIGN_FPE, other macros for fiddling with
MXCSR contents from C.

Location:
branches/rme-fpe/lisp-kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/rme-fpe/lisp-kernel/constants.h

    r13626 r13936  
    2424#define TCR_FLAG_BIT_FOREIGN_EXCEPTION (fixnumshift+6)
    2525#define TCR_FLAG_BIT_PENDING_SUSPEND (fixnumshift+7)
     26#define TCR_FLAG_BIT_FOREIGN_FPE (fixnumshift+8)
    2627
    2728#define TCR_STATE_FOREIGN (1)
  • branches/rme-fpe/lisp-kernel/x86-constants.h

    r13627 r13936  
    1717#include "constants.h"
    1818
     19/* MXCSR bits */
    1920
    20 /* FP exception mask bits */
    21 #define MXCSR_IM_BIT (7)        /* invalid masked when set*/
    22 #define MXCSR_DM_BIT (8)        /* denormals masked when set*
    23 #define MXCSR_ZM_BIT (9)        /* divide-by-zero masked when set */
    24 #define MXCSR_OM_BIT (10)       /* overflow masked when set */
    25 #define MXCSR_UM_BIT (11)       /* underflow masked when set */
    26 #define MXCSR_PM_BIT (12)       /* precision masked when set */
     21enum {
     22  MXCSR_IE_BIT,    /* invalid operation */
     23  MXCSR_DE_BIT,    /* denormal */
     24  MXCSR_ZE_BIT,    /* divide-by-zero */
     25  MXCSR_OE_BIT,    /* overflow */
     26  MXCSR_UE_BIT,    /* underflow */
     27  MXCSR_PE_BIT,    /* precision */
     28  MXCSR_DAZ_BIT,   /* denorms-are-zero (not IEEE) */
     29  MXCSR_IM_BIT,    /* invalid operation masked */
     30  MXCSR_DM_BIT,    /* denormal masked */
     31  MXCSR_ZM_BIT,    /* divide-by-zero masked */
     32  MXCSR_OM_BIT,    /* overflow masked */
     33  MXCSR_UM_BIT,    /* underflow masked */
     34  MXCSR_PM_BIT,    /* precision masked */
     35  MXCSR_RC0_BIT,   /* rounding control bit 0 */
     36  MXCSR_RC1_BIT,   /* rounding control bit 1 */
     37  MXCSR_FZ_BIT     /* flush-to-zero (not IEEE) */
     38};
     39
     40#define MXCSR_STATUS_MASK ((1 << MXCSR_IE_BIT) | \
     41                           (1 << MXCSR_DE_BIT) | \
     42                           (1 << MXCSR_ZE_BIT) | \
     43                           (1 << MXCSR_OE_BIT) | \
     44                           (1 << MXCSR_UE_BIT) | \
     45                           (1 << MXCSR_PE_BIT))
     46
     47#define MXCSR_CONTROL_AND_ROUNDING_MASK ((1<<MXCSR_IM_BIT) | \
     48                                         (1<<MXCSR_DM_BIT) | \
     49                                         (1<<MXCSR_ZM_BIT) | \
     50                                         (1<<MXCSR_OM_BIT) | \
     51                                         (1<<MXCSR_UM_BIT) | \
     52                                         (1<<MXCSR_PM_BIT) | \
     53                                         (1<<MXCSR_RC0_BIT) | \
     54                                         (1<<MXCSR_RC1_BIT))
     55
     56#define MXCSR_CONTROL_MASK ((1<<MXCSR_IM_BIT) | \
     57                            (1<<MXCSR_DM_BIT) | \
     58                            (1<<MXCSR_ZM_BIT) | \
     59                            (1<<MXCSR_OM_BIT) | \
     60                            (1<<MXCSR_UM_BIT) | \
     61                            (1<<MXCSR_PM_BIT))
     62
     63#define MXCSR_WRITE_MASK (~((1<<MXCSR_DAZ_BIT)|(1<<MXCSR_FZ_BIT)))
    2764
    2865/* Bits in the xFLAGS register */
Note: See TracChangeset for help on using the changeset viewer.