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

1.1       root        1: #define error_hdl2 error
                      2: 
                      3: #define C      0x1
                      4: #define V      0x2
                      5: #define Z      0x4
                      6: #define N      0x8
                      7: 
                      8: extern long scoplp;
                      9: extern long force_lp; 
                     10: extern long no_opr;
                     11: extern long opr;
                     12: 
                     13: /* Some globals */
                     14: static long flag_msk, mask, src, dest, psl;
                     15: 
                     16:        int ix;
                     17: 
                     18: /*     XOR instructions        */
                     19: 
                     20: x_or()
                     21: {
                     22:        xorb2();
                     23:        xorb3();
                     24:        xorw2();
                     25:        xorw3();
                     26:        xorl2();
                     27:        xorl3();
                     28:        asm("jmp *return");
                     29: }
                     30: 
                     31: static xorb2()
                     32: {
                     33:        long exp_psw, no_op;
                     34:        char op_type;
                     35:        for (ix = 1; ix < 7; ix ++)
                     36: 
                     37:        {
                     38:        no_op = 2;
                     39:        op_type ='b';
                     40:        no_opr = 2;
                     41: 
                     42:        /* XOR 2 BYTE_OPERANDS  */
                     43:        flag_msk = exp_psw = 0;
                     44:        flag_msk = N|V|C;               /* set N,V,C flag */
                     45:        exp_psw = Z|C;
                     46:        mask = 123;
                     47:        src = 123;
                     48:        xor(op_type,no_op,0,exp_psw);
                     49:        ix = ix + 1;                    /* increment ix */
                     50: 
                     51:        flag_msk = exp_psw = 0;
                     52:        flag_msk = Z|V|C;               /* set Z,V,C flag */
                     53:        exp_psw = N|C;
                     54:        mask = 0x81;
                     55:        src = 3;
                     56:        xor(op_type,no_op,0x82,exp_psw);
                     57:        }
                     58: }
                     59: 
                     60: static xorb3()
                     61: {
                     62:        long exp_psw, no_op;
                     63:        char op_type;
                     64:        for (ix = 1; ix < 11; ix ++)
                     65:        {
                     66: 
                     67:        no_op = 3;
                     68:        no_opr = 3;
                     69:        op_type ='b';
                     70: 
                     71:        /* XOR 3 BYTE_OPERANDS  */
                     72:        flag_msk = exp_psw = 0;
                     73:        flag_msk = N|V|C;               /* set N,V,C flag */
                     74:        exp_psw = Z|C;
                     75:        mask = 0xff;
                     76:        src = 0xff;
                     77:        xor(op_type,no_op,0,exp_psw);
                     78:        ix = ix + 1;                    /* increment ix = execution counter */
                     79: 
                     80:        flag_msk = exp_psw = 0;
                     81:        flag_msk = Z|V|C;               /* set Z,V,C flag */
                     82:        exp_psw = N|C;
                     83:        mask = 0xaa;
                     84:        src = 1;
                     85:        xor(op_type,no_op,0xab,exp_psw);
                     86:        }
                     87: }
                     88: 
                     89: static xorw2()
                     90: {
                     91:        long exp_psw, no_op;
                     92:        char op_type;
                     93:        for (ix = 1; ix < 7; ix ++)
                     94:        {
                     95: 
                     96:        no_op = 2;
                     97:        no_opr = 2;
                     98:        op_type ='w';
                     99: 
                    100:        /* XOR 2 WORD_OPERANDS  */
                    101:        flag_msk = exp_psw = 0;
                    102:        flag_msk = N|V|C;               /* set N,V,C flag */
                    103:        exp_psw = Z|C;
                    104:        mask = 0xffff;
                    105:        src = 0xffff;
                    106:        xor(op_type,no_op,0,exp_psw);
                    107:        ix = ix + 1;                    /* increment ix = execution counter */
                    108: 
                    109:        flag_msk = exp_psw = 0;
                    110:        flag_msk = Z|V|C;               /* set Z,V,C flag */
                    111:        exp_psw = N|C;
                    112:        mask = 0xbbbb;
                    113:        src = 3;
                    114:        xor(op_type,no_op,0xbbb8,exp_psw);
                    115:        }
                    116: }
                    117: 
                    118: static xorw3()
                    119: {
                    120:        long exp_psw, no_op;
                    121:        char op_type;
                    122:        for (ix = 1; ix < 11; ix ++)
                    123:        {
                    124: 
                    125:        no_op = 3;
                    126:        no_opr = 3;
                    127:        op_type ='w';
                    128: 
                    129:        /* XOR 3 WORD_OPERANDS  */
                    130:        flag_msk = exp_psw = 0;
                    131:        flag_msk = N|V|C;               /* set N,V,C flag */
                    132:        exp_psw = Z|C;
                    133:        mask = 0xff01;
                    134:        src = 0xff01;
                    135:        xor(op_type,no_op,0,exp_psw);
                    136:        ix = ix + 1;                    /* increment ix = execution counter */
                    137: 
                    138:        flag_msk = exp_psw = 0;
                    139:        flag_msk = Z|V|C;               /* set Z,V,C flag */
                    140:        exp_psw = N|C;
                    141:        mask = 0xaa00;
                    142:        src = 0x7001;
                    143:        xor(op_type,no_op,0xda01,exp_psw);
                    144:        }
                    145: }
                    146: 
                    147: static xorl2()
                    148: {
                    149:        long exp_psw, no_op;
                    150:        char op_type;
                    151:        for (ix = 1; ix < 5; ix ++)
                    152:        {
                    153: 
                    154:        no_op = 2;
                    155:        no_opr = 2;
                    156:        op_type ='l';
                    157: 
                    158:        /* XOR 2 LONG_OPERANDS  */
                    159:        flag_msk = exp_psw = 0;
                    160:        flag_msk = N|V|C;               /* set N,V,C flag */
                    161:        exp_psw = Z|C;
                    162:        mask = 0xffffabab;
                    163:        src = 0xffffabab;
                    164:        xor(op_type,no_op,0,exp_psw);
                    165:        ix = ix + 1;                    /* increment ix = execution counter */
                    166: 
                    167:        flag_msk = exp_psw = 0;
                    168:        flag_msk = Z|V|C;               /* set Z,V,C flag */
                    169:        exp_psw = N|C;
                    170:        mask = 0xccccbbbb;
                    171:        src = 0x70000001;
                    172:        xor(op_type,no_op,0xbcccbbba,exp_psw);
                    173:        }
                    174: }
                    175: 
                    176: static xorl3()
                    177: {
                    178:        long  exp_psw, no_op;
                    179:        char op_type;
                    180:        for (ix = 1; ix < 10; ix ++)
                    181:        {
                    182: 
                    183:        no_op = 3;
                    184:        no_opr = 3;
                    185:        op_type ='l';
                    186: 
                    187:        /* XOR 3 LONG_OPERANDS  */
                    188:        flag_msk = exp_psw = 0;
                    189:        flag_msk = N|V|C;               /* set N,V,C flag */
                    190:        exp_psw = Z|C;
                    191:        mask = 0xffffff01;
                    192:        src = 0xffffff01;
                    193:        xor(op_type,no_op,0,exp_psw);
                    194:        ix = ix + 1;                    /* increment ix = execution counter */
                    195: 
                    196:        flag_msk = exp_psw = 0;
                    197:        flag_msk = Z|V|C;               /* set Z,V,C flag */
                    198:        exp_psw = N|C;
                    199:        mask = 0xddddaa00;
                    200:        src = 0x7001dddd;
                    201:        xor(op_type,no_op,0xaddc77dd,exp_psw);
                    202:        }
                    203: 
                    204: }
                    205: 
                    206: /* This routine execute XORB2,XORB3,XORW2,XORW3,XORL2,XORL3 instructions */
                    207: 
                    208: static xor(op_type,no_op,exp_reslt,exp_psw)
                    209: long  exp_reslt,  exp_psw, no_op;
                    210: char op_type;
                    211: {      
                    212:        long  op1, op2, psw;
                    213:        char *msg1, *msg2;
                    214: 
                    215:        flag_msk = flag_msk << 16;
                    216:        op1 = mask;
                    217:        op2 = src;
                    218:        for(;;)
                    219:        {
                    220: 
                    221:        if (op_type == 'b')
                    222:                {
                    223:                if (no_op==2)
                    224:                        {
                    225:                        asm("bicpsw $0xf");     /* clear all flags */
                    226:                        asm("bispsw _flag_msk");
                    227: 
                    228: asm(".globl _xorbb2");
                    229: asm("_xorbb2:");
                    230: 
                    231:                        if (ix==1){
                    232:                        setjmp();
                    233:                        asm("x1:        movab   x1,_stpc");
                    234:                        asm("movl       $1,_subtst");
                    235:                        asm("xorb2  _mask+3,_src+3"); /* mem to mem */
                    236:                        asm("movpsl _psl");
                    237:                        dest = src;
                    238:                                  }
                    239:                        if (ix==2){
                    240:                        setjmp();
                    241:                        asm("x2:        movab   x2,_stpc");
                    242:                        asm("movl       $2,_subtst");
                    243:                        exp_psw = C;
                    244:                        asm("movl   _mask,r6"); /* load source reg */
                    245:                        asm("movl   _src,r7");  /* load dest reg */
                    246:                        asm("xorb2  r6,r7");    /* reg to reg */
                    247:                        asm("movpsl _psl");
                    248:                        asm("movl   r7,_src");  /* reload dest loc */
                    249:                        dest = src;
                    250:                                  }
                    251:                        if (ix==3){
                    252:                        setjmp();
                    253:                        asm("x3:        movab   x3,_stpc");
                    254:                        asm("movl       $3,_subtst");
                    255:                        asm("movl   _mask,r6"); /* load source reg */
                    256:                        asm("xorb2  r6,_src+3"); /* reg to mem */
                    257:                        asm("movpsl _psl");
                    258:                        dest = src;
                    259:                                  }
                    260:                        if (ix==4){
                    261:                        setjmp();
                    262:                        asm("x4:        movab   x4,_stpc");
                    263:                        asm("movl       $4,_subtst");
                    264:                        asm("movl   _src,r7");  /* load dest reg */
                    265:                        asm("xorb2  _mask+3,r7"); /* mem to reg */
                    266:                        asm("movpsl _psl");
                    267:                        asm("movl   r7,_src");  /* reload dest loc */
                    268:                        asm("andl2  $0xff,_src");
                    269:                        dest = src;
                    270:                                  }
                    271:                        if (ix==5){
                    272:                        setjmp();
                    273:                        asm("x5:        movab   x5,_stpc");
                    274:                        asm("movl       $5,_subtst");
                    275:                        asm("xorb2  $123,_src+3"); /* data to mem */
                    276:                        asm("movpsl _psl");
                    277:                        dest = src;
                    278:                                  }
                    279:                        if (ix==6){
                    280:                        setjmp();
                    281:                        asm("x6:        movab   x6,_stpc");
                    282:                        asm("movl       $6,_subtst");
                    283:                        asm("movl   _src,r7");  /* load dest reg */
                    284:                        asm("xorb2  $-0x7f,r7"); /* data to reg */
                    285:                        asm("movpsl _psl");
                    286:                        asm("movl   r7,_src");  /* load dest reg */
                    287:                        asm("andl2  $0xff,_src");
                    288:                        dest = src;
                    289:                                  }
                    290:                        }
                    291:                    else
                    292:                        {
                    293:                        asm("bicpsw $0xf");     /* clear all flags */
                    294:                        asm("bispsw _flag_msk");
                    295: asm(".globl _xorbb3");
                    296: asm("_xorbb3:");
                    297:                        if (ix==1){
                    298:                        setjmp();
                    299:                        asm("x7:        movab   x7,_stpc");
                    300:                        asm("movl       $7,_subtst");
                    301:                        asm("xorb3  _mask+3,_src+3,_dest+3"); /* mem mem mem */
                    302:                        asm("movpsl _psl");
                    303:                                  }
                    304:                        if (ix==2){
                    305:                        setjmp();
                    306:                        asm("x8:        movab   x8,_stpc");
                    307:                        asm("movl       $8,_subtst");
                    308:                        asm("movb   _dest,r7"); /* load dest reg */
                    309:                        asm("xorb3  _mask+3,_src+3,r7"); /* mem mem reg */
                    310:                        asm("movpsl _psl");
                    311:                        asm("movl   r7,_dest"); /* load dest location */
                    312:                        asm("andl2  $0xff,_dest");
                    313:                                  }
                    314:                        if (ix==3){
                    315:                        setjmp();
                    316:                        asm("x9:        movab   x9,_stpc");
                    317:                        asm("movl       $9,_subtst");
                    318:                        exp_psw = N|C;
                    319:                        asm("movl  _src,r6");   /* load src reg */
                    320:                        asm("xorb3  _mask+3,r6,_dest+3"); /* mem reg mem */
                    321:                        asm("movpsl _psl");
                    322:                        asm("movl   r6,_src");  /* load src location */
                    323:                                  }
                    324:                        if (ix==4){
                    325:                        setjmp();
                    326:                        asm("x10:       movab   x10,_stpc");
                    327:                        asm("movl       $0xa,_subtst");
                    328:                        asm("xorb3  _mask+3,$0x1,_dest+3"); /* mem data mem */
                    329:                        asm("movpsl _psl");
                    330:                                  }
                    331:                        if (ix==5){
                    332:                        setjmp();
                    333:                        asm("x11:       movab   x11,_stpc");
                    334:                        asm("movl       $0xb,_subtst");
                    335:                        asm("xorb3  $-1,$-1,_dest+3"); /* data data mem */
                    336:                        asm("movpsl _psl");
                    337:                                  }
                    338:                        if (ix==6){
                    339:                        setjmp();
                    340:                        asm("x12:       movab   x12,_stpc");
                    341:                        asm("movl       $0xc,_subtst");
                    342:                        asm("movl  _src,r6");   /* load src reg */
                    343:                        asm("xorb3  $-0x56,r6,_dest+3"); /* data reg mem */
                    344:                        asm("movpsl _psl");
                    345:                        asm("movl   r6,_src");  /* load src location */
                    346:                                  }
                    347:                        if (ix==7){
                    348:                        setjmp();
                    349:                        asm("x13:       movab   x13,_stpc");
                    350:                        asm("movl       $0xd,_subtst");
                    351:                        exp_psw = N|C;
                    352:                        asm("movl  _src,r6");   /* load src reg */
                    353:                        asm("movl   _dest,r7"); /* load dest reg */
                    354:                        asm("xorb3  $-1,r6,r7"); /* data reg reg */
                    355:                        asm("movpsl _psl");
                    356:                        asm("movl   r6,_src");  /* load src location */
                    357:                        asm("movl   r7,_dest"); /* load dest location */
                    358:                        asm("andl2  $0xff,_dest");
                    359:                                  }
                    360:                        if (ix==8){
                    361:                        setjmp();
                    362:                        asm("x14:       movab   x14,_stpc");
                    363:                        asm("movl       $0xe,_subtst");
                    364:                        exp_psw = C;
                    365:                        asm("movl  _mask,r5");  /* load mask reg */
                    366:                        asm("movl   _dest,r7"); /* load dest reg */
                    367:                        asm("xorb3  r5,$0x1,r7"); /* reg data reg */
                    368:                        asm("movpsl _psl");
                    369:                        asm("movl   r5,_mask"); /* load mask location */
                    370:                        asm("movl   r7,_dest"); /* load dest location */
                    371:                        asm("andl2  $0xff,_dest");
                    372:                                  }
                    373:                        if (ix==9){
                    374:                        setjmp();
                    375:                        asm("x15:       movab   x15,_stpc");
                    376:                        asm("movl       $0xf,_subtst");
                    377:                        asm("movl  _mask,r5");  /* load mask reg */
                    378:                        asm("movl  _src,r6");   /* load src reg */
                    379:                        asm("movl   _dest,r7"); /* load dest reg */
                    380:                        asm("xorb3  r5,r6,r7"); /* reg reg reg */
                    381:                        asm("movpsl _psl");
                    382:                        asm("movl   r5,_mask"); /* load mask location */
                    383:                        asm("movl   r6,_src");  /* load src location */
                    384:                        asm("movl   r7,_dest"); /* load dest location */
                    385:                        asm("andl2  $0xff,_dest");
                    386:                                  }
                    387:                        if (ix==10){
                    388:                        setjmp();
                    389:                        asm("x16:       movab   x16,_stpc");
                    390:                        asm("movl       $0x10,_subtst");
                    391:                        exp_psw = C;
                    392:                        asm("movl  _mask,r5");  /* load mask reg */
                    393:                        asm("movl  _src,r6");   /* load src reg */
                    394:                        asm("xorb3  r5,r6,_dest+3"); /* reg reg mem */
                    395:                        asm("movpsl _psl");
                    396:                        asm("movl   r5,_mask"); /* load mask location */
                    397:                        asm("movl   r6,_src");  /* load src location */
                    398:                                  }
                    399:                        } 
                    400:                }
                    401:           else if (op_type == 'w')
                    402:                        {
                    403:                        op1 = mask;
                    404:                        op2 = src;
                    405:                        if (no_op==2)
                    406:                                {
                    407:                                asm("bicpsw $0xf");     /* clear all flags */
                    408:                                asm("bispsw _flag_msk");
                    409: asm(".globl _xorwd2");
                    410: asm("_xorwd2:");
                    411:                                if (ix==1){
                    412:                                setjmp();
                    413:                                asm("x17:       movab   x17,_stpc");
                    414:                                asm("movl       $0x11,_subtst");
                    415:                                asm("xorw2  _mask+2,_src+2"); /* mem to mem */
                    416:                                asm("movpsl _psl");
                    417:                                dest = src;
                    418:                                          }
                    419:                                if (ix==2){
                    420:                                setjmp();
                    421:                                asm("x18:       movab   x18,_stpc");
                    422:                                asm("movl       $0x12,_subtst");
                    423:                                exp_psw = C;
                    424:                                asm("movl   _mask,r6"); /* load source reg */
                    425:                                asm("movl   _src,r7");  /* load dest reg */
                    426:                                asm("xorw2  r6,r7"); /* reg to reg */
                    427:                                asm("movpsl _psl");
                    428:                                asm("movl   r7,_src");  /* reload dest loc */
                    429:                                asm("andl2  $0xffff,_src");
                    430:                                dest = src;
                    431:                                          }
                    432:                                if (ix==3){
                    433:                                setjmp();
                    434:                                asm("x19:       movab   x19,_stpc");
                    435:                                asm("movl       $0x13,_subtst");
                    436:                                exp_psw = N|C;
                    437:                                asm("movl   _mask,r6"); /* load source reg */
                    438:                                asm("xorw2  r6,_src+2"); /* reg to mem */
                    439:                                asm("movpsl _psl");
                    440:                                dest = src;
                    441:                                          }
                    442:                                if (ix==4){
                    443:                                setjmp();
                    444:                                asm("x20:       movab   x20,_stpc");
                    445:                                asm("movl       $0x14,_subtst");
                    446:                                asm("movl   _src,r7");  /* load dest reg */
                    447:                                asm("xorw2  _mask+2,r7"); /* mem to reg */
                    448:                                asm("movpsl _psl");
                    449:                                asm("movl   r7,_src");  /* reload dest loc */
                    450:                                asm("andl2  $0xffff,_src");
                    451:                                dest = src;
                    452:                                          }
                    453:                                if (ix==5){
                    454:                                setjmp();
                    455:                                asm("x21:       movab   x21,_stpc");
                    456:                                asm("movl       $0x15,_subtst");
                    457:                                asm("xorw2  $-0x0001,_src+2"); /*  data to mem */
                    458:                                asm("movpsl _psl");
                    459:                                dest = src;
                    460:                                          }
                    461:                                if (ix==6){
                    462:                                setjmp();
                    463:                                asm("x22:       movab   x22,_stpc");
                    464:                                asm("movl       $0x16,_subtst");
                    465:                                asm("movl   _src,r7");  /* load dest reg */
                    466:                                asm("xorw2  $-0x4445,r7"); /* data to reg */
                    467:                                asm("movpsl _psl");
                    468:                                asm("movl   r7,_src");  /* reload dest loc */
                    469:                                asm("andl2  $0xffff,_src");
                    470:                                dest = src;
                    471:                                          }
                    472:                                }
                    473:                           else
                    474:                                {
                    475:                                asm("bicpsw $0xf");     /* clear all flags */
                    476:                                asm("bispsw _flag_msk");
                    477: asm(".globl _xorwd3");
                    478: asm("_xorwd3:");
                    479:                                if (ix==1){
                    480:                                setjmp();
                    481:                                asm("x23:       movab   x23,_stpc");
                    482:                                asm("movl       $0x17,_subtst");
                    483:                                asm("xorw3  _mask+2,_src+2,_dest+2"); /*mem mem mem*/
                    484:                                asm("movpsl _psl");
                    485:                                          }
                    486:                                if (ix==2){
                    487:                                setjmp();
                    488:                                asm("x24:       movab   x24,_stpc");
                    489:                                asm("movl       $0x18,_subtst");
                    490:                                asm("movl  _src,r6");   /* load src reg */
                    491:                                asm("xorw3  _mask+2,r6,_dest+2"); /*mem reg mem*/
                    492:                                asm("movpsl _psl");
                    493:                                asm("movl  r6,_src");   /* load src location */
                    494:                                          }
                    495:                                if (ix==3){
                    496:                                setjmp();
                    497:                                asm("x25:       movab   x25,_stpc");
                    498:                                asm("movl       $0x19,_subtst");
                    499:                                asm("xorw3  _mask+2,$-0x00ff,_dest+2"); /*mem dat mem*/
                    500:                                asm("movpsl _psl");
                    501:                                          }
                    502:                                if (ix==4){
                    503:                                setjmp();
                    504:                                asm("x26:       movab   x26,_stpc");
                    505:                                asm("movl       $0x1a,_subtst");
                    506:                                asm("xorw3  $-0x5600,$0x7001,_dest+2"); /*lit dat mem*/
                    507:                                asm("movpsl _psl");
                    508:                                          }
                    509:                                if (ix==5){
                    510:                                setjmp();
                    511:                                asm("x27:       movab   x27,_stpc");
                    512:                                asm("movl       $0x1b,_subtst");
                    513:                                asm("movl  _dest,r7");  /* load dest reg */
                    514:                                asm("xorw3  _mask+2,_src+2,r7"); /*mem mem reg */
                    515:                                asm("movpsl _psl");
                    516:                                asm("movl  r7,_dest");  /* load dest location */
                    517:                                asm("andl2  $0xffff,_dest");
                    518:                                          }
                    519:                                if (ix==6){
                    520:                                setjmp();
                    521:                                asm("x28:       movab   x28,_stpc");
                    522:                                asm("movl       $0x1c,_subtst");
                    523:                                asm("movl  _src,r6");   /* load src reg */
                    524:                                asm("xorw3  $-0x5600,r6,_dest+2"); /*lit reg mem*/
                    525:                                asm("movpsl _psl");
                    526:                                asm("movl  r6,_src");   /* load src location */
                    527:                                          }
                    528:                                if (ix==7){
                    529:                                setjmp();
                    530:                                asm("x29:       movab   x29,_stpc");
                    531:                                asm("movl       $0x1d,_subtst");
                    532:                                exp_psw = N|C;
                    533:                                asm("movl  _src,r6");   /* load src reg */
                    534:                                asm("movl  _dest,r7");  /* load dest reg */
                    535:                                asm("xorw3  $-0x00ff,r6,r7"); /*dat reg reg*/
                    536:                                asm("movpsl _psl");
                    537:                                asm("movl  r6,_src");   /* load src location */
                    538:                                asm("movl  r7,_dest");  /* load dest location */
                    539:                                asm("andl2  $0xffff,_dest");
                    540:                                          }
                    541:                                if (ix==8){
                    542:                                setjmp();
                    543:                                asm("x30:       movab   x30,_stpc");
                    544:                                asm("movl       $0x1e,_subtst");
                    545:                                exp_psw = C;
                    546:                                asm("movl  _mask,r5");  /* load mask reg */
                    547:                                asm("movl  _dest,r7");  /* load dest reg */
                    548:                                asm("xorw3  r5,$0x7001,r7"); /*reg dat reg*/
                    549:                                asm("movpsl _psl");
                    550:                                asm("movl  r5,_mask");  /* load mask location */
                    551:                                asm("movl  r7,_dest");  /* load dest location */
                    552:                                asm("andl2  $0xffff,_dest");
                    553:                                          }
                    554:                                if (ix==9){
                    555:                                setjmp();
                    556:                                asm("x31:       movab   x31,_stpc");
                    557:                                asm("movl       $0x1f,_subtst");
                    558:                                asm("movl  _mask,r5");  /* load mask reg */
                    559:                                asm("movl  _src,r6");   /* load src reg */
                    560:                                asm("movl  _dest,r7");  /* load dest reg */
                    561:                                asm("xorw3  r5,r6,r7"); /*reg reg reg*/
                    562:                                asm("movpsl _psl");
                    563:                                asm("movl  r5,_mask");  /* load mask location */
                    564:                                asm("movl  r6,_src");   /* load src location */
                    565:                                asm("movl  r7,_dest");  /* load dest location */
                    566:                                asm("andl2  $0xffff,_dest");
                    567:                                          }
                    568:                                if (ix==10){
                    569:                                setjmp();
                    570:                                asm("x32:       movab   x32,_stpc");
                    571:                                asm("movl       $0x20,_subtst");
                    572:                                exp_psw = C;
                    573:                                asm("movl  _mask,r5");  /* load mask reg */
                    574:                                asm("movl  _src,r6");   /* load src reg */
                    575:                                asm("xorw3  r5,r6,_dest+2"); /*reg reg mem*/
                    576:                                asm("movpsl _psl");
                    577:                                asm("movl  r5,_mask");  /* load mask location */
                    578:                                asm("movl  r6,_src");   /* load src location */
                    579:                                          }
                    580:                                } 
                    581:                        }
                    582:                    else
                    583:                        {
                    584:                        if (no_op==2)
                    585:                                {
                    586:                                asm("bicpsw $0xf");     /* clear all flags */
                    587:                                asm("bispsw _flag_msk");
                    588: asm(".globl _xorlw2");
                    589: asm("_xorlw2:");
                    590:                           if (ix==1)   {
                    591:                                setjmp();
                    592:                                asm("x33:       movab   x33,_stpc");
                    593:                                asm("movl       $0x21,_subtst");
                    594:                                asm("xorl2  _mask,_src"); /* mem to mem */
                    595:                                asm("movpsl _psl");
                    596:                                dest = src;
                    597:                                        }
                    598:                           if (ix==2)   {
                    599:                                setjmp();
                    600:                                asm("x34:       movab   x34,_stpc");
                    601:                                asm("movl       $0x22,_subtst");
                    602:                                asm("movl  _mask,r5");  /* load mask reg */
                    603:                                asm("movl  _src,r6");   /* load src reg */
                    604:                                asm("xorl2  r5,r6"); /* reg to reg */
                    605:                                asm("movpsl _psl");
                    606:                                asm("movl  r5,_mask");  /* load mask location */
                    607:                                asm("movl  r6,_src");   /* load src location */
                    608:                                dest = src;
                    609:                                        }
                    610:                           if (ix==3)   {
                    611:                                setjmp();
                    612:                                asm("x35:       movab   x35,_stpc");
                    613:                                asm("movl       $0x23,_subtst");
                    614:                                asm("movl  _mask,r5");  /* load mask reg */
                    615:                                asm("xorl2  r5,_src"); /* reg to mem */
                    616:                                asm("movpsl _psl");
                    617:                                asm("movl  r5,_mask");  /* load mask location */
                    618:                                dest = src;
                    619:                                        }
                    620:                           if (ix==4)   {
                    621:                                setjmp();
                    622:                                asm("x36:       movab   x36,_stpc");
                    623:                                asm("movl       $0x24,_subtst");
                    624:                                asm("movl  _src,r6");   /* load src reg */
                    625:                                asm("xorl2  $0xccccbbbb,r6"); /* data to reg */
                    626:                                asm("movpsl _psl");
                    627:                                asm("movl  r6,_src");   /* load src location */
                    628:                                dest = src;
                    629:                                        }
                    630:                                }
                    631:                           else
                    632:                                {
                    633:                                asm("bicpsw $0xf");     /* clear all flags */
                    634:                                asm("bispsw _flag_msk");
                    635: asm(".globl _xorlw3");
                    636: asm("_xorlw3:");
                    637:                             if (ix==1) {
                    638:                                setjmp();
                    639:                                asm("x37:       movab   x37,_stpc");
                    640:                                asm("movl       $0x25,_subtst");
                    641:                                asm("xorl3  _mask,_src,_dest"); /*mem mem mem*/
                    642:                                asm("movpsl _psl");
                    643:                                        } 
                    644:                             if (ix==2) {
                    645:                                setjmp();
                    646:                                asm("x38:       movab   x38,_stpc");
                    647:                                asm("movl       $0x26,_subtst");
                    648:                                asm("movl  _mask,r5");  /* load mask reg */
                    649:                                asm("movl  _src,r6");   /* load src reg */
                    650:                                asm("movl  _dest,r7");  /* load dest reg */
                    651:                                asm("xorl3  r5,r6,r7"); /* reg reg reg */
                    652:                                asm("movpsl _psl");
                    653:                                asm("movl  r5,_mask");  /* load mask location */
                    654:                                asm("movl  r6,_src");   /* load src location */
                    655:                                asm("movl  r7,_dest");  /* load dest location */
                    656:                                        } 
                    657:                             if (ix==3) {
                    658:                                setjmp();
                    659:                                asm("x39:       movab   x39,_stpc");
                    660:                                asm("movl       $0x27,_subtst");
                    661:                                asm("movl  _mask,r5");  /* load mask reg */
                    662:                                asm("movl  _src,r6");   /* load src reg */
                    663:                                asm("xorl3  r5,r6,_dest"); /* reg reg mem */
                    664:                                asm("movpsl _psl");
                    665:                                asm("movl  r5,_mask");  /* load mask location */
                    666:                                asm("movl  r6,_src");   /* load src location */
                    667:                                        } 
                    668:                             if (ix==4) {
                    669:                                setjmp();
                    670:                                asm("x40:       movab   x40,_stpc");
                    671:                                asm("movl       $0x28,_subtst");
                    672:                                asm("movl  _src,r6");   /* load src reg */
                    673:                                asm("xorl3  $0xddddaa00,r6,_dest"); /* dat reg mem */
                    674:                                asm("movpsl _psl");
                    675:                                asm("movl  r6,_src");   /* load src location */
                    676:                                        } 
                    677:                             if (ix==5) {
                    678:                                setjmp();
                    679:                                asm("x41:       movab   x41,_stpc");
                    680:                                asm("movl       $0x29,_subtst");
                    681:                                asm("movl  _mask,r5");  /* load mask reg */
                    682:                                asm("xorl3  r5,$0xffffff01,_dest"); /* reg dat mem */
                    683:                                asm("movpsl _psl");
                    684:                                asm("movl  r5,_mask");  /* load mask location */
                    685:                                        } 
                    686:                             if (ix==6) {
                    687:                                setjmp();
                    688:                                asm("x42:       movab   x42,_stpc");
                    689:                                asm("movl       $0x2a,_subtst");
                    690:                                asm("movl  _src,r6");   /* load src reg */
                    691:                                asm("movl  _dest,r7");  /* load dest reg */
                    692:                                asm("xorl3  $0xddddaa00,r6,r7"); /* dat reg reg */
                    693:                                asm("movpsl _psl");
                    694:                                asm("movl  r6,_src");   /* load src location */
                    695:                                asm("movl  r7,_dest");  /* load dest location */
                    696:                                        } 
                    697:                             if (ix==7) {
                    698:                                setjmp();
                    699:                                asm("x43:       movab   x43,_stpc");
                    700:                                asm("movl       $0x2b,_subtst");
                    701:                                asm("movl  _mask,r5");  /* load mask reg */
                    702:                                asm("movl  _dest,r7");  /* load dest reg */
                    703:                                asm("xorl3  r5,$0xffffff01,r7"); /* reg dat reg */
                    704:                                asm("movpsl _psl");
                    705:                                asm("movl  r5,_mask");  /* load mask location */
                    706:                                asm("movl  r7,_dest");  /* load dest location */
                    707:                                        } 
                    708:                             if (ix==8) {
                    709:                                setjmp();
                    710:                                asm("x44:       movab   x44,_stpc");
                    711:                                asm("movl       $0x2c,_subtst");
                    712:                                asm("movl  _dest,r7");  /* load dest reg */
                    713:                                asm("xorl3  $0xddddaa00,$0x7001dddd,r7"); /* dat dat reg */
                    714:                                asm("movpsl _psl");
                    715:                                asm("movl  r7,_dest");  /* load dest location */
                    716:                                        } 
                    717:                             if (ix==9) {
                    718:                                setjmp();
                    719:                                asm("x45:       movab   x45,_stpc");
                    720:                                asm("movl       $0x2d,_subtst");
                    721:                                asm("xorl3  $0xffffff01,$0xffffff01,_dest"); /* dat dat mem */
                    722:                                asm("movpsl _psl");
                    723:                                        } 
                    724:                             if (ix==10) {
                    725:                                setjmp();
                    726:                                asm("x46:       movab   x46,_stpc");
                    727:                                asm("movl       $0x2e,_subtst");
                    728:                                asm("xorl3  _mask,_src,_dest"); /*mem mem mem*/
                    729:                                asm("movpsl _psl");
                    730:                                        } 
                    731:                        }
                    732:                }
                    733: 
                    734:        psw = psl & 0xf;
                    735: 
                    736:        /* check flags */
                    737:        if (psw != exp_psw)
                    738:                {
                    739:                asm("movl       $2,_ercode");
                    740:                if (scoplp) longjmp();
                    741:                error_hdl2(psw,exp_psw,op1,op2);
                    742:                }
                    743:        if (mask != op1)
                    744:                {
                    745:                asm("movl       $3,_ercode");
                    746:                if ( scoplp) longjmp();
                    747:                error_hdl2(mask,op1,op1,op2);
                    748:                }
                    749:        if (no_op==3)
                    750:                {
                    751:                if (src != op2)
                    752:                        {
                    753:                asm("movl       $3,_ercode");
                    754:                if ( scoplp) longjmp();
                    755:                error_hdl2(src,op2,op1,op2);
                    756:                        }
                    757:                }
                    758:        if (dest != exp_reslt)
                    759:                {
                    760:                asm("movl       $1,_ercode");
                    761:                if ( scoplp) longjmp();
                    762:                error_hdl2(dest,exp_reslt,op1,op2);
                    763:                if ( force_lp) longjmp();
                    764:                }
                    765:        break;
                    766:    }
                    767: }
                    768: 
                    769: 

unix.superglobalmegacorp.com

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