|
|
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 test_no; /* fpp test number */ ! 240: extern int run_all; /* all subtests run flag */ ! 241: extern int count; /* cycle count to run */ ! 242: extern int nonstop; /* run forever flag n */ ! 243: extern int run_list; /* test # (or 0) to test */ ! 244: extern int subtest; /* fpp subtest number */ ! 245: extern int cycle; /* current test cycle */ ! 246: extern int force_loop; /* loop on error signal */ ! 247: extern int errcnt; /* error count */ ! 248: extern int err_code; /* error code (for subtests) */ ! 249: extern int zero; /* a known '0' data word */ ! 250: extern int nop_cnt; /* # of NOPs between instr's */ ! 251: extern int i_cache_hit; /* flag -test instr. in cache */ ! 252: extern int event_type; /* actual event type */ ! 253: extern int event_code; /* actual arith. fault type */ ! 254: extern int test_event; /* event type under test */ ! 255: extern int exp_event; /* expected event type (or 0) */ ! 256: extern int exp_code; /* expected event code */ ! 257: extern int event_return; /* return addr. after event */ ! 258: extern int unexp_event_ret; /* return if event unexpected */ ! 259: extern int fpm_trap_occurred; /* flag -got an FPM trap */ ! 260: extern int monitor_fp; /* monitor's frame pointer */ ! 261: extern int monitor_sp; /* monitor's stack pointer */ ! 262: extern int run_code_psl; /* "run_code"'s entry PSL */ ! 263: extern int pre_event_sp; /* stack pointer before event */ ! 264: extern int post_event_sp; /* stack pointer after event */ ! 265: extern int pre_event_fp; /* frame pointer before event */ ! 266: extern int post_event_fp; /* frame pointer after event */ ! 267: extern int post_event_psl; /* PSL after an (FPM) event */ ! 268: extern int event_pc; /* PC on stack from an event */ ! 269: extern int event_psl; /* PSL on stack from an event */ ! 270: extern int pointer_data; /* location to set SP / FP to */ ! 271: extern int pointer_data_2; /* LSW data for SP / FP addrs */ ! 272: extern int address_fault_expected; /* fault expected or not */ ! 273: extern int loop_addr; /* address to loop on error */ ! 274: extern int next_addr; /* start of "next addr. test" */ ! 275: extern int addr_mode; /* addressing type under test */ ! 276: extern int addr_code; /* code for addressing op. #1 */ ! 277: extern int addr_code2; /* code for addressing op. #2 */ ! 278: extern int addr_code3; /* code for addressing op. #3 */ ! 279: extern int addr_codeB; /* 2nd addr code for indexing */ ! 280: extern int test_index; /* index to a specific test */ ! 281: extern int inst_index; /* index to a specific instr. */ ! 282: extern int index; /* test data index */ ! 283: extern int index2; /* test data index # 2 */ ! 284: extern int error; /* an error exists flag */ ! 285: extern int clock_event; /* diagnostic flag -rtc event */ ! 286: extern int status_index; /* index to status array */ ! 287: extern int status_array[]; /* holds (+), (-), (0) words */ ! 288: extern char *subtest_message; /* description of subtest */ ! 289: extern char *error_message; /* description of error */ ! 290: extern char *event_msg; /* description of event */ ! 291: extern char *addressing_modes[SIZ_ADDR_MODE_TABLE]; ! 292: ! 293: /* ! 294: * These are the canned error messages ! 295: */ ! 296: extern char *k_mode_msg; /* Kernal Mode message */ ! 297: extern char *u_mode_msg; /* User Mode message */ ! 298: extern char *i_cache_hit_msg; /* instr. cache hit message */ ! 299: extern char *i_cache_miss_msg; /* instr. cache miss message */ ! 300: extern char *bad_result_msg; /* incorrect result error */ ! 301: extern char *acc_modified_msg; /* Accumulator modified msg. */ ! 302: extern char *bad_acc_msg; /* incorrect ACC message */ ! 303: extern char *psl_modified_msg; /* PSL modified message */ ! 304: extern char *bad_psl_msg; /* incorrect PSL message */ ! 305: extern char *reg_modified_msg; /* register modified message */ ! 306: extern char *trans_flt_cnt_msg; /* wrong # of page faults */ ! 307: extern char *no_evt_msg; /* expected event didn't occur*/ ! 308: extern char *disbl_evt_msg; /* a disabled event occurred */ ! 309: extern char *push_cnt_msg; /* wrong # ops. pushed w/ evt.*/ ! 310: extern char *psl_pushed_msg; /* wrong PSL pushed w/ event */ ! 311: extern char *pc_pushed_msg; /* wrong PC pushed w/ event */ ! 312: extern char *trans_acc_er_msg; /* Acc wrong after pg fault */ ! 313: extern char *bad_fpm_stack_msg; /* stack wrong after FPM trap */ ! 314: extern char *bad_fpm_acc_msg; /* Acc wrong after FPM trap */ ! 315: extern char *bad_tbl_entry_msg; /* wrong FPP table data read */ ! 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 addf_data_t mull_1_data[]; ! 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: * pointers used with the pipe tests ! 544: */ ! 545: extern int *adr_pipe_ops; /* points to integer data */ ! 546: extern struct u64 *adr_dpipe_ops; /* points to double data */ ! 547:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.