Annotation of cci/d/macro4/mull2.c, revision 1.1.1.1

1.1       root        1: #include "fpp_defs.h"
                      2: 
                      3: 
                      4: /***************************************************************************
                      5: *
                      6: *       MULL2 -MULTIPLY INTEGER 2 INSTRUCTION TEST
                      7: *
                      8: *****************************************************************************/
                      9: mull2()
                     10: {
                     11:         asm(".globl _mull2_t");
                     12:         asm("_mull2_t:");                       /* entry address            */
                     13:         if( (cycle == 1) && (prt_hdrs) )        /* print headers on 1st cycle */
                     14:         {
                     15:            writes(" MULL2");
                     16:         }
                     17:         mull2_1();                              /* register data / SGL acc. */
                     18:         mull2_2();                              /* memory data   / DBL acc. */
                     19:         mull2_3();                              /* register corruption test */
                     20:         mull2_4();                              /* PSL corruption test      */
                     21:         mull2_5();                              /* pipelined entry test     */
                     22:         mull2_6();                              /* pipelined exit test      */
                     23:         asm("jmp *return");                     /* return to the test monitor */
                     24: }
                     25:   
                     26: 
                     27: 
                     28: /************************************************************************
                     29: *
                     30: *        SUBTEST 1 - register addressing / single precsion accumulator
                     31: *
                     32: ************************************************************************/
                     33: mull2_1() 
                     34: {
                     35:         force_loop = FALSE;
                     36:         subtest = 1;
                     37:         for( index = 0; index < max_mull_1_index; index++ ) {
                     38:            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
                     39:            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
                     40:           sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
                     41:            sgl_ld_acc   = 0x12345678;             /* set acc data pattern */
                     42:           sgl_expected = sgl_ld_acc;              /* final Acc expected   */
                     43: /*
                     44:  * If LOOP ON ERROR is set, this is the loop for this subtest.
                     45: */
                     46:            asm("_mull2_1_lp1:");
                     47:            asm("movl _sgl_value_1,r3");         /* move the 1st data to r3 */
                     48:            asm("movl _sgl_value_2,r4");         /* move the 2nd data to r4 */
                     49:            asm("movl _sgl_ld_acc,r5");         /* move the acc data to r5 */
                     50:            asm("ldf r5");                      /* load the acc            */
                     51:           asm("mull2 r3,r4");                  /* do the multiply         */
                     52:            asm("nop");
                     53:            asm("stf _sgl_st_acc");             /* save the acc            */
                     54:            if( force_loop )
                     55:                 asm("brb _mull2_1_lp1");;
                     56:            asm("movl r4,_sgl_value_3");
                     57:           if( sgl_expected != sgl_st_acc )  {   /* COMPARE the values      */
                     58:               errcnt++;                         /* bump the error count    */
                     59:               if ( prt_error ) {
                     60:                   print_mull2_error("(Reg. Data) -THE ACC WAS MODIFIED");
                     61:                  writes("initial Acc = ");
                     62:                   write32h( sgl_ld_acc );
                     63:                   writes(",     final Acc = ");
                     64:                   write32h( sgl_st_acc );
                     65:                  writes("\n                         expected Acc = ");
                     66:                   write32h( sgl_expected );
                     67:                   writec('\n');
                     68:               }
                     69:              if ( halt_flg )                   /* halt on error?          */
                     70:                   mull2_halt( 4 );
                     71:               if ( loop_on_err ) {
                     72:                   force_loop = TRUE;            /* set the force loop flag */
                     73:                   asm("jmp _mull2_1_lp1");      /* and loop                */
                     74:               }  /* end of loop-on-error */
                     75:            } /* end of acc corr error */
                     76:           if( sgl_value_4 != sgl_value_3 )    /* COMPARE the values      */
                     77:            {
                     78:               errcnt++;                         /* bump the error count    */
                     79:               if ( prt_error ) {
                     80:                   print_mull2_error("(Reg. Data) -BAD MULTIPLY RESULT");
                     81:               }
                     82:              if ( halt_flg )                   /* halt on error?          */
                     83:                   mull2_halt( 1 );
                     84:               if ( loop_on_err ) {
                     85:                   force_loop = TRUE;            /* set the force loop flag */
                     86:                   asm("jmp _mull2_1_lp1");      /* and loop                */
                     87:               }  /* end of loop-on-error */
                     88:            } /* end of multiply error */
                     89:         }
                     90: }  /* end of subtest 1 */
                     91:   
                     92: 
                     93: 
                     94: /************************************************************************
                     95: *
                     96: *        SUBTEST 2 - cache addressing / double precsion accumulator
                     97: *
                     98: ************************************************************************/
                     99: mull2_2() 
                    100: {
                    101:         force_loop = FALSE;
                    102:         subtest = 2;
                    103:         for( index = 0; index < max_mull_1_index; index++ ) {
                    104:            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
                    105:            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
                    106:           sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
                    107:            dbl_ld_acc.m = 0x12345678;             /* set acc data pattern */
                    108:            dbl_ld_acc.l = 0x9abcdef0;
                    109:           dbl_expected.m = dbl_ld_acc.m;          /* final Acc expected   */
                    110:           dbl_expected.l = dbl_ld_acc.l;
                    111: /*
                    112:  * If LOOP ON ERROR is set, this is the loop for this subtest.
                    113: */
                    114:            asm("_mull2_2_lp1:");
                    115:           sgl_value_3 = sgl_value_2;           /* set initial op 2 data   */
                    116:            asm("ldd _dbl_ld_acc");             /* load the acc            */
                    117:           asm("mull2 _sgl_value_1,_sgl_value_3"); /* multiply the integers */
                    118:            asm("nop");
                    119:            asm("std _dbl_st_acc");             /* save the acc            */
                    120:            if( force_loop )
                    121:                 asm("brb _mull2_2_lp1");;
                    122:           if( (dbl_expected.m != dbl_st_acc.m) ||    /* COMPARE the Acc */
                    123:               (dbl_expected.l != dbl_st_acc.l) )  { 
                    124:               errcnt++;                         /* bump the error count    */
                    125:               if ( prt_error ) {
                    126:                   print_mull2_error("(Memory data) -THE ACC WAS MODIFIED");
                    127:                  writes("initial Acc = ");
                    128:                   write32h( dbl_ld_acc.m );
                    129:                  writec(' ');
                    130:                   write32h( dbl_ld_acc.l );
                    131:                   writes(",     final Acc = ");
                    132:                   write32h( dbl_st_acc.m );
                    133:                  writec(' ');
                    134:                   write32h( dbl_st_acc.l );
                    135:                  writes("\n                                  expected Acc = ");
                    136:                   write32h( dbl_expected.m );
                    137:                  writec(' ');
                    138:                   write32h( dbl_expected.l );
                    139:                   writec('\n');
                    140:               }
                    141:              if ( halt_flg )                   /* halt on error?          */
                    142:                   mull2_halt( 4 );
                    143:               if ( loop_on_err ) {
                    144:                   force_loop = TRUE;            /* set the force loop flag */
                    145:                   asm("jmp _mull2_2_lp1");      /* and loop                */
                    146:               }  /* end of loop-on-error */
                    147:            } /* end of acc corr error */
                    148:           if( sgl_value_4 != sgl_value_3 )    /* COMPARE the values      */
                    149:            {
                    150:               errcnt++;                         /* bump the error count    */
                    151:               if ( prt_error ) {
                    152:                   print_mull2_error("(Memory data) -BAD MULTIPLY RESULT");
                    153:               }
                    154:              if ( halt_flg )                   /* halt on error?          */
                    155:                   mull2_halt( 1 );
                    156:               if ( loop_on_err ) {
                    157:                   force_loop = TRUE;            /* set the force loop flag */
                    158:                   asm("jmp _mull2_2_lp1");      /* and loop                */
                    159:               }  /* end of loop-on-error */
                    160:            } /* end of multiply error */
                    161:         }
                    162: }  /* end of subtest 2 */
                    163:   
                    164: 
                    165: 
                    166: /************************************************************************
                    167: *
                    168: *               SUBTEST 3 - register corruption test
                    169: *
                    170: ************************************************************************/
                    171: mull2_3() 
                    172: {
                    173:         force_loop = FALSE;
                    174:         subtest = 3;
                    175:         fill_reg_buf( load_regs );             /* get pattern for registers */
                    176:        for( index = 0; index < max_mull_1_index; index++ ) {
                    177:            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
                    178:            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
                    179:            sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
                    180: /*
                    181:  * If LOOP ON ERROR is set, this is the loop for this subtest.
                    182: */
                    183:            asm("_mull2_3_lp1:");
                    184:           sgl_value_3 = sgl_value_2;           /* set operand 2        */
                    185:            asm("loadr $0x1fff,_load_regs");    /* load regs 0 - 12     */
                    186:           asm("mull2 _sgl_value_1,_sgl_value_3");/* do the multiply    */
                    187:            asm("nop");
                    188:            asm("storer $0x1fff,_store_regs");  /* store regs 0 - 12    */
                    189:           if( force_loop )
                    190:                 asm("brb _mull2_3_lp1");
                    191: /*
                    192:  * Now check the result
                    193: */
                    194:         index2 = 0;
                    195:         while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
                    196:              index2++;                          /* check reg values        */
                    197:         if( index2 < 13 ) {                     /* error if index2 < 13    */
                    198:               errcnt++;                         /* bump the error count    */
                    199:              if ( prt_error ) {
                    200:                   print_mull2_error(" -A REGISTER WAS MODIFIED");
                    201:                   writes("register ");
                    202:                  writeh( index2 );
                    203:                  writes(" = ");
                    204:                  write32h( store_regs[index2] );
                    205:                  writes(",  should be = ");
                    206:                   write32h( load_regs[index2] );
                    207:                   writec('\n');
                    208:               }
                    209:              if ( halt_flg )                   /* halt on error?          */
                    210:                   mull2_halt( 2 );
                    211:               if ( loop_on_err ) {
                    212:                   force_loop = TRUE;            /* set the force loop flag */
                    213:                   asm("jmp _mull2_3_lp1");      /* and loop                */
                    214:               };  /* end of loop-on-error */
                    215:            } /* end of multiply error */
                    216:         }
                    217: }  /* end of subtest 3 */
                    218:   
                    219: 
                    220: 
                    221: /************************************************************************
                    222: *
                    223: *               SUBTEST 4 - PSL corruption test
                    224: *
                    225: ************************************************************************/
                    226: mull2_4() 
                    227: {
                    228:         force_loop = FALSE;
                    229:         subtest = 4;
                    230:        status_index = 0;
                    231:        for( index = 0; index < max_mull_1_index; index++ ) {
                    232:            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
                    233:            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
                    234:            sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
                    235:            sgl_dummy1   = status_array[status_index]; /* status = +, -, 0 */
                    236: /*
                    237:  * If LOOP ON ERROR is set, this is the loop for this subtest.
                    238: */
                    239:            asm("_mull2_4_lp1:");
                    240:           sgl_value_3 = sgl_value_2;           /* set operand 2        */
                    241:            asm("tstl _sgl_dummy1");
                    242:           asm("movpsl _init_psl");             /* save the initial PSL */
                    243:           asm("mull2 _sgl_value_1,_sgl_value_3");/* do the multiply    */
                    244:           asm("movpsl _psl_val");              /* save the final PSL   */
                    245:           if( force_loop )
                    246:                 asm("brb _mull2_4_lp1");
                    247: /*
                    248:  * Now check the result
                    249: */
                    250:         exp_psl = init_psl & 0xffffff3;                /* strip off the PSL status */
                    251:        if( sgl_value_4 < 0 )                   /* check the MULL result */
                    252:           exp_psl |= PSL_N;                    /* set the NEGATIVE bit */
                    253:        if( !sgl_value_4 )
                    254:           exp_psl |= PSL_Z;                    /* set the ZERO bit */
                    255:         if( psl_val != exp_psl ) {             /* was the final PSL correct */
                    256:               errcnt++;                         /* bump the error count    */
                    257:              if ( prt_error ) {
                    258:                   print_mull2_error(" -INCORRECT FINAL PSL");
                    259:                   writes("initial PSL = ");
                    260:                  write32h( init_psl );
                    261:                  writes(",  final PSL = ");
                    262:                  write32h( psl_val );
                    263:                  writes(",  expected PSL = ");
                    264:                  write32h( exp_psl );
                    265:                   writec('\n');
                    266:               }
                    267:              if ( halt_flg )                   /* halt on error?          */
                    268:                   mull2_halt( 3 );
                    269:               if ( loop_on_err ) {
                    270:                   force_loop = TRUE;            /* set the force loop flag */
                    271:                   asm("jmp _mull2_4_lp1");      /* and loop                */
                    272:               };  /* end of loop-on-error */
                    273:            }; /* end of error */
                    274:           if( ++status_index >= 3 )
                    275:              status_index = 0;
                    276:         }
                    277: }  /* end of subtest 4 */
                    278:   
                    279: 
                    280: 
                    281: /************************************************************************
                    282: *
                    283: *        SUBTEST 5 - Pipelined Entry test
                    284: *
                    285: ************************************************************************/
                    286: mull2_5() 
                    287: {
                    288:         force_loop = FALSE;
                    289:         subtest = 5;
                    290:         for( index = 0; index < max_mull_1_index; index++ ) {
                    291:            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
                    292:            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
                    293:           sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
                    294:            sgl_ld_acc   = 0x12345678;             /* set acc data pattern */
                    295:           sgl_expected = sgl_ld_acc;              /* final Acc expected   */
                    296:           sgl_value_10 = 0x40800000;              /* floating "1.0"       */
                    297: /*
                    298:  * If LOOP ON ERROR is set, this is the loop for this subtest.
                    299: */
                    300:            asm("_mull2_5_lp1:");
                    301:           sgl_value_3 = sgl_value_2;           /* set integer operand 2   */
                    302:            asm("ldf _sgl_ld_acc");             /* load the acc            */
                    303:           asm("mulf _sgl_value_10");           /* do a floating multiply  */
                    304:           asm("mull2 _sgl_value_1,_sgl_value_3"); /* do the int. multiply */
                    305:            asm("nop");
                    306:           asm("stf _sgl_st_acc");              /* save the acc            */
                    307:            if( force_loop )
                    308:                 asm("brb _mull2_5_lp1");;
                    309:           if( sgl_expected != sgl_st_acc )  {   /* COMPARE the values      */
                    310:               errcnt++;                         /* bump the error count    */
                    311:               if ( prt_error ) {
                    312:                   print_mull2_error("(Piped Entry) -BAD FINAL ACC");
                    313:                  writes("initial Acc = ");
                    314:                   write32h( sgl_ld_acc );
                    315:                   writes(",     final Acc = ");
                    316:                   write32h( sgl_st_acc );
                    317:                  writes("\nFPP operand = ");
                    318:                  write32h( sgl_value_10 );
                    319:                  writes(",  expected Acc = ");
                    320:                   write32h( sgl_expected );
                    321:                   writec('\n');
                    322:               }
                    323:              if ( halt_flg )                   /* halt on error?          */
                    324:                   mull2_halt( 5 );
                    325:               if ( loop_on_err ) {
                    326:                   force_loop = TRUE;            /* set the force loop flag */
                    327:                   asm("jmp _mull2_5_lp1");      /* and loop                */
                    328:               }  /* end of loop-on-error */
                    329:            } /* end of acc corr error */
                    330:           if( sgl_value_4 != sgl_value_3 )    /* COMPARE the values      */
                    331:            {
                    332:               errcnt++;                         /* bump the error count    */
                    333:               if ( prt_error ) {
                    334:                   print_mull2_error("(Piped Entry) -BAD MULTIPLY RESULT");
                    335:               }
                    336:              if ( halt_flg )                   /* halt on error?          */
                    337:                   mull2_halt( 1 );
                    338:               if ( loop_on_err ) {
                    339:                   force_loop = TRUE;            /* set the force loop flag */
                    340:                   asm("jmp _mull2_5_lp1");      /* and loop                */
                    341:               }  /* end of loop-on-error */
                    342:            } /* end of multiply error */
                    343:         }
                    344: }  /* end of subtest 5 */
                    345:   
                    346: 
                    347: 
                    348: /************************************************************************
                    349: *
                    350: *        SUBTEST 6 - Pipelined Exit test
                    351: *
                    352: ************************************************************************/
                    353: mull2_6() 
                    354: {
                    355:         force_loop = FALSE;
                    356:         subtest = 6;
                    357:         for( index = 0; index < max_mull_1_index; index++ ) {
                    358:            sgl_value_1  = mull_1_data[index].op_1; /* get operand 1        */
                    359:            sgl_value_2  = mull_1_data[index].op_2; /* get operand 2        */
                    360:           sgl_value_4  = mull_1_data[index].exp;  /* get expected results */
                    361:           sgl_ld_acc   = 0x40800000;              /* floating "1.0"       */
                    362:            sgl_value_10 = 0x12345678;             /* set acc data pattern */
                    363:           sgl_expected = sgl_value_10;            /* final Acc expected   */
                    364: /*
                    365:  * If LOOP ON ERROR is set, this is the loop for this subtest.
                    366: */
                    367:            asm("_mull2_6_lp1:");
                    368:           sgl_value_3 = sgl_value_2;           /* set integer operand 2   */
                    369:            asm("ldf _sgl_ld_acc");             /* load the acc            */
                    370:           asm("mull2 _sgl_value_1,_sgl_value_3"); /* do the int. multiply */
                    371:           asm("mulf _sgl_value_10");           /* do a floating multiply  */
                    372:            asm("stf _sgl_st_acc");             /* save the acc            */
                    373:            if( force_loop )
                    374:                 asm("brb _mull2_6_lp1");;
                    375:           if( sgl_expected != sgl_st_acc )  {   /* COMPARE the values      */
                    376:               errcnt++;                         /* bump the error count    */
                    377:               if ( prt_error ) {
                    378:                   print_mull2_error("(Piped Exit) -BAD FINAL ACC");
                    379:                  writes("initial Acc = ");
                    380:                   write32h( sgl_ld_acc );
                    381:                   writes(",     final Acc = ");
                    382:                   write32h( sgl_st_acc );
                    383:                  writes("\nFPP operand = ");
                    384:                  write32h( sgl_value_10 );
                    385:                  writes(",  expected Acc = ");
                    386:                   write32h( sgl_expected );
                    387:                   writec('\n');
                    388:               }
                    389:              if ( halt_flg )                   /* halt on error?          */
                    390:                   mull2_halt( 5 );
                    391:               if ( loop_on_err ) {
                    392:                   force_loop = TRUE;            /* set the force loop flag */
                    393:                   asm("jmp _mull2_6_lp1");      /* and loop                */
                    394:               }  /* end of loop-on-error */
                    395:            } /* end of acc corr error */
                    396:           if( sgl_value_4 != sgl_value_3 )    /* COMPARE the values      */
                    397:            {
                    398:               errcnt++;                         /* bump the error count    */
                    399:               if ( prt_error ) {
                    400:                   print_mull2_error("(Piped Exit) -BAD MULTIPLY RESULT");
                    401:               }
                    402:              if ( halt_flg )                   /* halt on error?          */
                    403:                   mull2_halt( 1 );
                    404:               if ( loop_on_err ) {
                    405:                   force_loop = TRUE;            /* set the force loop flag */
                    406:                   asm("jmp _mull2_6_lp1");      /* and loop                */
                    407:               }  /* end of loop-on-error */
                    408:            } /* end of multiply error */
                    409:         }
                    410: }  /* end of subtest 6 */
                    411:   
                    412: 
                    413: 
                    414: /*****************************************************************************
                    415: *
                    416: *               Print an error message of the form:
                    417: *
                    418: *  cycle: xx  MULL2 test xx, subtest xx  <"your message here">
                    419: *    operand 1 = xxxxxxxx,        result = xxxxxxxx,   data index = xx
                    420: *    operand 2 = xxxxxxxx,      expected = xxxxxxxx
                    421: *
                    422: *****************************************************************************/
                    423: print_mull2_error(msg)
                    424: char *msg;                                      /* addressing mode msg */
                    425: {
                    426:                  writes(" \n");             /* start a new print line   */
                    427:                  writes("cycle: ");
                    428:                  writed( cycle );
                    429:                  writes("  MULL2 test ");
                    430:                  writed( test_no );
                    431:                 writes(", subtest ");
                    432:                 writed( subtest );
                    433:                 writes("  ");
                    434:                 writes( msg );
                    435:                  writes("\n  operand 1 = ");
                    436:                 write32h( sgl_value_1 );
                    437:                 writes(",        result = ");
                    438:                 write32h( sgl_value_3 );
                    439:                 writes(",   data index = ");
                    440:                 writed( index );
                    441:                  writes("\n  operand 2 = ");
                    442:                 write32h( sgl_value_2 );
                    443:                 writes(",      expected = ");
                    444:                 write32h( sgl_value_4 );
                    445:                 writec('\n');
                    446: }
                    447:   
                    448: 
                    449: 
                    450: /***************************************************************************
                    451: *
                    452: *               HALT ON AN ERROR
                    453: *
                    454: ***************************************************************************/
                    455: mull2_halt( code )
                    456: int code;                                      /* error code to use */
                    457: {
                    458:        sgl_dummy1 = code;                      /* save the error code    */
                    459:         asm("movl _test_no,r0");               /* r0  = test number      */
                    460:         asm("movl _subtest,r1");               /* r1  = subtest number   */
                    461:         asm("movl _sgl_dummy1,r2");            /* r2  = error code       */
                    462:         asm("movl _cycle,r3");                 /* r3  = cycle count      */
                    463:         asm("movl _sgl_value_1,r4");           /* r4  = operand 1        */
                    464:         asm("movl _sgl_value_2,r5");           /* r5  = operand 2        */
                    465:         asm("movl _sgl_value_3,r6");           /* r6  = MULL2's result   */
                    466:        if( code == 1 ) {
                    467:             asm("movl _sgl_value_4,r7");       /* r7  = expected result  */
                    468:             asm("movl _index,r8");;            /* r8  = data index       */
                    469:        }
                    470:         else if( code == 2 )  {  /* corrupted register */
                    471:             sgl_dummy1 = store_regs[index2];   /* get the actual reg data */
                    472:             sgl_dummy2 = load_regs[index2];    /* get the data expected  */
                    473:             asm("movl _index2,r7");            /* r7  = register number  */
                    474:             asm("movl _sgl_dummy1,r8");        /* r8  = final reg value  */
                    475:             asm("movl _sgl_dummy2,r9");        /* r9  = expected value   */
                    476:        }
                    477:         else if( code == 3 ) {  /* corrupted PSL */
                    478:              asm("movl _init_psl,r7");          /* r7  = initial PSL     */
                    479:              asm("movl _psl_val,r8");           /* r8  = final PSL       */
                    480:              asm("movl _exp_psl,r9");           /* r9  = expected PSL    */
                    481:         }
                    482:         else if( code == 4 ) {  /* corrupted Acc */
                    483:             if( subtest == 1 ) {       /* single precision */
                    484:                 dbl_ld_acc.m = sgl_ld_acc;
                    485:                 dbl_ld_acc.l = 0;
                    486:                 dbl_st_acc.m = sgl_st_acc;
                    487:                 dbl_st_acc.l = 0;
                    488:                 dbl_expected.m = sgl_expected;
                    489:                 dbl_expected.l = 0;
                    490:             };
                    491:             asm("movl _index,r7");             /* r7  = data index       */
                    492:             asm("movl _dbl_ld_acc,r8");        /* r8  = MS initial Acc.  */
                    493:             asm("movl _dbl_ld_acc+4,r9");      /* r9  = LS initial Acc.  */
                    494:             asm("movl _dbl_st_acc,r10");       /* r10 = MS final Acc.    */
                    495:             asm("movl _dbl_st_acc+4,r11");     /* r11 = LS final Acc.    */
                    496:             asm("movl _dbl_expected,r12");     /* r12 = MS expected Acc. */
                    497:             asm("movl _dbl_expected+4,r13");   /* r13 = LS expected Acc. */
                    498:        }
                    499:         else if( code == 5 ) {  /* bad final Acc */
                    500:             asm("movl _index,r7");             /* r7  = data index       */
                    501:             asm("movl _sgl_ld_acc,r8");        /* r8  = initial Acc.     */
                    502:             asm("movl _sgl_value_10,r9");      /* r9  = fpp operand      */
                    503:             asm("movl _sgl_st_acc,r10");       /* r10 = final Acc.       */
                    504:             asm("movl _sgl_expected,r11");     /* r11 = expected Acc.    */
                    505:        };
                    506:        asm("halt");                   /* HALT ...                */
                    507: }

unix.superglobalmegacorp.com

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