Annotation of cci/d/entry/convert.c, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: /*             constants definition for convert instruction            */
                      4: /*                                                                     */
                      5: /*                                                                     */
                      6: extern long scoplp;
                      7: extern long force_lp;
                      8: 
                      9: #define                CVTBW           0x99            /*opcodes               */
                     10: #define                CVTBL           0x89
                     11: #define                CVTWB           0x33
                     12: #define                CVTWL           0x23
                     13: #define                CVTLB           0x6f
                     14: #define                CVTLW           0x7f
                     15: asm(".set PSWMASK,0xf");
                     16: #define                MAX_PATTERNS    4
                     17: 
                     18: #define                IDESTB1         0x1111007f      /*destination           */
                     19:                                                /*initial values        */
                     20: #define                IDESTB2         0x1111aa00      /*for bw,bl             */
                     21: #define                IDESTB3         0x1111aaaa
                     22: #define                IDESTB4         0x1111ffff
                     23: 
                     24: 
                     25: #define                IDESTWL1        0x1111007f      /* wl                   */
                     26: #define                IDESTWL2        0x1111aa00
                     27: #define                IDESTWL3        0x1111aaaa
                     28: #define                IDESTWL4        0x11110000
                     29: 
                     30: 
                     31: #define                IDESTWB1        0x111180ff      /* wb                   */
                     32: #define                IDESTWB2        0x11110000
                     33: #define                IDESTWB3        0x11117f80
                     34: #define                IDESTWB4        0x11110080
                     35: 
                     36: 
                     37: #define                IDESTLW1        0xffff0000      /* lw                   */
                     38: #define                IDESTLW2        0x00008000
                     39: #define                IDESTLW3        0x8000ffff
                     40: #define                IDESTLW4        0x00007fff
                     41: 
                     42: 
                     43: #define                IDESTLB1        0xffffff00      /* lb                   */
                     44: #define                IDESTLB2        0x00000080
                     45: #define                IDESTLB3        0x800000ff
                     46: #define                IDESTLB4        0x0000007f
                     47: 
                     48: 
                     49: #define                SB1             0x11110080      /*source values         */
                     50: #define                SB2             0x1111aa7f      /* bw, bl               */
                     51: #define                SB3             0x1111aa00
                     52: #define                SB4             0x11110000
                     53: 
                     54: #define                SWL1            0x11118000      /* wl                   */
                     55: #define                SWL2            0x11117fff
                     56: #define                SWL3            0x11110000
                     57: #define                SWL4            0x11111111
                     58: 
                     59: #define                SWB1            0x11118000      /* wb                   */
                     60: #define                SWB2            0x111100ff
                     61: #define                SWB3            0x11117f7f
                     62: #define                SWB4            0x1111007f
                     63: 
                     64: #define                SLW1            0xffffffff      /*lw                    */
                     65: #define                SLW2            0x00007fff
                     66: #define                SLW3            0x80000000
                     67: #define                SLW4            0x00008000
                     68: 
                     69: #define                SLB1            0xffffffff      /* lb                   */
                     70: #define                SLB2            0x0000007f
                     71: #define                SLB3            0x80000000
                     72: #define                SLB4            0x00000080
                     73: 
                     74: 
                     75: #define                EXPBW1          0x1111ff80      /*expected destination  */
                     76: #define                EXPBW2          0x1111007f      /* bw                   */
                     77: #define                EXPBW3          0x11110000
                     78: #define                EXPBW4          0x11110000
                     79: 
                     80: #define                EXPBL1          0xffffff80      /* bl                   */
                     81: #define                EXPBL2          0x0000007f
                     82: #define                EXPBL3          0x00000000
                     83: #define                EXPBL4          0x00000000
                     84: 
                     85: #define                EXPWL1          0xffff8000      /* wl                   */
                     86: #define                EXPWL2          0x00007fff
                     87: #define                EXPWL3          0
                     88: #define                EXPWL4          0x00001111
                     89: 
                     90: #define                EXPWB1          0x11118000      /* wb                   */
                     91: #define                EXPWB2          0x111100ff
                     92: #define                EXPWB3          0x11117f7f
                     93: #define                EXPWB4          0x1111007f
                     94: 
                     95: 
                     96: #define                FLG1            7               /*initial flags         */
                     97: #define                FLG2            8               /* bw, bl, wl           */
                     98: #define                FLG3            0
                     99: #define                FLG4            0
                    100: 
                    101: #define                FLGW1           9               /* wb                   */
                    102: #define                FLGW2           5
                    103: #define                FLGW3           15
                    104: #define                FLGW4           15
                    105: 
                    106: #define                FLGL1           7               /* lw, lb               */
                    107: #define                FLGL2           15
                    108: #define                FLGL3           0
                    109: #define                FLGL4           0
                    110: 
                    111: 
                    112: 
                    113: #define                EFLG1           9               /*expected flags        */
                    114: #define                EFLG2           1               /* bw, bl               */
                    115: #define                EFLG3           5
                    116: #define                EFLG4           5
                    117: 
                    118: #define                EFLGWL1         9               /* wl                   */
                    119: #define                EFLGWL2         1
                    120: #define                EFLGWL3         5
                    121: #define                EFLGWL4         1
                    122: 
                    123: #define                EFLGWB1         11              /* wb                   */
                    124: #define                EFLGWB2         3
                    125: #define                EFLGWB3         3
                    126: #define                EFLGWB4         1
                    127: 
                    128: #define                EFLGL1          9               /* lw, lb               */
                    129: #define                EFLGL2          1
                    130: #define                EFLGL3          11      
                    131: #define                EFLGL4          3
                    132: 
                    133: 
                    134: 
                    135: #define                ERROR1                  1         /*error definitions   */
                    136: #define                ERROR2                  2
                    137: #define                ERROR3                  3
                    138: #define                ERROR4                  4
                    139: #define                ERROR5                  5
                    140:                                                  /*error messages      */
                    141: #define                EM1     "destination not equal to expected \n"
                    142: #define                EM2     "source altered by the instruction \n"
                    143: #define                EM3     "flags not equal to expected \n"
                    144: 
                    145: 
                    146: /*             standard definition file                                */
                    147: /*             for 'C' diagnostic porgrams.                            */
                    148: /*                                                                     */
                    149: /*                                                                     */
                    150: #define                HIGH            31
                    151: #define                IPL             18
                    152: #define                PSWMASK         255
                    153: #define                T               16
                    154: #define                IV              32
                    155: #define                FU              64
                    156: #define                DV              128
                    157: #define                FLAGS           0x0000000f
                    158: 
                    159: 
                    160: 
                    161: 
                    162: 
                    163: 
                    164: /*     Global variables for convert test                               */
                    165: /*                                                                     */
                    166: /*                                                                     */
                    167: 
                    168: static short   index = 0;
                    169: static long    dest = 0;       /*destination location                  */
                    170: static long    source = 0;     /*source location                       */
                    171: static long    psw;            /*processor status word                 */
                    172: static long    error_count = 0;
                    173: 
                    174:                                /*initial flag values                   */
                    175: static long    flag_valueb[MAX_PATTERNS] = {FLG1,FLG2,FLG3,FLG4};
                    176: static long    flag_valuewl[MAX_PATTERNS] = {FLG1,FLG2,FLG3,FLG4};
                    177: static long    flag_valuewb[MAX_PATTERNS] = {FLGW1,FLGW2,FLGW3,FLGW4};
                    178: static long    flag_valuel[MAX_PATTERNS] = {FLGL1,FLGL2,FLGL3,FLGL4};
                    179: 
                    180: 
                    181:                                /*expected destination                  */
                    182: static long    expbw[MAX_PATTERNS] = {EXPBW1,EXPBW2,EXPBW3,EXPBW4};
                    183: static long    expbl[MAX_PATTERNS] =  {EXPBL1,EXPBL2,EXPBL3,EXPBL4};
                    184: static long    expwl[MAX_PATTERNS] = {EXPWL1,EXPWL2,EXPWL3,EXPWL4};
                    185: static long    expwb[MAX_PATTERNS] = {EXPWB1,EXPWB2,EXPWB3,EXPWB4};
                    186: static long    explw[MAX_PATTERNS] = {SLW1,SLW2,SLW3,SLW4};
                    187: static long    explb[MAX_PATTERNS] = {SLB1,SLB2,SLB3,SLB4};
                    188: 
                    189: 
                    190:                                /*expected psw                          */
                    191: static long    exp_pswb[MAX_PATTERNS] = {EFLG1,EFLG2,EFLG3,EFLG4};
                    192: static long    exp_pswwl[MAX_PATTERNS] = {EFLGWL1,EFLGWL2,EFLGWL3,EFLGWL4};
                    193: static long    exp_pswwb[MAX_PATTERNS] = {EFLGWB1,EFLGWB2,EFLGWB3,EFLGWB4};
                    194: static long    exp_pswl[MAX_PATTERNS] = {EFLGL1,EFLGL2,EFLGL3,EFLGL4};
                    195: 
                    196:                                
                    197:                                /*source values                         */
                    198: static long    sourceb[MAX_PATTERNS] = {SB1,SB2,SB3,SB4};
                    199: static long    sourcewl[MAX_PATTERNS] = {SWL1,SWL2,SWL3,SWL4};
                    200: static long    sourcewb[MAX_PATTERNS] = {SWB1,SWB2,SWB3,SWB4};
                    201: static long    sourcelw[MAX_PATTERNS] = {SLW1,SLW2,SLW3,SLW4};
                    202: static long    sourcelb[MAX_PATTERNS] = {SLB1,SLB2,SLB3,SLB4};
                    203: 
                    204: 
                    205:                                /*initial destination values            */
                    206: static long    destb[MAX_PATTERNS] = {IDESTB1,IDESTB2,IDESTB3,IDESTB4};
                    207: static long    destwl[MAX_PATTERNS] = {IDESTWL1,IDESTWL2,IDESTWL3,IDESTWL4};
                    208: static long    destwb[MAX_PATTERNS] = {IDESTWB1,IDESTWB2,IDESTWB3,IDESTWB4};
                    209: static long    destlw[MAX_PATTERNS] = {IDESTLW1,IDESTLW2,IDESTLW3,IDESTLW4};
                    210: static long    destlb[MAX_PATTERNS] = {IDESTLB1,IDESTLB2,IDESTLB3,IDESTLB4};
                    211: 
                    212: static char *tst_name;
                    213: convert()
                    214: {
                    215:        asm("movl       $2,_no_opr");
                    216:        tst_name = " ** CVTLB ** \n";
                    217:        cvtlb();
                    218:        tst_name = " ** CVTLW ** \n";
                    219:        cvtlw();
                    220:        tst_name = " ** CVTBL ** \n";
                    221:        cvtbl();
                    222:        tst_name = " ** CVTWL ** \n";
                    223:        cvtwl();                /* convert word to long */
                    224:        tst_name = " ** CVTWB ** \n";
                    225:        cvtwb();                /* convert word to byte */
                    226:        tst_name = " ** CVTBW ** \n";
                    227:        cvtbw();                /* convert byte to word */
                    228:        asm("jmp *return");
                    229: }
                    230: 
                    231: static long *p_destwb;
                    232: static long *p_destb;
                    233: static long *p_destlb;
                    234: static long *p_destlw;
                    235: static long *p_destwl;
                    236: static long *p_exp_pswb;
                    237: static long *p_exp_pswl;
                    238: static long *p_exp_pswwb;
                    239: static long *p_exp_pswwl;
                    240: static long *p_expbl;
                    241: static long *p_expbw;
                    242: static long *p_explb;
                    243: static long *p_explw;
                    244: static long *p_expwb;
                    245: static long *p_expwl;
                    246: static long *p_sourceb;
                    247: static long *p_sourcelb;
                    248: static long *p_sourcelw;
                    249: static long *p_sourcewb;
                    250: static long *p_sourcewl;
                    251: 
                    252: static init_ptr()
                    253: {
                    254: p_destwb = destwb;
                    255: p_destb = destb;
                    256: p_destlb = destlb;
                    257: p_destlw = destlw;
                    258: p_destwl = destwl;
                    259: p_exp_pswb = exp_pswb;
                    260: p_exp_pswl = exp_pswl;
                    261: p_exp_pswwb = exp_pswwb;
                    262: p_exp_pswwl = exp_pswwl;
                    263: p_expbl = expbl;
                    264: p_expbw = expbw;
                    265: p_explb = explb;
                    266: p_explw = explw;
                    267: p_expwb = expwb;
                    268: p_expwl = expwl;
                    269: p_sourceb = sourceb;
                    270: p_sourcelb = sourcelb;
                    271: p_sourcelw = sourcelw;
                    272: p_sourcewb = sourcewb;
                    273: p_sourcewl = sourcewl;
                    274: }
                    275: 
                    276: static bump_ptr()
                    277: {
                    278: p_destwb++;
                    279: p_destb++;
                    280: p_destlb++;
                    281: p_destlw++;
                    282: p_destwl++;
                    283: p_exp_pswb++;
                    284: p_exp_pswl++;
                    285: p_exp_pswwb++;
                    286: p_exp_pswwl++;
                    287: p_expbl++;
                    288: p_expbw++;
                    289: p_explb++;
                    290: p_explw++;
                    291: p_expwb++;
                    292: p_expwl++;
                    293: p_sourceb++;
                    294: p_sourcelb++;
                    295: p_sourcelw++;
                    296: p_sourcewb++;
                    297: p_sourcewl++;
                    298: }
                    299: 
                    300: static cvtwb()                 /* convert word to byte test */
                    301: {
                    302:    asm("bicpsw $PSWMASK");             /*psw = 0*/
                    303:       for (init_ptr(), index = 0; index < MAX_PATTERNS; bump_ptr(), index++)
                    304:          {
                    305:            t_cvtwb ();
                    306:           t_cvtwb1();          /*one more test where                   */
                    307:                                /* dest address = source address        */
                    308:           }
                    309: }      
                    310: 
                    311: 
                    312: static t_cvtwb()               /*single test called by main test*/
                    313: {
                    314:        for ( ; ; )
                    315:          { 
                    316:           setjmp();
                    317:           asm("c1:     movab   c1,_stpc");
                    318:           asm("movl    $1,_subtst");
                    319:           dest = *p_destwb;    /*initialize dest.,source & psw */
                    320:           source = *p_sourcewb;
                    321:           asm("movw _index,r10");
                    322:           asm("bicpsw  $PSWMASK");
                    323:           asm("bispsw  _flag_valuewb[r10]");
                    324:                                /*execute cvt instruction               */
                    325:           asm("cvtwb   _source+2,_dest+3"); /* memory to memory */
                    326:           asm("movpsl  _psw"); /*save psw                              */
                    327:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    328:           if (dest != *p_expwb)
                    329:                {
                    330:                asm("movl       $1,_ercode");
                    331:                if (scoplp) longjmp();
                    332:                error(dest,*p_expwb,source,*p_destwb,*p_expwb,dest); 
                    333:                }
                    334:           if (source != *p_sourcewb)
                    335:                {
                    336:                asm("movl       $3,_ercode");
                    337:                if (scoplp) longjmp();
                    338:                error(source,*p_sourcewb,source,*p_destwb); 
                    339:                }
                    340:           if (psw != *p_exp_pswwb)
                    341:                {
                    342:                asm("movl       $2,_ercode");
                    343:                if (scoplp) longjmp();
                    344:                error(psw,*p_exp_pswwb,source,dest); 
                    345:                }
                    346:                if (force_lp) longjmp();
                    347:           else
                    348:                return(0);      /*no error exit*/ 
                    349:           }    
                    350: }
                    351: 
                    352: 
                    353: /*single test 1 called by main test*/
                    354: /*source location = destination location*/
                    355: static t_cvtwb1()
                    356: {
                    357: 
                    358:        for ( ; ; )
                    359:          { 
                    360:                                /*initialize  source, & psw     */
                    361:           setjmp();
                    362:           asm("c2:     movab   c2,_stpc");
                    363:           asm("movl    $2,_subtst");
                    364:           source = *p_sourcewb;
                    365:           asm("movw    _index,r10");
                    366:           asm("movw    _source+2,r5"); /* load first operand register */
                    367:           asm("movl    _source,r6"); /* load first operand register */
                    368:           asm("bicpsw  $PSWMASK");
                    369:           asm("bispsw  _flag_valuel[r10]");
                    370:                                /*execute cvt instruction               */
                    371:           asm("cvtwb   r5,r6"); /* register to register */
                    372:           asm("movpsl  _psw"); /*save psw                              */
                    373:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    374:           source = *p_expwb;
                    375:           if (source != *p_expwb)
                    376:                {
                    377:                asm("movl       $1,_ercode");
                    378:                if (scoplp) longjmp();
                    379:                error(source,*p_expwb,*p_sourcewb,*p_sourcewb); 
                    380:                }
                    381:           if (psw != *p_exp_pswwb)
                    382:                {
                    383:                asm("movl       $1,_ercode");
                    384:                if (scoplp) longjmp();
                    385:                error(psw,*p_exp_pswwb,*p_sourcewb,*p_sourcewb); 
                    386:                }
                    387:                if (force_lp) longjmp();
                    388:           else
                    389:                return(0);      /*no error exit*/ 
                    390:           }
                    391: }
                    392: 
                    393: 
                    394: 
                    395: static cvtwl()                 /* convert word to long test */
                    396: {
                    397:    asm("bicpsw $PSWMASK");             /*psw = 0*/
                    398:       for (init_ptr(), index = 0; index < MAX_PATTERNS; bump_ptr(), index++)
                    399:          {
                    400:            t_cvtwl ();
                    401:           t_cvtwl1();          /*one more test where                   */
                    402:                                /* dest address = source address        */
                    403:           }
                    404: }
                    405: 
                    406: static t_cvtwl()               /*single test called by main test*/
                    407: {
                    408:        for ( ; ; )
                    409:          { 
                    410:           setjmp();
                    411:           asm("c3:     movab   c3,_stpc");
                    412:           asm("movl    $3,_subtst");
                    413:           dest = *p_destwl;    /*initialize dest., source, & psw */
                    414:           source = *p_sourcewl;
                    415:           asm("movw _index,r10");
                    416:           asm("bicpsw  $PSWMASK");
                    417:           asm("bispsw  _flag_valueb[r10]");
                    418:                                /*execute cvt instruction               */
                    419:           asm("cvtwl   _source+2,_dest"); /* memory to memory */
                    420:           asm("movpsl  _psw"); /*save psw                              */
                    421:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    422:           if (dest != *p_expwl)
                    423:                {
                    424:                asm("movl       $1,_ercode");
                    425:                if (scoplp) longjmp();
                    426:                error(dest,*p_destwl,source,*p_destwl); 
                    427:                }
                    428:           if (source != *p_sourcewl)
                    429:                {
                    430:                asm("movl       $3,_ercode");
                    431:                if (scoplp) longjmp();
                    432:                error(source,*p_sourcewl,source,*p_destwl); 
                    433:                }
                    434:           if (psw != *p_exp_pswwl)
                    435:                {
                    436:                asm("movl       $2,_ercode");
                    437:                if (scoplp) longjmp();
                    438:                error(psw,*p_exp_pswwl,source,*p_destwl); 
                    439:                }
                    440:                if (force_lp) longjmp();
                    441:           else
                    442:                return(0);      /*no error exit*/ 
                    443:           }    
                    444: }
                    445: 
                    446: 
                    447: 
                    448: /*single test 1 called by main test*/
                    449: /* register to register operation */
                    450: static t_cvtwl1()
                    451: {
                    452: 
                    453:        for ( ; ; )
                    454:          { 
                    455:                                /*initialize  source, & psw     */
                    456:           setjmp();
                    457:           asm("c4:     movab   c4,_stpc");
                    458:           asm("movl    $4,_subtst");
                    459:           source = *p_sourcewl;
                    460:           asm("movw    _index,r10");
                    461:           asm("movw    _source+2,r5"); /* load first operand register */
                    462:           asm("movl    _source,r6"); /* load second operand register */
                    463:           asm("bicpsw  $PSWMASK");
                    464:           asm("bispsw  _flag_valueb[r10]");
                    465:                                /*execute cvt instruction               */
                    466:           asm("cvtwl   r5,r6"); /* register to register operation */
                    467:           asm("movpsl  _psw"); /*save psw                              */
                    468:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    469:           asm("movl    r6,_source") /* reload source location */
                    470:           if (source != *p_expwl)
                    471:                {
                    472:                asm("movl       $1,_ercode");
                    473:                if (scoplp) longjmp();
                    474:                error(source,*p_sourcewl,*p_sourcewl,*p_sourcewl); 
                    475:                }
                    476:           if (psw != *p_exp_pswwl)
                    477:                {
                    478:                asm("movl       $2,_ercode");
                    479:                if (scoplp) longjmp();
                    480:                error(psw,*p_exp_pswwl,*p_sourcewl,*p_sourcewl); 
                    481:                }
                    482:                if (force_lp) longjmp();
                    483:           else
                    484:                return(0);      /*no error exit*/ 
                    485:           }    /*end of for loop*/
                    486: }      /*end of test*/
                    487: 
                    488: 
                    489: 
                    490: static cvtbw() /* convert byte to long test */
                    491: 
                    492: {
                    493:    asm("bicpsw $PSWMASK");             /*psw = 0*/
                    494:       for (init_ptr(), index = 0; index < MAX_PATTERNS; bump_ptr(), index++)
                    495:          {
                    496:            t_cvtbw ();
                    497:           t_cvtbw1();          /*one more test where                   */
                    498:                                /* dest address = source address        */
                    499:           }
                    500: }
                    501: 
                    502: static t_cvtbw()               /*single test called by main test*/
                    503: {
                    504:        for ( ; ; )
                    505:          { 
                    506:           setjmp();
                    507:           asm("c5:     movab   c5,_stpc");
                    508:           asm("movl    $5,_subtst");
                    509:           dest = *p_destb;     /*initialize destination, source, & psw */
                    510:           source = *p_sourceb;
                    511:           asm("movw _index,r10");
                    512:           asm("bicpsw  $PSWMASK");
                    513:           asm("bispsw  _flag_valueb[r10]");
                    514:                                /*execute cvt instruction               */
                    515:           asm("cvtbw   _source+3,_dest+2"); /* memory to memory */
                    516:           asm("movpsl  _psw"); /*save psw                              */
                    517:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    518:           if (dest != *p_expbw)
                    519:                {
                    520:                asm("movl       $1,_ercode");
                    521:                if (scoplp) longjmp();
                    522:                error(dest,*p_expbw,source,*p_destb); 
                    523:                }
                    524:           if (source != *p_sourceb)
                    525:                {
                    526:                asm("movl       $3,_ercode");
                    527:                if (scoplp) longjmp();
                    528:                error(source,*p_sourceb,source,*p_destb); 
                    529:                }
                    530:           if (psw != *p_exp_pswb)
                    531:                {
                    532:                asm("movl       $2,_ercode");
                    533:                if (scoplp) longjmp();
                    534:                error(psw,*p_exp_pswb,source,*p_destb); 
                    535:                }
                    536:                if (force_lp) longjmp();
                    537:           else
                    538:                return(0);      /*no error exit*/ 
                    539:           }    
                    540: }
                    541: 
                    542: /*single test 1 called by main test*/
                    543: /*source location = destination location*/
                    544: static t_cvtbw1()
                    545: {
                    546:        for ( ; ; )
                    547:          { 
                    548:                                /*initialize  source, & psw     */
                    549:           setjmp();
                    550:           asm("c6:     movab   c6,_stpc");
                    551:           asm("movl    $6,_subtst");
                    552:           source = *p_sourceb;
                    553:           asm("movb    _source+3,r5"); /* load first operand register */
                    554:           asm("movl    _source,r6"); /* load second operand register */
                    555:           asm("movw    _index,r10");
                    556:           asm("bicpsw  $PSWMASK");
                    557:           asm("bispsw  _flag_valueb[r10]");
                    558:                                /*execute cvt instruction               */
                    559:           asm("cvtbw   _source+3,_source+2"); /* register to register */
                    560:           asm("movpsl  _psw"); /*save psw                              */
                    561:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    562:           if (source != *p_expbw)
                    563:                {
                    564:                asm("movl       $1,_ercode");
                    565:                if (scoplp) longjmp();
                    566:                error(source,*p_expbw,*p_sourceb,*p_sourceb); 
                    567:                }
                    568:           if (psw != *p_exp_pswb)
                    569:                {
                    570:                asm("movl       $2,_ercode");
                    571:                if (scoplp) longjmp();
                    572:                error(psw,*p_exp_pswb,*p_sourceb,*p_sourceb); 
                    573:                }
                    574:                if (force_lp) longjmp();
                    575:           else
                    576:                return(0);      /*no error exit*/ 
                    577:           }    /*end of for loop*/
                    578: }      /*end of test*/
                    579: 
                    580: 
                    581: 
                    582: 
                    583: static cvtlb()                 /* convert long to byte */
                    584: {
                    585:    asm("bicpsw $PSWMASK");             /*psw = 0*/
                    586:       for (init_ptr(), index = 0; index < MAX_PATTERNS; bump_ptr(), index++)
                    587:          {
                    588:            t_cvtlb ();
                    589:           t_cvtlb1();          /*one more test where                   */
                    590:                                /* dest address = source address        */
                    591:           }    
                    592: }
                    593: 
                    594: static t_cvtlb()               /*single test called by main test*/
                    595: {
                    596: 
                    597:        for ( ; ; )
                    598:          { 
                    599:           setjmp();
                    600:           asm("c7:     movab   c7,_stpc");
                    601:           asm("movl    $7,_subtst");
                    602:           dest = *p_destlb;    /*init destination, source, & psw */
                    603:           source = *p_sourcelb;
                    604:           asm("movw _index,r10");
                    605:           asm("bicpsw  $PSWMASK");
                    606:           asm("bispsw  _flag_valuel[r10]");
                    607:                                /*execute cvt instruction               */
                    608:           asm("cvtlb   _source,_dest+3"); /* memory to memory */
                    609:           asm("movpsl  _psw"); /*save psw                              */
                    610:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    611:           if (dest != *p_explb)
                    612:                {
                    613:                asm("movl       $1,_ercode");
                    614:                if (scoplp) longjmp();
                    615:                error(dest,*p_explb,source,*p_destlb); 
                    616:                }
                    617:           if (source != *p_sourcelb)
                    618:                {
                    619:                asm("movl       $3,_ercode");
                    620:                if (scoplp) longjmp();
                    621:                error(source,*p_sourcelb,source,*p_destlb); 
                    622:                }
                    623:           if (psw != *p_exp_pswl)
                    624:                {
                    625:                asm("movl       $2,_ercode");
                    626:                if (scoplp) longjmp();
                    627:                error(psw,*p_exp_pswl,source,*p_destlb); 
                    628:                }
                    629:                if (force_lp) longjmp();
                    630:           else
                    631:                return(0);      /*no error exit*/ 
                    632:           }    
                    633: }
                    634: 
                    635: 
                    636: 
                    637: static t_cvtlb1 ()             /*single test 1 called by main test*/
                    638:                                /*source location = destination location*/
                    639: {
                    640: 
                    641:        for ( ; ; )
                    642:          { 
                    643:                                /*initialize  source, & psw     */
                    644:           setjmp();
                    645:           asm("c8:     movab   c8,_stpc");
                    646:           asm("movl    $8,_subtst");
                    647:           source = *p_sourcelb;
                    648:           asm("movw    _index,r10");
                    649:           asm("movl    _source,r5"); /* load first operand register */
                    650:           asm("movl    _source,r6"); /* load second operand register */
                    651:           asm("bicpsw  $PSWMASK");
                    652:           asm("bispsw  _flag_valuel[r10]");
                    653:                                /*execute cvt instruction               */
                    654:           asm("cvtlb   r5,r6"); /* register to register */
                    655:           asm("movpsl  _psw"); /*save psw                              */
                    656:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    657:           asm("movb    r6,_source+3"); /* load source location */
                    658:           if (source != *p_explb)
                    659:                {
                    660:                asm("movl       $1,_ercode");
                    661:                if (scoplp) longjmp();
                    662:                error(source,*p_explb,*p_sourcelb,*p_sourcelb); 
                    663:                }
                    664:           if (psw != *p_exp_pswl)
                    665:                {
                    666:                asm("movl       $2,_ercode");
                    667:                if (scoplp) longjmp();
                    668:                error(psw,*p_exp_pswl,*p_sourcelb,*p_sourcelb); 
                    669:                }
                    670:                if (force_lp) longjmp();
                    671:           else
                    672:                return(0);      /*no error exit*/ 
                    673:           }    /*end of for loop*/
                    674: }      /*end of test*/
                    675: 
                    676: 
                    677: 
                    678: static cvtlw()                 /* convert long to word */
                    679: {
                    680:    asm("bicpsw $PSWMASK");             /*psw = 0*/
                    681:       for (init_ptr(), index = 0; index < MAX_PATTERNS; bump_ptr(), index++)
                    682:          {
                    683:            t_cvtlw ();
                    684:           t_cvtlw1();          /*one more test where                   */
                    685:                                /* dest address = source address        */
                    686:           }
                    687: }
                    688: 
                    689: static t_cvtlw()               /*single test called by main test*/
                    690: {
                    691:        for ( ; ; )
                    692:          { 
                    693:           setjmp();
                    694:           asm("c9:     movab   c9,_stpc");
                    695:           asm("movl    $9,_subtst");
                    696:           dest = *p_destlw;    /*init destination, source, & psw */
                    697:           source = *p_sourcelw;
                    698:           asm("movw _index,r10");
                    699:           asm("bicpsw  $PSWMASK");
                    700:           asm("bispsw  _flag_valuel[r10]");
                    701:                                /*execute cvt instruction               */
                    702:           asm("cvtlw   _source,_dest+2"); /* memory to memory */
                    703:           asm("movpsl  _psw"); /*save psw                              */
                    704:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    705:           if (dest != *p_explw)
                    706:                {
                    707:                asm("movl       $1,_ercode");
                    708:                if (scoplp) longjmp();
                    709:                error(dest,*p_explw,source,*p_destlw); 
                    710:                }
                    711:           if (source != *p_sourcelw)
                    712:                {
                    713:                asm("movl       $3,_ercode");
                    714:                if (scoplp) longjmp();
                    715:                error(source,*p_sourcelw,source,*p_destlw); 
                    716:                }
                    717:           if (psw != *p_exp_pswl)
                    718:                {
                    719:                asm("movl       $2,_ercode");
                    720:                if (scoplp) longjmp();
                    721:                error(psw,*p_exp_pswl,source,*p_destlw); 
                    722:                }
                    723:                if (force_lp) longjmp();
                    724:           else
                    725:                return(0);      /*no error exit*/ 
                    726:           }    
                    727: }
                    728: 
                    729: 
                    730: 
                    731: static t_cvtlw1 ()             /*single test 1 called by main test*/
                    732:                                /*source location = destination location*/
                    733: {
                    734: 
                    735:        for ( ; ; )
                    736:          { 
                    737:                                /*initialize  source, & psw     */
                    738:           setjmp();
                    739:           asm("c10:    movab   c10,_stpc");
                    740:           asm("movl    $0xa,_subtst");
                    741:           source = *p_sourcelw;
                    742:           asm("movw    _index,r10");
                    743:           asm("movl    _source,r5"); /* load first operand register */
                    744:           asm("movl    _source,r6"); /* load second operand register */
                    745:           asm("bicpsw  $PSWMASK");
                    746:           asm("bispsw  _flag_valuel[r10]");
                    747:                                /*execute cvt instruction               */
                    748:           asm("cvtlw   r5,r6"); /* register to register operation */
                    749:           asm("movpsl  _psw"); /*save psw                              */
                    750:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    751:           asm("movw    r6,_source+2"); /* load source location */
                    752:           if (source != *p_explw)
                    753:                {
                    754:                asm("movl       $1,_ercode");
                    755:                if (scoplp) longjmp();
                    756:                error(source,*p_explw,*p_sourcelw,*p_sourcelw); 
                    757:                }
                    758:           if (psw != *p_exp_pswl)
                    759:                {
                    760:                asm("movl       $2,_ercode");
                    761:                if (scoplp) longjmp();
                    762:                error(psw,*p_exp_pswl,*p_sourcelw,*p_sourcelw); 
                    763:                }
                    764:                if (force_lp) longjmp();
                    765:           else
                    766:                return(0);      /*no error exit*/ 
                    767:           }
                    768: }
                    769: 
                    770: 
                    771: 
                    772: static cvtbl()                 /* convert byte to long test */
                    773: {
                    774:    asm("bicpsw $PSWMASK");             /*psw = 0*/
                    775:       for (init_ptr(), index = 0; index < MAX_PATTERNS; bump_ptr(), index++)
                    776:          {
                    777:            t_cvtbl ();
                    778:           t_cvtbl1();          /*one more test where                   */
                    779:                                /* dest address = source address        */
                    780:           }
                    781: }
                    782: 
                    783: static t_cvtbl()               /*single test called by main test*/
                    784: {
                    785: 
                    786:        for ( ; ; )
                    787:          { 
                    788:           setjmp();
                    789:           asm("c11:    movab   c11,_stpc");
                    790:           asm("movl    $0xb,_subtst");
                    791:           dest = *p_destb;     /*initialize destination, source, & psw */
                    792:           source = *p_sourceb;
                    793:           asm("movw _index,r10");
                    794:           asm("bicpsw  $PSWMASK");
                    795:           asm("bispsw  _flag_valueb[r10]");
                    796:                                /*execute cvt instruction               */
                    797:           asm("cvtbl   _source+3,_dest"); /* memory to memory */
                    798:           asm("movpsl  _psw"); /*save psw                              */
                    799:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    800:           if (dest != *p_expbl)
                    801:                {
                    802:                asm("movl       $1,_ercode");
                    803:                if (scoplp) longjmp();
                    804:                error(dest,*p_expbl,source,*p_destb); 
                    805:                }
                    806:           if (source != *p_sourceb)
                    807:                {
                    808:                asm("movl       $3,_ercode");
                    809:                if (scoplp) longjmp();
                    810:                error(source,*p_sourceb,source,*p_destb); 
                    811:                }
                    812:           if (psw != *p_exp_pswb)
                    813:                {
                    814:                asm("movl       $2,_ercode");
                    815:                if (scoplp) longjmp();
                    816:                error(psw,*p_exp_pswb,source,*p_destb,*p_exp_pswb,psw); 
                    817:                }
                    818:                if (force_lp) longjmp();
                    819:           else
                    820:                return(0);      /*no error exit*/ 
                    821:           }    
                    822: }
                    823: 
                    824: 
                    825: 
                    826: static t_cvtbl1 ()             /*single test 1 called by main test*/
                    827:                                /*source location = destination location*/
                    828: {
                    829: 
                    830:        for ( ; ; )
                    831:          { 
                    832:                                /*initialize  source, & psw     */
                    833:           setjmp();
                    834:           asm("c12:    movab   c12,_stpc");
                    835:           asm("movl    $0xc,_subtst");
                    836:           source = *p_sourceb;
                    837:           asm("movw    _index,r10");
                    838:           asm("movb    _source+3,r5"); /* load first operand register */
                    839:           asm("movl    _source,r6"); /* load second operand register */
                    840:           asm("bicpsw  $PSWMASK");
                    841:           asm("bispsw  _flag_valueb[r10]");
                    842:                                /*execute cvt instruction               */
                    843:           asm("cvtbl   r5,r6"); /* register to register operation */
                    844:           asm("movpsl  _psw"); /*save psw                              */
                    845:           asm("movl    r6,_source"); /* reload source register */
                    846:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    847:           if (source != *p_expbl)
                    848:                {
                    849:                asm("movl       $1,_ercode");
                    850:                if (scoplp) longjmp();
                    851:                error(source,*p_expbl,*p_sourceb,*p_sourceb); 
                    852:                }
                    853:           if (psw != *p_exp_pswb)
                    854:                {
                    855:                asm("movl       $2,_ercode");
                    856:                if (scoplp) longjmp();
                    857:                error(psw,*p_exp_pswb,*p_sourceb,*p_sourceb); 
                    858:                }
                    859:                if (force_lp) longjmp();
                    860:           else
                    861:                return(0);      /*no error exit*/ 
                    862:           }    /*end of for loop*/
                    863: }      /*end of test*/
                    864: 
                    865: 
                    866: 

unix.superglobalmegacorp.com

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