Annotation of cci/d/entry/bb_c.s, revision 1.1

1.1     ! root        1: 
        !             2: /*             BBC (branch on bit clear) test                          */
        !             3: /*                                                                     */
        !             4: /*Test name = bbc                                                      */
        !             5: /*Description =                                                                */
        !             6: /*     This test checks 'bbc' instruction as follows:                  */
        !             7: /*     (1) forward/backward branch on bit set conditon                 */
        !             8: /*     (2) no branch on bit off condition                              */
        !             9: /*     (3) no effect on condition codes                                */
        !            10: /*                                                                     */
        !            11: /*                                                                     */
        !            12: 
        !            13: /*                                                                     */
        !            14: /*     constants                                                       */
        !            15: /*                                                                     */
        !            16: 
        !            17:        .set    P1,0x80808101   /*bits 0,8,15,23,31 ON*/
        !            18:        .set    P2,0x7f7f7efe   /*same bits OFF       */
        !            19:        .set    BIT0,0
        !            20:        .set    BIT8,8
        !            21:        .set    BIT15,15
        !            22:        .set    BIT23,23
        !            23:        .set    BIT31,31
        !            24: 
        !            25: /*                                                                     */
        !            26: /*     Syst.s - Constants                                              */
        !            27: /*                                                                     */
        !            28:        .set    IPL,8
        !            29:        .set    HIGH,31
        !            30:        .set    ZERO,0
        !            31:        .set    ONES,0xffffffff
        !            32:        .set    N,8
        !            33:        .set    Z,4
        !            34:        .set    V,2
        !            35:        .set    C,1
        !            36:        .set    T,16
        !            37:        .set    IV,32
        !            38:        .set    FU,64
        !            39:        .set    DV,128
        !            40:        .set    PSWMASK,0x003f
        !            41: 
        !            42:        .globl  _bbc
        !            43: _bbc:
        !            44:        callf   $4,_setjmp      /* save context for error return */
        !            45:        movab   _bbc,_stpc      /* save address of subtest */
        !            46:        movl    $1,_subtst      /* subtest number */
        !            47:        movl    $2,_no_opr      /* number of operands in use */
        !            48:        movl    $BIT0,_opr      /* first operand */
        !            49:        movl    $P2,_opr + 4    /* second operand */
        !            50:        movl    $0,_actual      /* no data for this test it is zero */
        !            51:        movl    $0,_expected    /* no data for this test it is zero */
        !            52: 0:     
        !            53:        movl    $P2,r0          /*bits 0,8,15,23,31 OFF                 */
        !            54:        bicpsw  $PSWMASK
        !            55:        bispsw  $(N|Z|V|C)      /*these flags ON                        */
        !            56:        bbs     $BIT0,r0,erc0   /*should not branch as bit 0 is OFF data reg*/
        !            57:        bbc     $BIT0,r0,fs0    /*branch forward on bit clear data reg  */
        !            58:        movpsl  _actual         /* actual = psl */
        !            59:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !            60:        movl    $2,_ercode      /* error code flag failure bad jump action */
        !            61:        jmp     *badrtn         /* no actual or expected data */
        !            62: bs0:
        !            63:        bbc     $BIT0,r0,flgs0  /*branch to flag test                   */
        !            64:        jmp     error1
        !            65:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !            66:        jmp     error1
        !            67: erc0:
        !            68:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !            69:        jmp     error1
        !            70:        .space  110             /*dangerous area - don't come in        */
        !            71: fs0:
        !            72:        bbc     $BIT0,r0,bs0    /*branch backward on bit clear          */
        !            73:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !            74:        jmp     error1
        !            75: flgs0:
        !            76:        jneq    errs1           /*Z != 1 - error                        */
        !            77:        jlss    errs1           /*N != 0 - error                        */
        !            78:        jvs     errs1           /*V != 0 - error                        */
        !            79:        jcc     errs1           /*C != 1 - error                        */
        !            80:        jmp     bn2             /* no errors - continue */
        !            81: errs1:
        !            82:        movpsl  _actual         /* actual = psl */
        !            83:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !            84:        movl    $2,_ercode      /* error code flag failure */
        !            85:        jmp     *badrtn
        !            86: 
        !            87: bn2:   bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !            88: b2:    callf   $4,_setjmp      /* save context for error return */
        !            89:        movab   b2,_stpc        /* save address of subtest */
        !            90:        movl    $2,_subtst      /* subtest number */
        !            91:        movl    $2,_no_opr      /* number of operands in use */
        !            92:        movl    $BIT31,_opr     /* first operand */
        !            93:        movl    $P2,_opr + 4    /* second operand */
        !            94: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
        !            95:        movl    $P2,r0          /*bits 0,8,15,23,31 OFF                 */
        !            96:        movl    $BIT31,r6
        !            97:        bicpsw  $PSWMASK
        !            98:        bbs     r6,r0,erc31     /*should not branch as bit 31 is OFF reg reg */
        !            99:        bbc     r6,r0,fs31      /*branch forward on bit clear reg reg   */
        !           100:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           101:        jmp     error1
        !           102: bs31:
        !           103:        bbc     $BIT31,r0,flgc31 /*branch to flag test                  */
        !           104:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           105:        jmp     error1
        !           106: erc31:
        !           107:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           108:        jmp     error1
        !           109:        .space  110             /*dangerous area - don't come in        */
        !           110: fs31:
        !           111:        bbc     $BIT31,r0,bs31  /*branch backward on bit clear          */
        !           112:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           113:        jmp     error1
        !           114: flgc31:
        !           115:        jneq    errs2           /*Z != 1 - error                        */
        !           116:        jlss    errs2           /*N != 0 - error                        */
        !           117:        jvs     errs2           /*V != 0 - error                        */
        !           118:        jcc     errs2           /*C != 1 - error                        */
        !           119:        jmp     bn3             /* no errors - continue */
        !           120: errs2:
        !           121:        movpsl  _actual         /* actual = psl */
        !           122:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           123:        movl    $2,_ercode      /* error code flag failure */
        !           124:        jmp     *badrtn
        !           125: 
        !           126: bn3:   bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           127: b3:    callf   $4,_setjmp      /* save context for error return */
        !           128:        movab   b3,_stpc        /* save address of subtest */
        !           129:        movl    $3,_subtst      /* subtest number */
        !           130:        movl    $2,_no_opr      /* number of operands in use */
        !           131:        movl    $BIT8,_opr      /* first operand */
        !           132:        movl    $P2,_opr + 4    /* second operand */
        !           133: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
        !           134:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
        !           135:        bbs     $BIT8,tloc,erc8 /* should not branch as bit 8 is off data mem*/
        !           136:        bbc     $BIT8,tloc,fs8  /*branch forward on bit clear data mem  */
        !           137:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           138:        jmp     error1
        !           139: bs8:
        !           140:        bbc     $BIT8,r0,s15    /*next test                             */
        !           141:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           142:        jmp     error1
        !           143: erc8:
        !           144:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           145:        jmp     error1
        !           146:        .space  110             /*dangerous area - don't come in        */
        !           147: fs8:
        !           148:        bbc     $BIT8,r0,bs8    /*branch backward on bit clear          */
        !           149:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           150:        jmp     error1
        !           151: 
        !           152: s15:
        !           153:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           154: b4:    callf   $4,_setjmp      /* save context for error return */
        !           155:        movab   b4,_stpc        /* save address of subtest */
        !           156:        movl    $4,_subtst      /* subtest number */
        !           157:        movl    $2,_no_opr      /* number of operands in use */
        !           158:        movl    $BIT15,_opr     /* first operand */
        !           159:        movl    $P2,_opr + 4    /* second operand */
        !           160: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
        !           161:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
        !           162:        movl    $BIT15,r0
        !           163:        bbs     r0,tloc,erc15 /*should not branch as bit 15 is OFF reg mem*/
        !           164:        bbc     r0,tloc,bs15
        !           165:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           166:        jmp     error1
        !           167: bs15:
        !           168:        bbc     $BIT15,r0,s23   /*next test                             */
        !           169:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           170:        jmp     error1
        !           171: erc15:
        !           172:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           173:        jmp     error1
        !           174:        .space  110             /*dangerous area - don't come in        */
        !           175: fs15:
        !           176:        bbc     $BIT15,r0,bs15  /*branch backward on bit clear          */
        !           177:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           178:        jmp     error1
        !           179: 
        !           180: s23:
        !           181:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           182: b5:    callf   $4,_setjmp      /* save context for error return */
        !           183:        movab   b5,_stpc        /* save address of subtest */
        !           184:        movl    $5,_subtst      /* subtest number */
        !           185:        movl    $2,_no_opr      /* number of operands in use */
        !           186:        movl    $BIT23,_opr     /* first operand */
        !           187:        movl    $P2,_opr + 4    /* second operand */
        !           188: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
        !           189:        movl    $P2,r0          /*bits 0,8,15,23,31 OFF                 */
        !           190:        bbs     $BIT23,r0,erc23 /*should not branch as bit 23 is OFF    */
        !           191:        bbc     $BIT23,r0,fs23  /*branch forward on bit clear           */
        !           192:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           193:        jmp     error1
        !           194: bs23:
        !           195:        bbc     $BIT23,r0,sm0   /*next test                             */
        !           196:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           197:        jmp     error1
        !           198: erc23:
        !           199:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           200:        jmp     error1
        !           201:        .space  110             /*dangerous area - don't come in        */
        !           202: fs23:
        !           203:        bbc     $BIT23,r0,bs23  /*branch backward on bit clear          */
        !           204:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           205:        jmp     error1
        !           206: 
        !           207: /*                                                                     */
        !           208: /*     now use memory location(tloc) instead of register               */
        !           209: /*                                                                     */
        !           210: 
        !           211: sm0:
        !           212:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           213: b6:    callf   $4,_setjmp      /* save context for error return */
        !           214:        movab   b6,_stpc        /* save address of subtest */
        !           215:        movl    $6,_subtst      /* subtest number */
        !           216:        movl    $2,_no_opr      /* number of operands in use */
        !           217:        movl    $BIT0,_opr      /* first operand */
        !           218: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
        !           219:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
        !           220:        bicpsw  $PSWMASK
        !           221:        bispsw  $(N|Z|V|C)      /*these flags ON                        */
        !           222:        bbs     $BIT0,tloc,ercm0/*should not branch as bit 0 is OFF     */
        !           223:        bbc     $BIT0,tloc,fsm0 /*branch forward on bit clear           */
        !           224:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           225:        jmp     error1
        !           226: bsm0:
        !           227:        bbc     $BIT0,tloc,flgsm0       /*branch to flag test           */
        !           228:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           229:        jmp     error1
        !           230: ercm0:
        !           231:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           232:        jmp     error1
        !           233:        .space  110             /*dangerous area - don't come in        */
        !           234: fsm0:
        !           235:        bbc     $BIT0,tloc,bsm0 /*branch backward on bit clear          */
        !           236:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           237:        jmp     error1
        !           238: flgsm0:
        !           239:        jneq    errs3           /*Z changed - error                     */
        !           240:        jlss    errs3           /*N changed - error                     */
        !           241:        jvs     errs3           /*V changed - error                     */
        !           242:        jcc     errs3           /*C changed - error                     */
        !           243:        jmp     bn7             /* no errors - continue */
        !           244: errs3:
        !           245:        movpsl  _actual         /* actual = psl */
        !           246:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           247:        movl    $2,_ercode      /* error code flag failure */
        !           248:        jmp     *badrtn
        !           249: 
        !           250: bn7:   bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           251: b7:    callf   $4,_setjmp      /* save context for error return */
        !           252:        movab   b7,_stpc        /* save address of subtest */
        !           253:        movl    $7,_subtst      /* subtest number */
        !           254:        movl    $2,_no_opr      /* number of operands in use */
        !           255:        movl    $BIT31,_opr     /* first operand */
        !           256: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
        !           257:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
        !           258:        bicpsw  $PSWMASK
        !           259:        bbs     $BIT31,tloc,ercm31 /*should not branch as bit 31 is OFF */
        !           260:        bbc     $BIT31,tloc,fsm31 /*branch forward on bit clear         */
        !           261:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           262:        jmp     error1
        !           263: bsm31:
        !           264:        bbc     $BIT31,tloc,flgcm31/*branch to flag test                */
        !           265:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           266:        jmp     error1
        !           267: ercm31:
        !           268:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           269:        jmp     error1
        !           270:        .space  110             /*dangerous area - don't come in        */
        !           271: fsm31:
        !           272:        bbc     $BIT31,tloc,bsm31 /*branch backward on bit clear        */
        !           273:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           274:        jmp     error1
        !           275: flgcm31:
        !           276:        jneq    errs4           /*Z changed - error                     */
        !           277:        jlss    errs4           /*N changed - error                     */
        !           278:        jvs     errs4           /*V changed - error                     */
        !           279:        jcc     errs4           /*C changed - error                     */
        !           280:        jmp     bn8             /* no errors - continue */
        !           281: errs4:
        !           282:        movpsl  _actual         /* actual = psl */
        !           283:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           284:        movl    $2,_ercode      /* error code flag failure */
        !           285:        jmp     *badrtn
        !           286: 
        !           287: bn8:   bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           288: b8:    callf   $4,_setjmp      /* save context for error return */
        !           289:        movab   b8,_stpc        /* save address of subtest */
        !           290:        movl    $8,_subtst      /* subtest number */
        !           291:        movl    $2,_no_opr      /* number of operands in use */
        !           292:        movl    $BIT8,_opr      /* first operand */
        !           293: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
        !           294:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
        !           295:        bbs     $BIT8,tloc,ercm8 /*should not branch as bit 8 is OFF    */
        !           296:        bbc     $BIT8,tloc,fsm8 /*branch forward on bit clear           */
        !           297:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           298:        jmp     error1
        !           299: bsm8:
        !           300:        bbc     $BIT8,tloc,sm15 /*next test                             */
        !           301:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           302:        jmp     error1
        !           303: ercm8:
        !           304:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           305:        jmp     error1
        !           306:        .space  110             /*dangerous area - don't come in        */
        !           307: fsm8:
        !           308:        bbc     $BIT8,tloc,bsm8 /*branch backward on bit clear          */
        !           309:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           310:        jmp     error1
        !           311: 
        !           312: sm15:
        !           313:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           314: b9:    callf   $4,_setjmp      /* save context for error return */
        !           315:        movab   b9,_stpc        /* save address of subtest */
        !           316:        movl    $9,_subtst      /* subtest number */
        !           317:        movl    $2,_no_opr      /* number of operands in use */
        !           318:        movl    $BIT15,_opr     /* first operand */
        !           319: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
        !           320:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
        !           321:        bbs     $BIT15,tloc,ercm15/*should not branch as bit 15 is OFF  */
        !           322:        bbc     $BIT15,tloc,fsm15/*branch forward on bit clear          */
        !           323:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           324:        jmp     error1
        !           325: bsm15:
        !           326:        bbc     $BIT15,tloc,sm23/*next test                             */
        !           327:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           328:        jmp     error1
        !           329: ercm15:
        !           330:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           331:        jmp     error1
        !           332:        .space  110             /*dangerous area - don't come in        */
        !           333: fsm15:
        !           334:        bbc     $BIT15,tloc,bsm15/*branch backward on bit clear         */
        !           335:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           336:        jmp     error1
        !           337: 
        !           338: sm23:
        !           339:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           340: b10:   callf   $4,_setjmp      /* save context for error return */
        !           341:        movab   b10,_stpc       /* save address of subtest */
        !           342:        movl    $0xa,_subtst    /* subtest number */
        !           343:        movl    $2,_no_opr      /* number of operands in use */
        !           344:        movl    $BIT23,_opr     /* first operand */
        !           345: 0:     bicpsw  $PSWMASK        /*PSW = 0                               */
        !           346:        movl    $P2,tloc        /*bits 0,8,15,23,31 OFF                 */
        !           347:        bbs     $BIT23,tloc,ercm23 /*should not branch as bit 23 is OFF */
        !           348:        bbc     $BIT23,tloc,fsm23 /*branch forward on bit clear         */
        !           349:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           350:        jmp     error1
        !           351: bsm23:
        !           352:        bbc     $BIT23,tloc,last
        !           353:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           354:        jmp     error1
        !           355: ercm23:
        !           356:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           357:        jmp     error1
        !           358:        .space  110             /*dangerous area - don't come in        */
        !           359: fsm23:
        !           360:        bbc     $BIT23,tloc,bsm23/*branch backward on bit clear         */
        !           361:        bbs     $0,_scoplp,0b   /* if set loop on error */
        !           362:        jmp     error1
        !           363: 
        !           364: last:
        !           365:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           366:        jmp     *return
        !           367: 
        !           368: error1:
        !           369:        movl    $1,_ercode /* error code data miscompare bad branch action */
        !           370:        jmp     *badrtn         /* no actual or expected data */
        !           371: 
        !           372: /*                                                                     */
        !           373: /*     Variables                                                       */
        !           374: /*                                                                     */
        !           375:        .align  2
        !           376: tloc:  .space  4
        !           377: 
        !           378: 
        !           379: /*     End of file                                                     */
        !           380: 

unix.superglobalmegacorp.com

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