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

1.1       root        1: 
                      2: /*             constants definition for mzeroextended instruction      */
                      3: /*                                                                     */
                      4: /*                                                                     */
                      5: 
                      6: #define                MOVZBW          0xb9            /*opcodes               */
                      7: #define                MOVZBL          0xa9
                      8: #define                MOVZWL          0xc3
                      9: 
                     10: extern long scoplp;
                     11: extern long force_lp;
                     12: 
                     13: asm(".set PSWMASK,0xf");
                     14: 
                     15: #define                MAX_PATTERNS    2
                     16: 
                     17: #define                IDESTB1         0xaaaaaa00      /*destination           */
                     18:                                                /*initial values        */
                     19: #define                IDESTB2         0xaaaaaaaa
                     20: #define                IDESTW1         0xffff0000
                     21: #define                IDESTW2         -1
                     22: 
                     23: #define                SB1             0xaaaaaaff      /*source values         */
                     24: #define                SB2             0xaaaaaa00
                     25: #define                SW1             -1
                     26: #define                SW2             0xffff0000
                     27: 
                     28: #define                EDESTBW1        0xaaaa00ff      /*expected destination  */
                     29: #define                EDESTBW2        0xaaaa0000
                     30: 
                     31: #define                EDESTBL1        0x000000ff
                     32: #define                EDESTBL2        0
                     33: 
                     34: #define                EDESTWL1        0x0000ffff
                     35: #define                EDESTWL2        0
                     36: 
                     37: #define                FLG1            14              /*initial flags         */
                     38: #define                FLG2            1
                     39: 
                     40: #define                EFLG1           1               /*expected flags        */
                     41: #define                EFLG2           5
                     42: 
                     43: #define                ERROR1                  1         /*error definitions   */
                     44: #define                ERROR2                  2
                     45: #define                ERROR3                  3
                     46: #define                ERROR4                  4
                     47: #define                ERROR5                  5
                     48:                                                  /*error messages      */
                     49: 
                     50: /*             standard definition file                                */
                     51: /*             for 'C' diagnostic porgrams.                            */
                     52: /*                                                                     */
                     53: /*                                                                     */
                     54: #define                HIGH            31
                     55: #define                IPL             18
                     56: #define                PSWMASK         255
                     57: #define                FLAGS           0x0000000f
                     58: 
                     59: 
                     60: 
                     61: 
                     62: 
                     63: /*     Global variables for movz test                                  */
                     64: /*                                                                     */
                     65: /*                                                                     */
                     66: 
                     67: static long    index = 0;
                     68: static long    dest = 0;       /*destination location                  */
                     69: static long    source = 0;     /*source location                       */
                     70: static long    psw;            /*processor status word                 */
                     71: 
                     72: static long    flag_value[MAX_PATTERNS] = {FLG1,FLG2};
                     73:                                /*flag values for initialization        */
                     74: 
                     75: static long    error_count = 0;
                     76: 
                     77: 
                     78: static long    expbw[MAX_PATTERNS] = {EDESTBW1,EDESTBW2};
                     79:                                /*expected values                       */
                     80: 
                     81: static long    expbl[MAX_PATTERNS] = {EDESTBL1,EDESTBL2};
                     82: static long    expwl[MAX_PATTERNS] = {EDESTWL1,EDESTWL2};
                     83: 
                     84: 
                     85: static long    exp_psw[MAX_PATTERNS] = {EFLG1,EFLG2};
                     86:                                /*expected psw                          */
                     87: 
                     88: static long    sourceb[MAX_PATTERNS] = {SB1,SB2};
                     89:                                /*source values                         */
                     90: 
                     91: static long    sourcew[MAX_PATTERNS] = {SW1,SW2};
                     92: 
                     93: static long    destb[MAX_PATTERNS] = {IDESTB1,IDESTB2};
                     94: static long    destw[MAX_PATTERNS] = {IDESTW1,IDESTW2};
                     95: 
                     96: 
                     97: static char *title;
                     98: movz()
                     99: {
                    100:        asm("movl       $2,_no_opr");
                    101:        title = "** MOVZ_WL **\n";
                    102:        movzwl();
                    103:        title = "** MOVZ_BW **\n";
                    104:        movzbw();
                    105:        title = "** MOVZ_BL **\n";
                    106:        movzbl();
                    107:        asm("jmp *return");
                    108: }
                    109: 
                    110: 
                    111: static movzwl()        /* move zero extended word to long test */
                    112: {
                    113:    asm("bicpsw $PSWMASK");             /*psw = 0*/
                    114:       for(index=0; index<MAX_PATTERNS; index++)
                    115:          {
                    116:           t_movzwl();
                    117:          t_movzwl1();          /* Special case : dest. addr = src addr  */
                    118:           }
                    119: }
                    120: 
                    121: static t_movzwl()              /*single test called by main test*/
                    122: {
                    123:        long *lptr, exp_dest, op1, op2, exp_flg;
                    124: 
                    125:        for (;;)
                    126:          {
                    127:           setjmp();
                    128:           asm("m1:     movab   m1,_stpc");
                    129:           asm("movl    $1,_subtst");
                    130:           lptr = destw+index; 
                    131:           op2 = dest = *lptr;          /* Use pointer instead of index */
                    132:        /*   dest = destw[index];  */
                    133:           lptr = sourcew+index;
                    134:           op1 = source = *lptr;
                    135:        /*  source = sourcew[index];  */
                    136:           asm("movw    _index,r10"); 
                    137:           asm("bicpsw  $PSWMASK");
                    138:           asm("bispsw  _flag_value[r10]");
                    139:           asm("movzwl  _source+2,_dest"); /* memory to memory */
                    140:           asm("movpsl  _psw");         /* save psw     */
                    141:           psw &= FLAGS;                /* Get flag bits  */
                    142:           lptr = expwl+index;
                    143:           exp_dest = *lptr;
                    144:           if (dest != exp_dest)
                    145:               {
                    146:               asm("movl        $1,_ercode");
                    147:               if (scoplp) longjmp();
                    148:               error(dest,exp_dest,op1,op2); 
                    149:               }
                    150:           if (source != op1)
                    151:               {
                    152:               asm("movl        $3,_ercode");
                    153:               if (scoplp) longjmp();
                    154:               error(source,op1,op1,op2);
                    155:               }
                    156:           lptr = exp_psw+index;
                    157:           exp_flg = *lptr; 
                    158:           if (psw != exp_flg)
                    159:               {
                    160:               asm("movl        $2,_ercode");
                    161:               if (scoplp) longjmp();
                    162:               error(psw,exp_flg,op1,op2,exp_flg,psw); 
                    163:               }
                    164:               if (force_lp) longjmp();
                    165:           else
                    166:                return(0);      /*no error exit*/ 
                    167:           }
                    168: }
                    169: 
                    170: static t_movzwl1()
                    171: {
                    172:        long *lptr, op1, op2, exp_dest, exp_flg;
                    173: 
                    174:        for (;;)
                    175:          {
                    176:           setjmp();
                    177:           asm("m2:     movab   m2,_stpc");
                    178:           asm("movl    $2,_subtst");
                    179:           lptr = sourcew+index;
                    180:           op1 = source = *lptr; 
                    181:        /*   source = sourcew[index];  */
                    182:           asm("movw    _index,r10"); 
                    183:           asm("bicpsw  $PSWMASK");
                    184:           asm("bispsw  _flag_value[r10]");
                    185:           asm("movzwl  _source+2,_source");  /* register to memory */
                    186:           asm("movpsl  _psw");                 /* Save psw     */
                    187:           psw &= FLAGS;                        /* Get flags    */
                    188:           lptr = expwl+index;
                    189:           exp_dest = *lptr;
                    190:           if (source != exp_dest)
                    191:               {
                    192:               asm("movl        $1,_ercode");
                    193:               if (scoplp) longjmp();
                    194:               error(source,exp_dest,op1,op1);
                    195:               }
                    196:           lptr = exp_psw+index;
                    197:           exp_flg = *lptr; 
                    198:           if (psw != exp_flg)
                    199:               {
                    200:               asm("movl        $2,_ercode");
                    201:               if (scoplp) longjmp();
                    202:               error(psw,exp_flg,op1,op1); 
                    203:               }
                    204:               if (force_lp) longjmp();
                    205:           else
                    206:                return(0);      /*no error exit*/ 
                    207:           }
                    208: }
                    209: 
                    210: 
                    211: 
                    212: static movzbw()        /* move zero extended byte to word test */
                    213: {
                    214:    asm("bicpsw $PSWMASK");             /*psw = 0*/
                    215:       for (index = 0; index < MAX_PATTERNS; index++)
                    216:          {
                    217:            t_movzbw ();
                    218:           t_movzbw1();         /*one more test where                   */
                    219:                                /* dest address = source address        */
                    220:           t_movzbw2();         /*one more test where                   */
                    221:                                /*  register to register */
                    222:           }
                    223: }
                    224: 
                    225: 
                    226: static t_movzbw()
                    227: {
                    228: 
                    229:        for (;;)
                    230:          { 
                    231:           setjmp();
                    232:           asm("m3:     movab   m3,_stpc");
                    233:           asm("movl    $3,_subtst");
                    234:           dest = destb[index]; /*initialize destination, source, & psw */
                    235:           source = sourceb[index];
                    236:           asm("movw    _index,r10"); 
                    237:           asm("bicpsw  $PSWMASK");
                    238:           asm("bispsw  _flag_value[r10]");
                    239:           asm("movzbw  _source+3,_dest+2"); /* memory to memory */
                    240:           asm("movpsl  _psw"); /*save psw                              */
                    241:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    242:           if (dest != expbw[index])
                    243:               {
                    244:               asm("movl        $1,_ercode");
                    245:               if (scoplp) longjmp();
                    246:               error(dest,expbw[index],source,destb[index],expbw[index],dest); 
                    247:               }
                    248:           if (source != sourceb[index])
                    249:               {
                    250:               asm("movl        $3,_ercode");
                    251:               if (scoplp) longjmp();
                    252:               error(source,sourceb[index],source,destb[index]); 
                    253:               }
                    254:           if (psw != exp_psw[index])
                    255:               {
                    256:               asm("movl        $2,_ercode");
                    257:               if (scoplp) longjmp();
                    258:               error(psw,exp_psw[index],source,destb[index]); 
                    259:               }
                    260:               if (force_lp) longjmp();
                    261:           else
                    262:                return(0);
                    263:           }
                    264: }
                    265: 
                    266: 
                    267: 
                    268: static t_movzbw1()
                    269: {
                    270: 
                    271:        for (;;)
                    272:          { 
                    273:                                /*initialize  source, & psw     */
                    274:           setjmp();
                    275:           asm("m4:     movab   m4,_stpc");
                    276:           asm("movl    $4,_subtst");
                    277:           source = sourceb[index];
                    278:           asm("movw    _index,r10"); 
                    279:           asm("movl    _source,r5"); /* load source register */
                    280:           asm("bicpsw  $PSWMASK");
                    281:           asm("bispsw  _flag_value[r10]");
                    282:           asm("movzbw  _source+3,_source+2");
                    283:           asm("movpsl  _psw"); /*save psw                              */
                    284:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    285:           if (source != expbw[index])
                    286:               {
                    287:               asm("movl        $1,_ercode");
                    288:               if (scoplp) longjmp();
                    289:               error(source,expbw[index],sourceb[index],sourceb[index]); 
                    290:               }
                    291:           if (psw != exp_psw[index])
                    292:               {
                    293:               asm("movl        $2,_ercode");
                    294:               if (scoplp) longjmp();
                    295:               error(psw,exp_psw[index],sourceb[index],sourceb[index]); 
                    296:               }
                    297:               if (force_lp) longjmp();
                    298:           else
                    299:                return(0);       
                    300:           }
                    301: }
                    302: 
                    303: static t_movzbw2()
                    304: {
                    305: 
                    306:        for (;;)
                    307:          { 
                    308:                                /*initialize  source, & psw     */
                    309:           setjmp();
                    310:           asm("m5:     movab   m5,_stpc");
                    311:           asm("movl    $5,_subtst");
                    312:           source = sourceb[index];
                    313:           asm("movw    _index,r10"); 
                    314:           asm("movl    _source,r5"); /* load source register */
                    315:           asm("movl    _source,r6"); /* load dest register */
                    316:           asm("bicpsw  $PSWMASK");
                    317:           asm("bispsw  _flag_value[r10]");
                    318:           asm("movzbw  _source+3,_source+2");
                    319:           asm("movpsl  _psw"); /*save psw                              */
                    320:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    321:           if (source != expbw[index])
                    322:               {
                    323:               asm("movl        $1,_ercode");
                    324:               if (scoplp) longjmp();
                    325:               error(source,expbw[index],sourceb[index],sourceb[index]); 
                    326:               }
                    327:           if (psw != exp_psw[index])
                    328:               {
                    329:               asm("movl        $2,_ercode");
                    330:               if (scoplp) longjmp();
                    331:               error(psw,exp_psw[index],sourceb[index],sourceb[index]); 
                    332:               }
                    333:               if (force_lp) longjmp();
                    334:           else
                    335:                return(0);       
                    336:           }
                    337: }
                    338: 
                    339: static movzbl()
                    340: {
                    341:    asm("bicpsw $PSWMASK");             /*psw = 0*/
                    342:       for (index = 0; index < MAX_PATTERNS; index++)
                    343:          {
                    344:            t_movzbl ();
                    345:           t_movzbl1();         /*one more test where                   */
                    346:                                /* dest address = source address        */
                    347:           }
                    348: }
                    349: 
                    350: static t_movzbl()
                    351: {
                    352: 
                    353:        for (;;)
                    354:          { 
                    355:           setjmp();
                    356:           asm("m6:     movab   m6,_stpc");
                    357:           asm("movl    $6,_subtst");
                    358:           dest = destb[index]; /*initialize destination, source, & psw */
                    359:           source = sourceb[index];
                    360:           asm("movw    _index,r10"); 
                    361:           asm("bicpsw  $PSWMASK");
                    362:           asm("bispsw  _flag_value[r10]");
                    363:           asm("movzbl  _source+3,_dest"); /* memory to memory */
                    364:           asm("movpsl  _psw"); /*save psw                              */
                    365:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    366:           if (dest != expbl[index])
                    367:               {
                    368:               asm("movl        $1,_ercode");
                    369:               if (scoplp) longjmp();
                    370:               error(dest,expbl[index],source,destb[index]); 
                    371:               }
                    372:           if (source != sourceb[index])
                    373:               {
                    374:               asm("movl        $3,_ercode");
                    375:               if (scoplp) longjmp();
                    376:               error(source,sourceb[index],source,destb[index]); 
                    377:               }
                    378:           if (psw != exp_psw[index])
                    379:               {
                    380:               asm("movl        $2,_ercode");
                    381:               if (scoplp) longjmp();
                    382:               error(psw,exp_psw[index],source,destb[index]); 
                    383:               }
                    384:               if (force_lp) longjmp();
                    385:           else
                    386:                return(0);      /*no error exit*/ 
                    387:           }
                    388: }
                    389: 
                    390: 
                    391: 
                    392: static t_movzbl1()
                    393: {
                    394:        for (;;)
                    395:          { 
                    396:                                /*initialize  source, & psw     */
                    397:           setjmp();
                    398:           asm("m7:     movab   m7,_stpc");
                    399:           asm("movl    $7,_subtst");
                    400:           source = sourceb[index];
                    401:           asm("movw    _index,r10"); 
                    402:           asm("movl    _source,r5"); /* load source register */
                    403:           asm("bicpsw  $PSWMASK");
                    404:           asm("bispsw  _flag_value[r10]");
                    405:                                /*execute movz instruction              */
                    406:           asm("movzbl  _source+3,_source"); /* register to memory */
                    407:           asm("movpsl  _psw"); /*save psw                              */
                    408:           psw &= FLAGS;        /*mask out all bits except flag bits    */
                    409:           if (source != expbl[index])
                    410:               {
                    411:               asm("movl        $1,_ercode");
                    412:               if (scoplp) longjmp();
                    413:               error(source,expbl[index],sourceb[index],sourceb[index]); 
                    414:               }
                    415:           if (psw != exp_psw[index])
                    416:               {
                    417:               asm("movl        $2,_ercode");
                    418:               if (scoplp) longjmp();
                    419:               error(psw,exp_psw[index],sourceb[index],sourceb[index]); 
                    420:               }
                    421:               if (force_lp) longjmp();
                    422:           else
                    423:                return(0);      /*no error exit*/ 
                    424:           }
                    425: }
                    426: 
                    427: 

unix.superglobalmegacorp.com

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