00001 /* 00002 ***************************************************************************** 00003 ** * 00004 ** COPYRIGHT 1990 BY * 00005 ** DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. * 00006 ** ALL RIGHTS RESERVED * 00007 ** * 00008 ** THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED * 00009 ** ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE * 00010 ** INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER * 00011 ** COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY * 00012 ** OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY * 00013 ** TRANSFERRED. * 00014 ** * 00015 ** THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE * 00016 ** AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT * 00017 ** CORPORATION. * 00018 ** * 00019 ** DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS * 00020 ** SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. * 00021 ** * 00022 ***************************************************************************** 00023 **++ 00024 ** FACILITY: 00025 ** 00026 ** SYS 00027 ** 00028 ** ABSTRACT: 00029 ** 00030 ** This module defines contents of the variables, my_control and my_status. 00031 ** 00032 ** AUTHORS: 00033 ** 00034 ** Robert Gries 00035 ** 00036 ** CREATION DATE: 07-Oct-1993 00037 ** 00038 ** MODIFICATION HISTORY: 00039 ** 00040 ** X-3 EMB Ellen M. Batbouta 02-Apr-1999 00041 ** Change the values of the rounding modes (our local definitions) 00042 ** to match the rounding modes used by the square root routine 00043 ** (symbols used by square root routine are: round_chopped, round_normal, 00044 ** round_pinf, and round_minf). 00045 ** 00046 ** X-2 EMB Ellen M. Batbouta 13-Apr-1998 00047 ** Add a few comments ( even a few will help immensely) ! 00048 ** Add the status flag, e_SW_DENORMAL_OPERAND. 00049 ** 00050 ** X-1 EMB0421 Ellen M. Batbouta 21-Mar-1996 00051 ** Add e_SW_DENORMAL mask. 00052 **-- 00053 **/ 00054 00055 /* This module contains the flags in the variable, my_control */ 00056 00057 #define VAX_FLOAT 0x10u /* Flag set if instruction is a VAX float (as opposed to IEEE) */ 00058 00059 #define e_MCW_RC 0x03u /* Mask for 3 rounding modes...chopped, round up, or round down */ 00060 #define e_RC_CHOP 0x00u /* The next several flags define the rounding mode associated with */ 00061 #define e_RC_DOWN 0x01u /* a particular instruction */ 00062 #define e_RC_NEAR 0x02u 00063 #define e_RC_UP 0x03u 00064 00065 #define e_PC_CONTROL 0x04u /* These few flags represent the contents of the src field in the.... */ 00066 #define e_PC_24 0x0u /* ... E_PC_24 is the flag for "24 bit arithmetic" (S or a D float) and */ 00067 #define e_PC_53 0x04u /* E_PC_53 is the flag for "53 bit arithmetic" (T or a G float) */ 00068 00069 #define e_SW_DENORMAL 0x080u /* Status flags to tell us the outcome of a particular emulated instruction */ 00070 #define e_SW_IOV 0x040u /* These status values are returned by the specific emulated instruction....*/ 00071 #define e_SW_DENORMAL_OPERAND 0x020u 00072 #define e_SW_INEXACT 0x010u /* .....routine,ie such as the routine e_addt. */ 00073 #define e_SW_UNDERFLOW 0x008u 00074 #define e_SW_OVERFLOW 0x004u 00075 #define e_SW_ZERODIVIDE 0x002u 00076 #define e_SW_INVALID 0x001u 00077 00078 unsigned set_my_control(); 00079 unsigned set_my_status();