Annotation of cci/usr/src/usr.lib/libF77/traper_.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  *
                      3:  *     @(#)traper_.s   8/27/85
                      4:  *
                      5:  *
                      6:  * To use from f77:
                      7:  *     integer oldmsk, traper
                      8:  *     oldmsk = traper (mask)
                      9:  * where:
                     10:  *     mask = 0 to trap neither
                     11:  *     mask = 1 to trap integer overflow
                     12:  *     mask = 2 to trap floating underflow
                     13:  *     mask = 3 to trap both
                     14:  *     These 2 bits will be set into the PSL.
                     15:  *     The old state will be returned.
                     16:  * Assumptions:
                     17:  *     - the two bits are contiguous in PSL;
                     18:  *     - integer overflow trap enable bit < floating underflow trap enable bit;
                     19:  */
                     20: 
                     21: # include <machine/psl.h>
                     22: 
                     23: unsigned long old_msk;
                     24: unsigned short new_msk;
                     25: unsigned long tst_msk;
                     26: 
                     27: long traper_(msk)
                     28: long   *msk;
                     29: {
                     30: #define IOV_MASK (PSL_IV | PSL_FU)
                     31: #define IOV_DISP 5
                     32: 
                     33:        asm("   movpsl _old_msk");
                     34: 
                     35:        old_msk = (old_msk & IOV_MASK) >> IOV_DISP;
                     36: 
                     37:        new_msk = (*msk << IOV_DISP) & IOV_MASK;
                     38:        asm("   bispsw _new_msk");
                     39: 
                     40:        new_msk = ~(*msk << IOV_DISP) & IOV_MASK;
                     41:        asm("   bicpsw _new_msk");
                     42: 
                     43:        return(old_msk);
                     44: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.