Annotation of cci/d/entry/movz.c, revision 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.