Annotation of cci/d/dmp4/fpp_defs.h, revision 1.1

1.1     ! root        1: 
        !             2: /**************************************************************************
        !             3: *
        !             4: *              FLOATING POINT PROCESSOR DIAGNOSTIC DEFINITIONS
        !             5: *
        !             6: *  10-Dec-84 :  added "enable_data_cache" option flag
        !             7: *  26-Jun-85 :  added MULL2 and MULL3
        !             8: **************************************************************************/
        !             9: 
        !            10: 
        !            11: #define TRUE  1
        !            12: #define FALSE 0
        !            13: 
        !            14: /*
        !            15:  * some tests are accessed via tables of pointers to the test functions
        !            16: */
        !            17: typedef int (*func_ptr_array[20])();   /* array of pointers to functions */
        !            18: 
        !            19: 
        !            20: /*
        !            21:  * Precisions used
        !            22: */
        !            23: #define  SGL  1
        !            24: #define  DBL  2
        !            25: 
        !            26: 
        !            27: /*
        !            28:  * Operand types
        !            29: */
        !            30: #define  NONE   0                      /* no operand */
        !            31: #define  LOAD   1                      /* operand is a data address  */
        !            32: #define  STORE  2                      /* operand is a STORE address */
        !            33: 
        !            34: 
        !            35: /*
        !            36:  * Priveleged Register contents
        !            37: */
        !            38: #define  SBR   0                       /*system base register          */
        !            39: #define  SLR   1                       /*system length reg             */
        !            40: #define  P0BR  2                       /*p0 base reg                   */
        !            41: #define  P0LR  3                       /*p0 length reg                 */
        !            42: #define  P1BR  4                       /*p1 base reg                   */
        !            43: #define  P1LR  5                       /*p1 length reg                 */
        !            44: #define  P2BR  6                       /*p2 base reg                   */
        !            45: #define  P2LR  7                       /*p2 length reg                 */
        !            46: #define  IPL   8                       /*int priority level reg        */
        !            47: #define  MME   9                       /*memory mgmt enable reg        */
        !            48: #define  TBIA  10                      /*trans buf invalidate all      */
        !            49:                                        /*entries                       */
        !            50: #define  TBIS  11                      /*trans buf invalidate single   */
        !            51:                                        /*entry                         */
        !            52: #define  DCK   12                      /*data cache key                */
        !            53: #define  CCK   13                      /*code cache key                */
        !            54: #define  PCBB  14                      /*process control block base    */
        !            55: #define  ISP   15                      /*interrupt stack pointer       */
        !            56: #define  SIRR  16                      /*software int request reg      */
        !            57: #define  SISR  17                      /*software int summary reg      */
        !            58: #define  SCBB  18                      /*system control block base reg */
        !            59: #define  KSP   19                      /*kernel stack pointer reg      */
        !            60: #define  USP   20                      /*user stack pointer            */
        !            61: #define  DCB   21                      /*CPU2 DCB                      */
        !            62: #define  PACC  23                      /*purge (invalidate) all pages  */
        !            63:                                        /*of process in code cache      */
        !            64: #define  P1DC  24                      /*purge one page of data cache  */
        !            65: #define  PADC  25                      /*purge all the pages of        */
        !            66:                                        /*process in data cache         */
        !            67: #define  HISR  26                      /* Hardware interrupt summary reg  */
        !            68: #define  DCR   27                      /* Diagnostic control register  */
        !            69: #define  PDCS  28                      /* Purge 1 data cache slot      */
        !            70:        
        !            71: 
        !            72: 
        !            73: /*
        !            74:  * PSL bit definitions
        !            75: */
        !            76: #define PSL_C          0x1             /* bit(00) CARRY bit          */
        !            77: #define PSL_V          0x2             /* bit(01) OVERFLOW bit       */
        !            78: #define PSL_Z          0x4             /* bit(02) ZERO bit           */
        !            79: #define PSL_N          0x8             /* bit(03) NEGATIVE bit       */
        !            80: #define PSL_EN_T       0x10            /* bit(04) Enable TRACE bit   */
        !            81: #define PSL_EN_OVFL    0x20            /* bit(05) Enable OVERFLOW bit*/
        !            82: #define PSL_EN_UNDFL   0x40            /* bit(06) Enable UNDERFLOW   */
        !            83: #define PSL_DBL        0x80            /* bit(07) DBL Precision acc. */
        !            84: #define ENABLE_EVENTS  0x60            /* enable INT OVFL & UNDFL    */
        !            85: 
        !            86: 
        !            87: /*
        !            88:  * Event Codes
        !            89: */
        !            90: #define SW_IPL1_CODE 0x1e              /* s/w interrupt (IPL = 1)    */
        !            91: #define BUS_ER_CODE  0x20              /* buss error interrupt       */
        !            92: #define RESINST_CODE 0x2c              /* priveleged/reserved instr. */
        !            93: #define RESOP_CODE   0x2d              /* reserved operand fault     */
        !            94: #define RESAD_CODE   0x2e              /* reserved address fault     */
        !            95: #define TRACE_CODE   0x33              /* trace trap                 */
        !            96: #define ARITH_CODE   0x34              /* arithmetic fault           */
        !            97: #define ALIGN_CODE   0x35              /* alignment fault            */
        !            98: #define SFE_CODE     0x36              /* system forced exception    */
        !            99: #define FPM_CODE     0x37              /* fpp emulation trap         */
        !           100: 
        !           101: /*
        !           102:  * Arithmetic Event Types
        !           103: */
        !           104: #define INT_OVFL_CODE   1              /* integer overflow fault     */
        !           105: #define INT_0_DIV_CODE  2              /* integer divide by 0 fault  */
        !           106: #define FLT_0_DIV_CODE  3              /* floating divide by 0 fault */
        !           107: #define FLT_OVFL_CODE   4              /* floating overflow fault    */
        !           108: #define FLT_UNDFL_CODE  5              /* floating underflow fault   */
        !           109: 
        !           110: 
        !           111: /*
        !           112:  * jump condition flag definitions
        !           113: */
        !           114: #define POSITIVE       2                       /* positive flag bit */
        !           115: #define ZERO           4                       /* zero flag bit     */
        !           116: #define NEGATIVE       8                       /* negative flag bit */
        !           117: 
        !           118: 
        !           119: /*
        !           120:  *  OP-CODEs for the FPP instruction set
        !           121: */
        !           122: #define  LDF_OP_CODE   0x06                    /* sgl load acc. instr      */
        !           123: #define  LDD_OP_CODE   0x07                    /* dbl load acc. instr      */
        !           124: #define  LNF_OP_CODE   0x16                    /* sgl load-neg acc. instr  */
        !           125: #define  LND_OP_CODE   0x17                    /* dbl load-neg acc. instr  */
        !           126: #define  STF_OP_CODE   0x26                    /* sgl store acc. instr     */
        !           127: #define  STD_OP_CODE   0x27                    /* dbl store acc. instr     */
        !           128: #define  CMPF_OP_CODE  0x36                    /* sgl compare instr        */
        !           129: #define  CMPD_OP_CODE  0x37                    /* dbl compare instr        */
        !           130: #define  CMPF2_OP_CODE 0x46                    /* sgl compare 2 instr      */
        !           131: #define  CMPD2_OP_CODE 0x47                    /* dbl compare 2 instr      */
        !           132: #define  TSTF_OP_CODE  0x56                    /* sgl test acc. instr      */
        !           133: #define  TSTD_OP_CODE  0x57                    /* dbl test acc. instr      */
        !           134: #define  PUSHD_OP_CODE 0x67                    /* dbl push acc. instr      */
        !           135: #define  CVLF_OP_CODE  0x76                    /* convert int to sgl instr */
        !           136: #define  CVLD_OP_CODE  0x77                    /* convert int to dbl instr */
        !           137: #define  CVFL_OP_CODE  0x86                    /* convert sgl to int instr */
        !           138: #define  CVDL_OP_CODE  0x87                    /* convert dbl to int instr */
        !           139: #define  LDFD_OP_CODE  0x97                    /* load sgl to dbl instr    */
        !           140: #define  CVDF_OP_CODE  0xa6                    /* convert dbl to sgl instr */
        !           141: #define  NEGF_OP_CODE  0xb6                    /* negate sgl acc. instr    */
        !           142: #define  NEGD_OP_CODE  0xb7                    /* negate dbl acc. instr    */
        !           143: #define  ADDF_OP_CODE  0xc6                    /* sgl add instr            */
        !           144: #define  ADDD_OP_CODE  0xc7                    /* dbl add instr            */
        !           145: #define  SUBF_OP_CODE  0xd6                    /* sgl subtract instr       */
        !           146: #define  SUBD_OP_CODE  0xd7                    /* dbl subtract instr       */
        !           147: #define  MULF_OP_CODE  0xe6                    /* sgl multiply instr       */
        !           148: #define  MULD_OP_CODE  0xe7                    /* dbl multiply instr       */
        !           149: #define  DIVF_OP_CODE  0xf6                    /* sgl divide instr         */
        !           150: #define  DIVD_OP_CODE  0xf7                    /* dbl divide instr         */
        !           151: #define  SINF_OP_CODE  0x05                    /* sgl sine instr           */
        !           152: #define  COSF_OP_CODE  0x15                    /* sgl cosine instr         */
        !           153: #define  ATANF_OP_CODE 0x25                    /* sgl arc-tangent instr    */
        !           154: #define  LOGF_OP_CODE  0x35                    /* sgl natural log instr    */
        !           155: #define  SQRTF_OP_CODE 0x45                    /* sgl square root instr    */
        !           156: #define  EXPF_OP_CODE  0x55                    /* sgl "e to the x" instr   */
        !           157: #define  MULL2_OP_CODE  0x4c                   /* multiply integer 2 instr */
        !           158: #define  MULL3_OP_CODE  0x5c                   /* multiply integer 3 instr */
        !           159: 
        !           160: #define  NO_INSTRUCTIONS  37                   /* 37 fpp instructions      */
        !           161: 
        !           162: 
        !           163: /*
        !           164:  *  definitions for addressing mode tests
        !           165: */
        !           166: #define ADR_ABSOLUTE   1       /* absolute address                         */
        !           167: #define ADR_LITERAL    2       /* literal -short immediate byte            */
        !           168: #define ADR_IM_B       3       /* immediate byte                           */
        !           169: #define ADR_IM_W       4       /* immediate word                           */
        !           170: #define ADR_IM_L       5       /* immediate long-word                      */
        !           171: #define ADR_B_DSP      6       /* byte displ relative                      */
        !           172: #define ADR_W_DSP      7       /* word displ relative                      */
        !           173: #define ADR_L_DSP      8       /* long-word displ relative                 */
        !           174: #define ADR_B_DSP_DEF  9       /* byte displ relative deferred             */
        !           175: #define ADR_W_DSP_DEF  10      /* word displ relative deferred             */
        !           176: #define ADR_L_DSP_DEF  11      /* long-word displ relative deferred        */
        !           177: #define ADR_REG                12      /* direct register                          */
        !           178: #define ADR_REG_DEF    13      /* register deferred                        */
        !           179: #define ADR_FP_DEF     14      /* FP deferred                              */
        !           180: #define ADR_SP_DEF     15      /* SP deferred                              */
        !           181: #define ADR_PUSH       16      /* auto-decrement SP                        */
        !           182: #define ADR_POP                17      /* auto-increment SP                        */
        !           183: #define ADR_POP_DEF    18      /* auto-increment SP deferred               */
        !           184: #define ADR_REG_B      19      /* register + byte displ                    */
        !           185: #define ADR_REG_W      20      /* register + word displ                    */
        !           186: #define ADR_REG_L      21      /* register + long-word displ               */
        !           187: #define ADR_REG_B_DEF  22      /* register + byte displ deferred           */
        !           188: #define ADR_REG_W_DEF  23      /* register + word displ deferred           */
        !           189: #define ADR_REG_L_DEF  24      /* register + long-word displ deferred      */
        !           190: #define ADR_I_FP_DEF   25      /* indexed (frame pointer deferred)         */
        !           191: #define ADR_I_L        26      /* indexed (longword displacement)          */
        !           192: #define ADR_I_REG_DEF  27      /* indexed (register deferred)              */
        !           193: #define ADR_I_L_DEF    28      /* indexed (longword displacement deferred) */
        !           194: #define SIZ_ADDR_MODE_TABLE 29 /* allow for 29 addressing types ( w/ '0' ) */
        !           195: 
        !           196: 
        !           197: 
        !           198: /*
        !           199:  *  Define the halt codes for the tests
        !           200: */
        !           201: 
        !           202: #define UNEXP_EVT_HLT   0              /* unexpected event     */
        !           203: #define BAD_ACC_HLT     1              /* bad final Acc.       */
        !           204: #define BAD_REG_HLT     2              /* bad final register   */
        !           205: #define BAD_PSL_HLT     3              /* wrong PSL value      */
        !           206: #define NO_EVT_HLT      4              /* did not Get event    */
        !           207: #define EVT_MSK_HLT     5              /* got masked event     */
        !           208: #define PUSH_PSL_HLT    6              /* bad PSL on stack     */
        !           209: #define BAD_FPM_STK_HLT  7             /* stack error w/ FPM   */
        !           210: #define PUSH_CNT_HLT    8              /* wrong # ops on stack */
        !           211: #define BAD_STORE_HLT    9             /* bad data stored      */
        !           212: 
        !           213: 
        !           214: 
        !           215: 
        !           216: /***************************************************************************** 
        !           217: *
        !           218: *      These are the global variables 
        !           219: *
        !           220: *****************************************************************************/
        !           221: 
        !           222: 
        !           223: /*
        !           224:  * These are the run option flags 
        !           225: */
        !           226: extern int halt_flg;                   /* halt on error flag             */
        !           227: extern int loop_on_err;                        /* loop on error flag             */
        !           228: extern int prt_error;                  /* print error message flag       */
        !           229: extern int prt_hdrs;                   /* print main header flag         */
        !           230: extern int prt_sbtsts;                 /* outdated -print subtest headers*/
        !           231: extern int en_data_cache;              /* enable the data chache flag    */
        !           232: 
        !           233: 
        !           234: 
        !           235: /*
        !           236:  * These are used by the tests as control flags
        !           237: */
        !           238: extern int no_fpp_wcs;                 /* "NO-FPP WCS" loaded flag   */
        !           239: extern int valid_test;                 /* a valid test was requested */
        !           240: extern int test_no;                    /* fpp test number            */
        !           241: extern int run_all;                    /* all subtests run flag      */
        !           242: extern int count;                      /* cycle count to run         */
        !           243: extern int nonstop;                    /* run forever flag n         */
        !           244: extern int run_list;                   /* test # (or 0) to test      */
        !           245: extern int subtest;                    /* fpp subtest number         */
        !           246: extern int cycle;                      /* current test cycle         */
        !           247: extern int force_loop;                 /* loop on error signal       */
        !           248: extern int errcnt;                     /* error count                */
        !           249: extern int err_code;                   /* error code (for subtests)  */
        !           250: extern int zero;                       /* a known '0' data word      */
        !           251: extern int nop_cnt;                    /* # of NOPs between instr's  */
        !           252: extern int i_cache_hit;                        /* flag -test instr. in cache */
        !           253: extern int event_type;                 /* actual event type          */
        !           254: extern int event_code;                 /* actual arith. fault type   */
        !           255: extern int test_event;                 /* event type under test      */
        !           256: extern int exp_event;                  /* expected event type (or 0) */
        !           257: extern int exp_code;                   /* expected event code        */
        !           258: extern int event_return;               /* return addr. after event   */
        !           259: extern int unexp_event_ret;            /* return if event unexpected */
        !           260: extern int fpm_trap_occurred;          /* flag -got an FPM trap      */
        !           261: extern int monitor_fp;                 /* monitor's frame pointer    */
        !           262: extern int monitor_sp;                 /* monitor's stack pointer    */
        !           263: extern int run_code_psl;               /* "run_code"'s entry PSL     */
        !           264: extern int pre_event_sp;               /* stack pointer before event */
        !           265: extern int post_event_sp;              /* stack pointer after event  */
        !           266: extern int pre_event_fp;               /* frame pointer before event */
        !           267: extern int post_event_fp;              /* frame pointer after event  */
        !           268: extern int post_event_psl;             /* PSL after an (FPM) event   */
        !           269: extern int event_pc;                   /* PC on stack from an event  */
        !           270: extern int event_psl;                  /* PSL on stack from an event */
        !           271: extern int pointer_data;               /* location to set SP / FP to */
        !           272: extern int pointer_data_2;             /* LSW data for SP / FP addrs */
        !           273: extern int address_fault_expected;     /* fault expected or not      */
        !           274: extern int loop_addr;                  /* address to loop on error   */
        !           275: extern int next_addr;                  /* start of "next addr. test" */
        !           276: extern int addr_mode;                  /* addressing type under test */
        !           277: extern int addr_code;                  /* code for addressing op. #1 */
        !           278: extern int addr_code2;                 /* code for addressing op. #2 */
        !           279: extern int addr_code3;                 /* code for addressing op. #3 */
        !           280: extern int addr_codeB;                 /* 2nd addr code for indexing */
        !           281: extern int test_index;                 /* index to a specific test   */
        !           282: extern int inst_index;                 /* index to a specific instr. */
        !           283: extern int index;                      /* test data index            */
        !           284: extern int index2;                     /* test data index # 2        */
        !           285: extern int error;                      /* an error exists flag       */
        !           286: extern int clock_event;                        /* diagnostic flag -rtc event */
        !           287: extern int status_index;               /* index to status array      */
        !           288: extern int status_array[];             /* holds (+), (-), (0) words  */
        !           289: extern char *subtest_message;          /* description of subtest     */
        !           290: extern char *error_message;            /* description of error       */
        !           291: extern char *event_msg;                        /* description of event       */
        !           292: extern char *addressing_modes[SIZ_ADDR_MODE_TABLE];
        !           293: 
        !           294: /*
        !           295:  * These are the canned error messages
        !           296: */
        !           297: extern char *k_mode_msg;               /* Kernal Mode message        */
        !           298: extern char *u_mode_msg;               /* User Mode message          */
        !           299: extern char *i_cache_hit_msg;          /* instr. cache hit message   */
        !           300: extern char *i_cache_miss_msg;         /* instr. cache miss message  */
        !           301: extern char *bad_result_msg;           /* incorrect result error     */
        !           302: extern char *acc_modified_msg;         /* Accumulator modified msg.  */
        !           303: extern char *bad_acc_msg;              /* incorrect ACC message      */
        !           304: extern char *psl_modified_msg;         /* PSL modified message       */
        !           305: extern char *bad_psl_msg;              /* incorrect PSL message      */
        !           306: extern char *reg_modified_msg;         /* register modified message  */
        !           307: extern char *trans_flt_cnt_msg;                /* wrong # of page faults     */
        !           308: extern char *no_evt_msg;               /* expected event didn't occur*/
        !           309: extern char *disbl_evt_msg;            /* a disabled event occurred  */
        !           310: extern char *push_cnt_msg;             /* wrong # ops. pushed w/ evt.*/
        !           311: extern char *psl_pushed_msg;           /* wrong PSL pushed w/ event  */
        !           312: extern char *pc_pushed_msg;            /* wrong PC pushed w/ event   */
        !           313: extern char *trans_acc_er_msg;         /* Acc wrong after pg fault   */
        !           314: extern char *bad_fpm_stack_msg;                /* stack wrong after FPM trap */
        !           315: extern char *bad_fpm_acc_msg;          /* Acc wrong after FPM trap   */
        !           316: 
        !           317: /*
        !           318:  * These values are used for alternating data patterns in error looping
        !           319: */
        !           320: extern int old_indx;                   /* previous test data index   */
        !           321: extern int loop_val_1a;                        /* MSW of 1st data op in loop */
        !           322: extern int loop_val_1b;                        /* MSW of 1st data op in loop */
        !           323: extern int loop_val_1c;                        /* LSW of 1st data op in loop */
        !           324: extern int loop_val_1d;                        /* LSW of 1st data op in loop */
        !           325: extern int loop_val_2a;                        /* MSW of 2nd data op in loop */
        !           326: extern int loop_val_2b;                        /* MSW of 2nd data op in loop */
        !           327: extern int loop_val_2c;                        /* LSW of 2nd data op in loop */
        !           328: extern int loop_val_2d;                        /* LSW of 2nd data op in loop */
        !           329: 
        !           330: 
        !           331: /*
        !           332:  *  data structure definitions
        !           333: */
        !           334: 
        !           335: struct u64 {                                   /* 64 bit (dbl) integer      */
        !           336:    unsigned  m;                                        /*   -most significant bits  */
        !           337:    unsigned  l;                                        /*   -least significant bits */
        !           338:   };
        !           339: 
        !           340: 
        !           341: struct cmpd_data_t {                           /* compare 2 dbl opderands   */
        !           342:    struct u64  one;                            /*   -1st compare value      */
        !           343:    struct u64  two;                            /*   -2nd compare value      */
        !           344:    int flag;                                   /*   -expected condition flg */
        !           345:   };
        !           346: 
        !           347: 
        !           348: struct cmpf_data_t {                           /* compare 2 sgl operands    */
        !           349:    int one;                                    /*   -1st compare value      */
        !           350:    int two;                                    /*   -2nd compare value      */
        !           351:    int flag;                                   /*   -expected condition flg */
        !           352:    };
        !           353: 
        !           354: 
        !           355: struct cvds_data_t {                           /* convert dbl op to sgl */
        !           356:   struct u64 ld;                               /*   -data to load       */
        !           357:   unsigned  exp;                               /*   -converted result   */
        !           358:  };
        !           359: 
        !           360: 
        !           361: struct cvfl_data_t {                           /* convert sgl to integer */
        !           362:   unsigned ld;                                 /*   -data to load        */
        !           363:   unsigned exp;                                        /*   -converted result    */
        !           364:  };
        !           365: 
        !           366: 
        !           367: struct ldd_data_t {                            /* load / store doubles   */
        !           368:   struct u64 ld;                               /*   -data to load        */
        !           369:   struct u64 exp;                              /*   -expected results    */
        !           370:  };
        !           371: 
        !           372: 
        !           373: struct ldf_data_t {                            /* load / store singles  */
        !           374:   unsigned ld;                                 /*   -data to load       */
        !           375:   unsigned exp;                                        /*   -expected results   */
        !           376:  };
        !           377: 
        !           378: 
        !           379: struct ldfd_data_t {                           /* load sgl convert to dbl */
        !           380:   unsigned ld;                                 /*   -sgl data to load     */
        !           381:   struct u64 exp;                              /*   -dbl data expected    */
        !           382:  };
        !           383: 
        !           384: 
        !           385: struct addf_data_t {                           /* sgl precision +, -, *, / */
        !           386:   unsigned op_1;                               /*   -operand 1 ( in ACC. ) */
        !           387:   unsigned op_2;                               /*   -operand 2             */
        !           388:   unsigned exp;                                /*   -expected result       */
        !           389:  };
        !           390: 
        !           391: 
        !           392: struct addd_data_t {                           /* dbl precision +, -, *, / */
        !           393:   struct u64 op_1;                             /*   -operand 1 ( in ACC. ) */
        !           394:   struct u64 op_2;                             /*   -operand 2             */
        !           395:   struct u64 exp;                              /*   -expected result       */
        !           396:  };
        !           397: 
        !           398: 
        !           399: struct addd_ovflw_t {                          /* dbl reserved operands    */
        !           400:   struct u64 op_1;                             /*   -operand 1 ( in ACC. ) */
        !           401:   struct u64 op_2;                             /*   -operand 2 ( RESOP )   */
        !           402:  };
        !           403: 
        !           404: 
        !           405: struct addf_ovflw_t {                          /* sgl reserved operands    */
        !           406:   unsigned op_1;                               /*   -operand 1 ( in ACC. ) */
        !           407:   unsigned op_2;                               /*   -operand 2 ( RESOP )   */
        !           408:  };
        !           409: 
        !           410: 
        !           411: 
        !           412: /*
        !           413:  * data variables used by the tests  (must be declared someplace)
        !           414: */
        !           415: extern struct ldf_data_t   ldf_1_data[];       /* LDF data pattern array   */
        !           416: extern int max_ldf_1_index;                    /*     (# data patterns) -1 */
        !           417: extern struct ldf_data_t   lnf_1_data[];       /* LNF   */
        !           418: extern int max_lnf_1_index;
        !           419: extern struct addf_data_t  addf_1_data[];      /* ADDF  */
        !           420: extern int max_addf_1_index;
        !           421: extern struct addf_data_t  subf_1_data[];      /* SUBF  */
        !           422: extern int max_subf_1_index;
        !           423: extern struct addf_data_t  mulf_1_data[];      /* MULF  */
        !           424: extern int max_mulf_1_index;
        !           425: extern struct addf_data_t  divf_1_data[];      /* DIVF  */
        !           426: extern int max_divf_1_index;
        !           427: extern struct cvfl_data_t  cvlf_1_data[];      /* CVLF  */
        !           428: extern int max_cvlf_1_index;
        !           429: extern struct cmpd_data_t  cmpd_1_data[];      /* CMPD  */
        !           430: extern int max_cmpd_1_index;
        !           431: extern struct cmpd_data_t  cmpd2_1_data[];     /* CMPD2 */
        !           432: extern int max_cmpd2_1_index;
        !           433: extern struct cmpf_data_t  cmpf_1_data[];      /* CMPF  */
        !           434: extern int max_cmpf_1_index;
        !           435: extern struct cmpf_data_t  cmpf2_1_data[];     /* CMPF2 */
        !           436: extern int max_cmpf2_1_index;
        !           437: extern struct cvds_data_t  cvdf_1_data[];      /* CVDF  */
        !           438: extern int max_cvdf_1_index;
        !           439: extern struct cvds_data_t  cvdl_1_data[];      /* CVDL  */
        !           440: extern int max_cvdl_1_index;
        !           441: extern struct cvfl_data_t  cvfl_1_data[];      /* CVFL  */
        !           442: extern int max_cvfl_1_index;
        !           443: extern struct ldfd_data_t  cvld_1_data[];      /* CVLD  */
        !           444: extern int max_cvld_1_index;
        !           445: extern struct ldd_data_t   ldd_1_data[];       /* LDD   */
        !           446: extern int max_ldd_1_index;
        !           447: extern struct ldfd_data_t  ldfd_1_data[];      /* LDFD  */
        !           448: extern int max_ldfd_1_index;
        !           449: extern struct ldd_data_t   lnd_1_data[];       /* LND   */
        !           450: extern int max_lnd_1_index;
        !           451: extern struct addd_data_t   addd_1_data[];     /* ADDD  */
        !           452: extern int max_addd_1_index;
        !           453: extern struct addd_data_t   subd_1_data[];     /* SUBD  */
        !           454: extern int max_subd_1_index;
        !           455: extern struct addd_data_t   muld_1_data[];     /* MULD  */
        !           456: extern int max_muld_1_index;
        !           457: extern struct addd_data_t   divd_1_data[];     /* DIVD  */
        !           458: extern int max_divd_1_index;
        !           459: extern struct ldd_data_t   pushd_1_data[];     /* PUSHD */
        !           460: extern int max_pushd_1_index;
        !           461: extern struct cvds_data_t  tstd_1_data[];      /* TSTD  */
        !           462: extern int max_tstd_1_index;
        !           463: extern struct cvfl_data_t  tstf_1_data[];      /* TSTF  */
        !           464: extern int max_tstf_1_index;
        !           465: extern struct ldf_data_t   sinf_1_data[];      /* SINF  */
        !           466: extern int max_sinf_1_index;
        !           467: extern struct ldf_data_t   cosf_1_data[];      /* COSF  */
        !           468: extern int max_cosf_1_index;
        !           469: extern struct ldf_data_t   atanf_1_data[];     /* ATANF */
        !           470: extern int max_atanf_1_index;
        !           471: extern struct ldf_data_t   expf_1_data[];      /* EXPF  */
        !           472: extern int max_expf_1_index;
        !           473: extern struct ldf_data_t   logf_1_data[];      /* LOGF  */
        !           474: extern int max_logf_1_index;
        !           475: extern struct ldf_data_t   sqrtf_1_data[];     /* SQRTF */
        !           476: extern int max_sqrtf_1_index;
        !           477: extern struct ldf_data_t   mull_1_data[];      /* MULL2 / MULL3 */
        !           478: extern int max_mull_1_index;
        !           479: 
        !           480: 
        !           481: 
        !           482: /* 
        !           483:  * global data variables
        !           484: */
        !           485: extern struct u64  dbl_value_1;                        /* 1st dbl test value      */
        !           486: extern struct u64  dbl_value_2;                        /* 2nd dbl test value      */
        !           487: extern struct u64  dbl_value_3;                        /* 3rd dbl test value      */
        !           488: extern struct u64  dbl_expected;               /* expected dbl data       */
        !           489: extern struct u64  dbl_ld_acc;                 /* load dbl acc. from here */
        !           490: extern struct u64  dbl_st_acc;                 /* stored dbl accumulator  */
        !           491: extern struct u64  dbl_dummy1;                 /* dummy quad word         */
        !           492: extern struct u64  dbl_dummy2;                 /* ditto                   */
        !           493: extern int sgl_ld_acc;                         /* load sgl acc. from here */
        !           494: extern int sgl_st_acc;                         /* stored sgl acc.         */
        !           495: extern int sgl_expected;                       /* expected sgl data       */
        !           496: extern int sgl_value_1;                                /* 1st  sgl data value     */
        !           497: extern int sgl_value_2;                                /* 2nd  sgl data value     */
        !           498: extern int sgl_value_3;                                /* 3rd  sgl data value     */
        !           499: extern int sgl_value_4;                                /* 4th  sgl data value     */
        !           500: extern int sgl_value_5;                                /* 5th  sgl data value     */
        !           501: extern int sgl_value_6;                                /* 6th  sgl data value     */
        !           502: extern int sgl_value_7;                                /* 7th  sgl data value     */
        !           503: extern int sgl_value_8;                                /* 8th  sgl data value     */
        !           504: extern int sgl_value_9;                                /* 9th  sgl data value     */
        !           505: extern int sgl_value_10;                       /* 10th sgl data value     */
        !           506: extern int sgl_dummy1;                         /* a dummy variable        */
        !           507: extern int sgl_dummy2;                         /* a dummy variable, too   */
        !           508: extern int psl_val;                            /* PSL value               */
        !           509: extern int init_psl;                           /* initial PSL value       */
        !           510: extern int exp_psl;                            /* expected PSL value      */
        !           511: extern int test_flags;                         /* condition flags seen    */
        !           512: extern int flg_expected;                       /* condition flags expected*/
        !           513: extern int reg_no;                             /* register being validated */
        !           514: extern int regs_ok;                            /* flag - no reg. miscompare*/
        !           515: extern int exp_reg;                            /* expected reg. value      */
        !           516: extern int act_reg;                            /* actual register value    */
        !           517: extern int load_regs[14];                      /* load registers from here */
        !           518: extern int store_regs[14];                     /* store registers here     */
        !           519: extern int exp_regs[14];                       /* expected registers data  */
        !           520: extern int  exp_pc;                            /* expected PC              */
        !           521: extern int  act_pc;                            /* actual PC                */
        !           522: 
        !           523: 
        !           524: 
        !           525: /*
        !           526:  * stack variables
        !           527: */
        !           528: extern int pop_val_1;                          /* 1st popped stack data  */
        !           529: extern int pop_val_2;                          /* 2nd popped stack data  */
        !           530: extern int pop_val_3;                          /* 3rd popped stack data  */
        !           531: extern int pop_val_4;                          /* 4th popped stack data  */
        !           532: extern int pop_val_5;                          /* 5th popped stack data  */
        !           533: extern int pop_val_6;                          /* 6th popped stack data  */
        !           534: 
        !           535: extern int fpm_ms_op;                          /* MS operand w/ FPM trap */
        !           536: extern int fpm_ls_op;                          /* LS operand w/ FPM trap */
        !           537: extern int fpm_op_code;                                /* op-code w/ FPM trap    */
        !           538: extern int fpm_pc;                             /* PC w/ FPM trap         */
        !           539: extern int fpm_psl;                            /* PSL w/ FPM trap        */
        !           540: 
        !           541: 
        !           542: 
        !           543: /*
        !           544:  * variables used in the exaustive data tests
        !           545: */
        !           546: extern int not_done;                   /* "keep testing" flag           */
        !           547: extern int fudgeing_ok;                        /* +/- 1 result is acceptable    */
        !           548: extern int use_BELL_data;              /* use Bell Labs type fractions  */
        !           549: extern int max_BELL_index;             /* # of Bell Labs type fractions */
        !           550: extern int fraction_array[];           /* Bell Labs type fraction array */
        !           551: 

unix.superglobalmegacorp.com

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