Annotation of cci/d/entry/mul.c, revision 1.1

1.1     ! root        1: #define error_hdl2 error
        !             2: #define error_hdl3 error
        !             3: 
        !             4: #define C      0x1
        !             5: #define V      0x2
        !             6: #define Z      0x4
        !             7: #define N      0x8
        !             8: 
        !             9: extern long scoplp;
        !            10: extern long force_lp;
        !            11: 
        !            12: /*     MUL instruction         */
        !            13: 
        !            14: /* some global variables used in ASM */
        !            15: static long flag_msk, psl, product, mult, muld, mulp, add, prod1, prod2;
        !            16: static long exp_reslt1, exp_reslt2;
        !            17: 
        !            18: mul()
        !            19: {
        !            20:        asm("movl       $2,_no_opr");   /* number of operands in use */
        !            21:        mull2();                        /* Test MULL2 instruction */
        !            22:        mull3();                        /* Test MULL3 instruction */
        !            23:        exmul();                        /* Test EMUL instruction */
        !            24:        asm("jmp *return");
        !            25: }
        !            26: 
        !            27: static mull2()
        !            28: {      long exp_psw , ix;
        !            29: 
        !            30:        /* multiply long with 2 operands */
        !            31: for(ix=0;ix<2;ix++)
        !            32:        {
        !            33:        setjmp();
        !            34:        asm("m1:        movab   m1,_stpc");
        !            35:        flag_msk = exp_psw = C;
        !            36:        flag_msk = N|Z|V|C;
        !            37:        if (ix==0) {
        !            38:                mult = 0xabcde;
        !            39:                mulp = 0xaba; }
        !            40:            else   {
        !            41:                mulp = 0xabcde;
        !            42:                mult = 0xaba; }
        !            43:        mull(2,0x732de54c,exp_psw); 
        !            44:        }
        !            45:        
        !            46: for(ix=0;ix<2;ix++)
        !            47:        {
        !            48:        asm("m2:        movab   m2,_stpc");
        !            49:        flag_msk = exp_psw = C;
        !            50:        flag_msk = N|Z|V|C;
        !            51:        if (ix==0) {
        !            52:                mult = -200;
        !            53:                mulp = -1000; }
        !            54:            else   {
        !            55:                mulp = -200;
        !            56:                mult = -1000; }
        !            57:        mull(2,200000,exp_psw);
        !            58:        }
        !            59: 
        !            60: for(ix=0;ix<2;ix++)
        !            61:        {
        !            62:        asm("m3:        movab   m3,_stpc");
        !            63:        flag_msk = exp_psw = 0;
        !            64:        flag_msk = Z|V|C;               /* set all flags except N */
        !            65:        exp_psw =  N | C; 
        !            66:        if (ix==0) {
        !            67:                mult = 1234;
        !            68:                mulp = -500; }
        !            69:             else  {
        !            70:                mulp = 1234;
        !            71:                mult = -500; }
        !            72:        mull(2,-617000,exp_psw);
        !            73:        }
        !            74: 
        !            75: for(ix=0;ix<2;ix++)
        !            76:        {
        !            77:        asm("m4:        movab   m4,_stpc");
        !            78:        flag_msk = exp_psw = 0;
        !            79:        flag_msk = N|V|C;               /* set all flags except Z */
        !            80:        exp_psw =  Z | C;
        !            81:        if (ix==0) {
        !            82:                mult = 0x1234;
        !            83:                mulp = 0;  }
        !            84:              else {
        !            85:                mulp = 0x1234;
        !            86:                mult = 0;  }
        !            87:        mull(2,0,exp_psw);
        !            88:        }
        !            89: 
        !            90:        /* test V bit, Overflow */
        !            91: for(ix=0;ix<2;ix++)
        !            92:        {
        !            93:        asm("m5:        movab   m5,_stpc");
        !            94:        flag_msk = exp_psw = 0;
        !            95:        exp_psw = (V);                  /* any other flags may be set */
        !            96:        if (ix==0) {
        !            97:                mult = 0x80000000;      /* Max negative no. */
        !            98:                mulp = -1; }
        !            99:              else {
        !           100:                mulp = 0x80000000;
        !           101:                mult = -1; }
        !           102:        mull(2,0,exp_psw);
        !           103:        }
        !           104: 
        !           105: for(ix=0;ix<2;ix++)
        !           106:        {
        !           107:        asm("m6:        movab   m6,_stpc");
        !           108:        flag_msk = exp_psw = 0;
        !           109:        exp_psw = (V);                  /* any other flags may be set */
        !           110:        if (ix==0) {
        !           111:                mult = -65646;
        !           112:                mulp = 65646; }
        !           113:              else {
        !           114:                mulp = -65646;
        !           115:                mult = 65646; }
        !           116:        mull(2,0,exp_psw);
        !           117:        }
        !           118: }
        !           119: 
        !           120: static mull3()
        !           121: {      long exp_psw , ix;
        !           122: 
        !           123:        /* multiply long with 3 operands */
        !           124: for(ix=0;ix<2;ix++)
        !           125:        {
        !           126:        asm("m7:        movab   m7,_stpc");
        !           127:        flag_msk = exp_psw = C;
        !           128:        flag_msk = N|Z|V|C;
        !           129:        if (ix==0) {
        !           130:                mult = 0x12345;
        !           131:                mulp = 0xbff; }
        !           132:            else {
        !           133:                mulp = 0x12345;
        !           134:                mult = 0xbff; }
        !           135:        mull(3,0xda618bb,exp_psw);
        !           136:        } 
        !           137:  
        !           138: for(ix=0;ix<2;ix++)
        !           139:        {
        !           140:        asm("m8:        movab   m8,_stpc");
        !           141:        flag_msk = exp_psw = C;
        !           142:        flag_msk = N|Z|V|C;
        !           143:        if (ix==0) {
        !           144:                mult = -3001;
        !           145:                mulp = -300; }
        !           146:             else  {
        !           147:                mulp = -3001;
        !           148:                mult = -300; }
        !           149:        mull(3,900300,exp_psw);
        !           150:        }
        !           151:        
        !           152: for(ix=0;ix<2;ix++)
        !           153:        {
        !           154:        asm("m9:        movab   m9,_stpc");
        !           155:        flag_msk = exp_psw = 0;
        !           156:        flag_msk = Z|V|C;               /* set all flags except N */
        !           157:        exp_psw =  N | C;
        !           158:        if (ix==0) {
        !           159:                mult = 1234;
        !           160:                mulp = -500; }
        !           161:             else  {
        !           162:                mulp = 1234;
        !           163:                mult = -500; }
        !           164:        mull(3,-617000,exp_psw);
        !           165:        }
        !           166: 
        !           167: for(ix=0;ix<2;ix++)
        !           168:        {
        !           169:        asm("m10:       movab   m10,_stpc");
        !           170:        flag_msk = exp_psw = 0;
        !           171:        flag_msk = N|V;         /* set all flags except Z,C */
        !           172:        exp_psw = Z | C;
        !           173:        if (ix==0) {
        !           174:                mult = 0x1234;
        !           175:                mulp = 0; }
        !           176:             else  {
        !           177:                mulp = 0x1234;
        !           178:                mult = 0; }
        !           179:        mull(3,0,exp_psw);
        !           180:        }
        !           181: 
        !           182:        /* test V bit                   */
        !           183: for(ix=0;ix<2;ix++)
        !           184:        {
        !           185:        asm("m11:       movab   m11,_stpc");
        !           186:        flag_msk = exp_psw = 0;
        !           187:        exp_psw = (V);                  /* any other flags may be set */
        !           188:        if (ix==0) {
        !           189:                mult = 0x80000000;      /* Max negative no. */
        !           190:                mulp = -1; }
        !           191:              else {
        !           192:                mulp = 0x80000000;      /* Max negative no. */
        !           193:                mult = -1; }
        !           194:        mull(3,0,exp_psw);
        !           195:        }
        !           196: 
        !           197: for(ix=0;ix<2;ix++)
        !           198:        {
        !           199:        asm("m12:       movab   m12,_stpc");
        !           200:        flag_msk = exp_psw = 0;
        !           201:        exp_psw = (V);                  /* any other flags may be set */
        !           202:        if (ix==0) {
        !           203:                mult = -65646;
        !           204:                mulp = 65646; }
        !           205:            else   {
        !           206:                mulp = -65646;
        !           207:                mult = 65646; }
        !           208:        mull(3,0,exp_psw);
        !           209:        }
        !           210: }
        !           211: 
        !           212: static exmul()
        !           213: {      long exp_psw ;
        !           214: 
        !           215:        /* extended multiply            */
        !           216: 
        !           217:        asm("m13:       movab   m13,_stpc");
        !           218:        flag_msk = exp_psw = 0;
        !           219:        flag_msk = N|V|C;               /* set N,V,C flags      */
        !           220:        exp_psw =  Z | C;
        !           221:        exp_reslt1 = 0;
        !           222:        exp_reslt2 = 0;
        !           223: /*     mult = -4;              */
        !           224:        asm("movl $-4,_mult");          /* so not to use mnegl */
        !           225:        muld = 5;
        !           226:        add = 20;
        !           227:        emul(exp_psw);
        !           228: 
        !           229:        asm("m14:       movab   m14,_stpc");
        !           230:        flag_msk = exp_psw = 0;
        !           231:        flag_msk = Z|V|C;               /* set Z,V,C flags      */
        !           232:        exp_psw =  N | C;
        !           233:        asm("movl $0xffffffff,_exp_reslt1");
        !           234:        asm("movl $0xffffffff,_exp_reslt2");
        !           235: /*     exp_reslt1 = 0xffffffff;
        !           236:        exp_reslt2 = 0xffffffff;        */
        !           237: 
        !           238:        /* Expected result is a quad : 0xffffffffffffffff  (-1) */
        !           239:        mult = -4000;
        !           240:        muld = 50;
        !           241:        add = 199999;
        !           242:        emul(exp_psw);
        !           243: 
        !           244:        asm("m15:       movab   m15,_stpc");
        !           245:        flag_msk = exp_psw = C;
        !           246:        flag_msk = N|Z|V|C;             /* set all flags        */
        !           247:        exp_reslt2 = 0x60000000 ;
        !           248:        exp_reslt1 = 0x01000000 ;
        !           249: 
        !           250:        /* Expected result is a quad : 0x0100000060000000 */
        !           251:        mult = 0xfffffff;
        !           252:        muld = 0xfffffff;       
        !           253:        add = 0x7fffffff;
        !           254:        emul(exp_psw);
        !           255: }
        !           256: 
        !           257: /*     ROUTINE TO EXECUTE MULL2 AND MULL3      */
        !           258: 
        !           259: static mull(type,exp_result,exp_psw)
        !           260: long  exp_result,  exp_psw, type;
        !           261: {
        !           262:        long op1, op2, psw, ix;
        !           263:        char *msg1, *msg2;
        !           264: 
        !           265:    flag_msk = flag_msk << 16;
        !           266:    op1 = mult;
        !           267:    op2 = mulp;
        !           268:    for(;;)
        !           269:         {
        !           270:        for (ix=0;ix<8;ix++) 
        !           271:        {
        !           272:        mult = op1;
        !           273:        mulp = op2;
        !           274: 
        !           275:        /*  set flags  */
        !           276:        if (type == 2) {
        !           277:                if (ix==0) {            /* Memory to memory */
        !           278:                        setjmp();
        !           279:                        asm("movl       $1,_subtst");
        !           280:                        asm("bicpsw $0xf");
        !           281:                        asm("bispsw _flag_msk");        /* set flags       */
        !           282:                        asm("mull2  _mult,_mulp");
        !           283:                        asm("movpsl _psl");             /* save PSL */
        !           284:                        product = mulp;
        !           285:                        }
        !           286:                if (ix==1) {            /* Register to register */
        !           287:                        setjmp();
        !           288:                        asm("movl       $2,_subtst");
        !           289:                        asm("movl _mult,r3");
        !           290:                        asm("movl _mulp,r4");
        !           291:                        asm("bicpsw $0xf");
        !           292:                        asm("bispsw _flag_msk");        /* set flags       */
        !           293:                        asm("mull2  r3,r4");
        !           294:                        asm("movpsl _psl");             /* save PSL */
        !           295:                        asm("movl r4,_mulp");
        !           296:                        product = mulp;
        !           297:                        }
        !           298:                if (ix==2) {            /* Memory to register */
        !           299:                        setjmp();
        !           300:                        asm("movl       $3,_subtst");
        !           301:                        asm("movl _mulp,r4");
        !           302:                        asm("bicpsw $0xf");
        !           303:                        asm("bispsw _flag_msk");        /* set flags       */
        !           304:                        asm("mull2  _mult,r4");
        !           305:                        asm("movpsl _psl");             /* save PSL */
        !           306:                        asm("movl r4,_mulp");
        !           307:                        product = mulp;
        !           308:                        }
        !           309:                if (ix==3) {            /* Register to memory */
        !           310:                        setjmp();
        !           311:                        asm("movl       $4,_subtst");
        !           312:                        asm("movl _mult,r3");
        !           313:                        asm("bicpsw $0xf");
        !           314:                        asm("bispsw _flag_msk");        /* set flags       */
        !           315:                        asm("mull2  r3,_mulp");
        !           316:                        asm("movpsl _psl");             /* save PSL */
        !           317:                        product = mulp;
        !           318:                        }
        !           319:                }
        !           320:            else {
        !           321:                if (ix==0) {            /* Memory to memory to memory */
        !           322:                        setjmp();
        !           323:                        asm("movl       $5,_subtst");
        !           324:                        asm("bicpsw $0xf");
        !           325:                        asm("bispsw _flag_msk");        /* set flags       */
        !           326:                        asm("mull3  _mult,_mulp,_product");
        !           327:                        asm("movpsl _psl");             /* save PSL */
        !           328:                        }
        !           329:                if (ix==1) {            /* Register to register to register */
        !           330:                        setjmp();
        !           331:                        asm("movl       $6,_subtst");
        !           332:                        asm("movl _mult,r3");
        !           333:                        asm("movl _mulp,r4");
        !           334:                        asm("bicpsw $0xf");
        !           335:                        asm("bispsw _flag_msk");        /* set flags       */
        !           336:                        asm("mull3  r3,r4,r6");
        !           337:                        asm("movpsl _psl");             /* save PSL */
        !           338:                        asm("movl r6,_product");
        !           339:                        }
        !           340:                if (ix==2) {            /* Memory to register to memory */
        !           341:                        setjmp();
        !           342:                        asm("movl       $7,_subtst");
        !           343:                        asm("movl _mulp,r4");
        !           344:                        asm("bicpsw $0xf");
        !           345:                        asm("bispsw _flag_msk");        /* set flags       */
        !           346:                        asm("mull3  _mult,r4,_product");
        !           347:                        asm("movpsl _psl");             /* save PSL */
        !           348:                        }
        !           349:                if (ix==3) {            /* Register to memory to register */
        !           350:                        setjmp();
        !           351:                        asm("movl       $8,_subtst");
        !           352:                        asm("movl _mult,r3");
        !           353:                        asm("bicpsw $0xf");
        !           354:                        asm("bispsw _flag_msk");        /* set flags       */
        !           355:                        asm("mull3  r3,_mulp,r6");
        !           356:                        asm("movpsl _psl");             /* save PSL */
        !           357:                        asm("movl r6,_product");
        !           358:                        }
        !           359:                if (ix==4) {            /* Register to register to memory */
        !           360:                        setjmp();
        !           361:                        asm("movl       $9,_subtst");
        !           362:                        asm("movl _mult,r3");
        !           363:                        asm("movl _mulp,r4");
        !           364:                        asm("bicpsw $0xf");
        !           365:                        asm("bispsw _flag_msk");        /* set flags       */
        !           366:                        asm("mull3  r3,r4,_product");
        !           367:                        asm("movpsl _psl");             /* save PSL */
        !           368:                        }
        !           369:                if (ix==5) {            /* Memory to register to register */
        !           370:                        setjmp();
        !           371:                        asm("movl       $0xa,_subtst");
        !           372:                        asm("movl _mulp,r4");
        !           373:                        asm("bicpsw $0xf");
        !           374:                        asm("bispsw _flag_msk");        /* set flags       */
        !           375:                        asm("mull3  _mult,r4,r6");
        !           376:                        asm("movpsl _psl");             /* save PSL */
        !           377:                        asm("movl r6,_product");
        !           378:                        }
        !           379:                if (ix==6) {            /* Register to memory to memory */
        !           380:                        setjmp();
        !           381:                        asm("movl       $0xb,_subtst");
        !           382:                        asm("movl _mult,r3");
        !           383:                        asm("bicpsw $0xf");
        !           384:                        asm("bispsw _flag_msk");        /* set flags       */
        !           385:                        asm("mull3  r3,_mulp,_product");
        !           386:                        asm("movpsl _psl");             /* save PSL */
        !           387:                        }
        !           388:                if (ix==7) {            /* Memory to memory to register */
        !           389:                        setjmp();
        !           390:                        asm("movl       $0xc,_subtst");
        !           391:                        asm("bicpsw $0xf");
        !           392:                        asm("bispsw _flag_msk");        /* set flags       */
        !           393:                        asm("mull3  _mult,_mulp,r6");
        !           394:                        asm("movpsl _psl");             /* save PSL */
        !           395:                        asm("movl r6,_product");
        !           396:                        }
        !           397:                }
        !           398:        psw =  psl & 0xf;       /* mask out high order word of PSL */
        !           399: 
        !           400:        /*  check flags */
        !           401: 
        !           402:        if (exp_psw & V){       /* On expected overflows */
        !           403:          if( !(psw & V) ) {    /* We only look at the (V) flag */
        !           404:                asm("movl       $2,_ercode");
        !           405:                if (scoplp) longjmp();
        !           406:                error_hdl2(psw,exp_psw,op1,op2);
        !           407:          }
        !           408:        continue;                       /* skip other checks */
        !           409:        }
        !           410:        else if  (psw != exp_psw)  
        !           411:                {
        !           412:                asm("movl       $2,_ercode");
        !           413:                if (scoplp) longjmp();
        !           414:                error_hdl2(psw,exp_psw,op1,op2);
        !           415:                }
        !           416:        if (mult != op1)
        !           417:                {
        !           418:                asm("movl       $3,_ercode");
        !           419:                if (scoplp) longjmp();
        !           420:                error_hdl2(mult,op1,op1,op2);
        !           421:                }
        !           422:        if (type == 3)
        !           423:                {
        !           424:                if (mulp != op2)
        !           425:                    {
        !           426:                asm("movl       $3,_ercode");
        !           427:                if (scoplp) longjmp();
        !           428:                        error_hdl2(mulp,op2,op1,op2);
        !           429:                    }
        !           430:                }
        !           431:        if (product != exp_result)
        !           432:                {               /* error in multiply operation */
        !           433:                asm("movl       $1,_ercode");
        !           434:                if (scoplp) longjmp();
        !           435:                error_hdl2(product,exp_result,op1,op2);
        !           436:                }
        !           437:                if (force_lp) longjmp();
        !           438:        }
        !           439:        break;
        !           440:        }
        !           441: }
        !           442: 
        !           443: /*     ROUTINE TO EXECUTE EMUL         */
        !           444: 
        !           445: static emul(exp_psw)
        !           446: long exp_psw;
        !           447: {      
        !           448:        long op1, op2, op3, psw, type;
        !           449:        char *msg1, *msg2;
        !           450: 
        !           451:    flag_msk = flag_msk << 16;
        !           452:    op1  = mult;
        !           453:    op2  = muld;
        !           454:    op3  = add;
        !           455:    for(;;)
        !           456:         {
        !           457:        msg1 = "** Test EMUL **\n";
        !           458:        for(type=0;type<8;type++)
        !           459:        {
        !           460:        mult = op1;
        !           461:        muld = op2;
        !           462:        add = op3;
        !           463: 
        !           464:        if (type==0)  {         /* Memory memory memory memory */
        !           465:                asm("movl       $0xd,_subtst");
        !           466:                asm("bicpsw $0xf");             /* clear all flags */
        !           467:                asm("bispsw _flag_msk");        /* set flags       */
        !           468:                asm("emul  _mult,_muld,_add,_prod1");
        !           469:                asm("movpsl _psl");             /* save PSL */
        !           470:                psw =  psl & 0xf;
        !           471:                }
        !           472:        if (type==1)  {         /* Register,register,register register */
        !           473:                asm("movl       $0xe,_subtst");
        !           474:                asm("movl _mult,r3");
        !           475:                asm("movl _muld,r4");
        !           476:                asm("movl _add,r5");
        !           477:                asm("bicpsw $0xf");             /* clear all flags */
        !           478:                asm("bispsw _flag_msk");        /* set flags       */
        !           479:                asm("emul  r3,r4,r5,r6");
        !           480:                asm("movpsl _psl");             /* save PSL */
        !           481:                psw =  psl & 0xf;
        !           482:                asm("movl r6,_prod1");
        !           483:                asm("movl r7,_prod2");
        !           484:                }
        !           485:        if (type==2)  {         /* Register register Memory memory */
        !           486:                asm("movl       $0xf,_subtst");
        !           487:                asm("movl _mult,r3");
        !           488:                asm("movl _muld,r4");
        !           489:                asm("bicpsw $0xf");             /* clear all flags */
        !           490:                asm("bispsw _flag_msk");        /* set flags       */
        !           491:                asm("emul  r3,r4,_add,_prod1");
        !           492:                asm("movpsl _psl");             /* save PSL */
        !           493:                psw =  psl & 0xf;
        !           494:                }
        !           495:        if (type==3)  {         /* Register memory Memory register */
        !           496:                asm("movl       $0x10,_subtst");
        !           497:                asm("movl _mult,r3");
        !           498:                asm("bicpsw $0xf");             /* clear all flags */
        !           499:                asm("bispsw _flag_msk");        /* set flags       */
        !           500:                asm("emul  r3,_muld,_add,r6");
        !           501:                asm("movpsl _psl");             /* save PSL */
        !           502:                psw =  psl & 0xf;
        !           503:                asm("movl r6,_prod1");
        !           504:                asm("movl r7,_prod2");
        !           505:                }
        !           506:        if (type==4)  {         /* Memory memory register memory */
        !           507:                asm("movl       $0x11,_subtst");
        !           508:                asm("movl _add,r5");
        !           509:                asm("bicpsw $0xf");             /* clear all flags */
        !           510:                asm("bispsw _flag_msk");        /* set flags       */
        !           511:                asm("emul  _mult,_muld,r5,_prod1");
        !           512:                asm("movpsl _psl");             /* save PSL */
        !           513:                psw =  psl & 0xf;
        !           514:                }
        !           515:        if (type==5)  {         /* Register memory register memory */
        !           516:                asm("movl       $0x12,_subtst");
        !           517:                asm("movl _mult,r3");
        !           518:                asm("movl _add,r5");
        !           519:                asm("bicpsw $0xf");             /* clear all flags */
        !           520:                asm("bispsw _flag_msk");        /* set flags       */
        !           521:                asm("emul  r3,_muld,r5,_prod1");
        !           522:                asm("movpsl _psl");             /* save PSL */
        !           523:                psw =  psl & 0xf;
        !           524:                }
        !           525:        if (type==6)  {         /* Memory register register memory */
        !           526:                asm("movl       $0x13,_subtst");
        !           527:                asm("movl _muld,r4");
        !           528:                asm("movl _add,r5");
        !           529:                asm("bicpsw $0xf");             /* clear all flags */
        !           530:                asm("bispsw _flag_msk");        /* set flags       */
        !           531:                asm("emul  _mult,r4,r5,_prod1");
        !           532:                asm("movpsl _psl");             /* save PSL */
        !           533:                psw =  psl & 0xf;
        !           534:                }
        !           535:        if (type==7)  {         /* Memory register memory register */
        !           536:                asm("movl       $0x14,_subtst");
        !           537:                asm("movl _muld,r4");
        !           538:                asm("bicpsw $0xf");             /* clear all flags */
        !           539:                asm("bispsw _flag_msk");        /* set flags       */
        !           540:                asm("emul  _mult,r4,_add,r6");
        !           541:                asm("movpsl _psl");             /* save PSL */
        !           542:                psw =  psl & 0xf;
        !           543:                asm("movl r6,_prod1");
        !           544:                asm("movl r7,_prod2");
        !           545:                }
        !           546: 
        !           547:        if ( prod1 != exp_reslt1)
        !           548:                {               /* error in ext. multiply operation */
        !           549:                asm("movl       $1,_ercode");
        !           550:                if (scoplp) longjmp();
        !           551:                error(prod1,exp_reslt1,op1,op2);
        !           552:                }
        !           553:        if ( prod2 != exp_reslt2 )
        !           554:                {               /* error in ext. multiply operation */
        !           555:                asm("movl       $1,_ercode");
        !           556:                if (scoplp) longjmp();
        !           557:                error(prod2,exp_reslt2,op1,op2);
        !           558:                }
        !           559:        /*  check flags */
        !           560:        if (psw!=exp_psw) 
        !           561:                {
        !           562:                asm("movl       $3,_no_opr");
        !           563:                asm("movl       $2,_ercode");
        !           564:                if (scoplp) longjmp();
        !           565:                error_hdl3(psw,exp_psw,op1,op2,op3);
        !           566:                }
        !           567: 
        !           568:        if (mult != op1)
        !           569:                {
        !           570:                asm("movl       $3,_no_opr");
        !           571:                asm("movl       $3,_ercode");
        !           572:                if (scoplp) longjmp();
        !           573:                error_hdl3(mult,op1,op1,op2,op3);
        !           574:                }
        !           575:        if (muld != op2)
        !           576:                {
        !           577:                asm("movl       $3,_no_opr");
        !           578:                asm("movl       $3,_ercode");
        !           579:                if (scoplp) longjmp();
        !           580:                error_hdl3(muld,op2,op1,op2,op3);
        !           581:                }
        !           582:        if (add != op3)
        !           583:                {
        !           584:                asm("movl       $3,_no_opr");
        !           585:                asm("movl       $3,_ercode");
        !           586:                if (scoplp) longjmp();
        !           587:                error_hdl3(add,op3,op1,op2,op3);
        !           588:                }
        !           589:                if (force_lp) longjmp();
        !           590:        }
        !           591:        break;
        !           592:        }
        !           593: }
        !           594: 
        !           595: 

unix.superglobalmegacorp.com

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