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

1.1     ! root        1: 
        !             2: 
        !             3: /*     BBSSI (branch on bit set & set interlocked) test                */
        !             4: /*                                                                     */
        !             5: /*     This test checks 'bbssi' instruction as follows:                */
        !             6: /*     (1) forward/backward branch on bit set conditon                 */
        !             7: /*     (2) no branch on bit off condition & bit is set                 */
        !             8: /*     (3) no effect on condition codes                                */
        !             9: /*                                                                     */
        !            10: /*                                                                     */
        !            11: /*     Syst.s - Constants                                              */
        !            12: /*                                                                     */
        !            13:        .set    IPL,8
        !            14:        .set    HIGH,31
        !            15:        .set    ZERO,0
        !            16:        .set    ONES,0xffffffff
        !            17:        .set    N,8
        !            18:        .set    Z,4
        !            19:        .set    V,2
        !            20:        .set    C,1
        !            21:        .set    T,16
        !            22:        .set    IV,32
        !            23:        .set    FU,64
        !            24:        .set    DV,128
        !            25:        .set    PSWMASK,0xf
        !            26: 
        !            27:        .globl  _bbssi
        !            28: _bbssi:
        !            29:        callf   $4,_setjmp      /* save context for error return */
        !            30:        movab   _bbssi,_stpc    /* save subtest program counter */
        !            31:        movl    $1,_subtst              /* subtest number */
        !            32:        movl    $1,_no_opr      /* number of operands in use */
        !            33:        movl    $0xfffffffe,_opr        /* first operand */
        !            34: 0:     movl    $0xfffffffe,r3  /* All bits are set except bit 0        */
        !            35:        bicpsw  $PSWMASK
        !            36:        bispsw  $(V|Z|C)        /*these flags ON                        */
        !            37:        bbssi   $0,r3,erc0      /*should not branch as bit 0 is OFF     */
        !            38:        jneq    errorc          /*Z changed - error                     */
        !            39:        jlss    errorc          /*N changed - error                     */
        !            40:        jvc     errorc          /*V changed - error                     */
        !            41:        jcc     errorc          /*C changed - error                     */
        !            42:        cmpl    $0xffffffff,r3  /*check that bit is set                 */
        !            43:        jeql    nxt1
        !            44:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            45:        movl    $1,_ercode      /* error code data miscompare */
        !            46:        movl    r3,_actual      /* actual data */
        !            47:        movl    $0xffffffff,_expected    /* expected */
        !            48:        jmp     *badrtn         /*error - bit did not get set           */
        !            49: erc0:
        !            50:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            51:        movl    $3,_ercode      /* error code operand miscompare*/
        !            52:        movl    r3,_actual      /* actual data */
        !            53:        movl    $0xffffffff,_expected    /* expected */
        !            54:        jmp     *badrtn         /*error - branch taken with bit off;    */
        !            55: 
        !            56: errorc:
        !            57:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            58:        movl    $2,_ercode      /* error code flag failure */
        !            59:        movl    r3,_actual      /* actual data */
        !            60:        movl    $0xffffffff,_expected    /* expected */
        !            61:        jmp     *badrtn         /*error - error in flags                */
        !            62: 
        !            63:        .space  12              /*dangerous area - don't come in        */
        !            64: nxt1:
        !            65:        bbs     $0,_force_lp,0  /* if set loop on last subtest */
        !            66: nxt:   callf   $4,_setjmp      /* save context for error return */
        !            67:        movab   nxt,_stpc       /* save subtest program counter */
        !            68:        movl    $2,_subtst              /* subtest number */
        !            69:        movl    $1,_no_opr      /* number of operands in use */
        !            70:        movl    $1,_opr         /* first operand */
        !            71: 0:     movl    $1,r3           /* All bit off except bit 0             */
        !            72:        bispsw  $(Z|N|V|C)      /*these flags ON                        */
        !            73:        bbssi   $0,r3,nxt2      /*now branch forward as bit in ON       */
        !            74:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            75:        movl    $3,_ercode      /* error code operand miscompare */
        !            76:        movl    r3,_actual      /* actual data */
        !            77:        movl    $1,_expected     /* expected */
        !            78:        jmp     *badrtn         /*error - did not branch with bit set;  */
        !            79:        .space  400
        !            80: nxt2:
        !            81:        movl    $3,r1           /* subtest number */
        !            82:        cmpl    $1,r3           /* Check if bit is set                  */
        !            83:        jeql    nxt3
        !            84:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            85:        movl    $1,_ercode      /* error code data miscompare */
        !            86:        movl    r3,_actual      /* actual data */
        !            87:        movl    $1,_expected     /* expected */
        !            88:        jmp     *badrtn         /*error - bit did not get set           */
        !            89: 
        !            90: nxt3:
        !            91:        bbs     $0,_force_lp,0  /* if set loop on last subtest */
        !            92: nx:    callf   $4,_setjmp      /* save context for error return */
        !            93:        movab   nx,_stpc        /* save subtest program counter */
        !            94:        movl    $3,_subtst              /* subtest number */
        !            95:        movl    $1,_no_opr      /* number of operands in use */
        !            96:        movl    $0x7fffffff,_opr        /* first operand */
        !            97: 0:     movl    $0x7fffffff,r3  /* All bits are set except bit 31       */
        !            98:        bicpsw  $PSWMASK
        !            99:        bispsw  $(V|N|C)        /*these flags ON                        */
        !           100:        bbssi   $31,r3,erc1     /*should not branch as bit 31 is OFF    */
        !           101:        jeql    errord          /*Z changed - error                     */
        !           102:        jgeq    errord          /*N changed - error                     */
        !           103:        jvc     errord          /*V changed - error                     */
        !           104:        jcc     errord          /*C changed - error                     */
        !           105:        cmpl    $0xffffffff,r3  /*check that bit is set                 */
        !           106:        jeql    nxt4
        !           107:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           108:        movl    $1,_ercode      /* error code data miscompare */
        !           109:        movl    r3,_actual      /* actual data */
        !           110:        movl    $0x7fffffff,_expected    /* expected */
        !           111:        jmp     *badrtn         /*error - bit did not get set           */
        !           112: erc1:
        !           113:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           114:        movl    $3,_ercode      /* error code operand miscompare */
        !           115:        movl    r3,_actual      /* actual data */
        !           116:        movl    $0x7fffffff,_expected    /* expected */
        !           117:        jmp     *badrtn         /*error - branch taken with bit off;    */
        !           118: errord:
        !           119:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           120:        movl    $2,_ercode      /* error code flag failure */
        !           121:        movl    r3,_actual      /* actual data */
        !           122:        movl    $0x7fffffff,_expected    /* expected */
        !           123:        jmp     *badrtn         /*error - error in flags                */
        !           124: nxt4:
        !           125:        bbs     $0,_force_lp,0  /* if set loop on last subtest */
        !           126: n:     callf   $4,_setjmp      /* save context for error return */
        !           127:        movab   n,_stpc         /* save subtest program counter */
        !           128:        movl    $4,_subtst              /* subtest number */
        !           129:        movl    $1,_no_opr      /* number of operands in use */
        !           130:        movl    $0x80000000,_opr        /* first operand */
        !           131: 0:     movl    $0x80000000,r3  /* All bit off except bit 31            */
        !           132:        bispsw  $(Z|N|V|C)      /*these flags ON                        */
        !           133:        bbssi   $31,r3,nxt5     /*now branch forward as bit in ON       */
        !           134:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           135:        movl    $3,_ercode      /* error code operand misompare */
        !           136:        movl    r3,_actual      /* actual data */
        !           137:        movl    $0x80000000,_expected    /* expected */
        !           138:        jmp     *badrtn         /*error - did not branch with bit set;  */
        !           139:        .space  400
        !           140: nxt5:
        !           141:        cmpl    $0x80000000,r3  /* Check if bit still set ?             */
        !           142:        jeql    nxt6
        !           143:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           144:        movl    $1,_ercode      /* error code data miscompare */
        !           145:        movl    r3,_actual      /* actual data */
        !           146:        movl    $0x80000000,_expected    /* expected */
        !           147:        jmp     *badrtn         /*error - bit did not get set           */
        !           148: 
        !           149: /*                                                                     */
        !           150: /*     Now use memory location (tloc) instead of register              */
        !           151: /*                                                                     */
        !           152: 
        !           153: nxt6:
        !           154:        bbs     $0,_force_lp,0  /* if set loop on last subtest */
        !           155: txn:   callf   $4,_setjmp      /* save context for error return */
        !           156:        movab   txn,_stpc               /* save subtest program counter */
        !           157:        movl    $5,_subtst              /* subtest number */
        !           158:        movl    $1,_no_opr      /* number of operands in use */
        !           159:        movl    $0xfffffffe,_opr        /* first operand */
        !           160: 0:     movl    $0xfffffffe,tloc /* All bits are set except bit 0       */
        !           161:        bicpsw  $PSWMASK
        !           162:        bispsw  $(V|Z|C)        /*these flags ON                        */
        !           163:        bbssi   $0,tloc,erc2    /*should not branch as bit 0 is OFF     */
        !           164:        jneq    errore          /*Z changed - error                     */
        !           165:        jlss    errore          /*N changed - error                     */
        !           166:        jvc     errore          /*V changed - error                     */
        !           167:        jcc     errore          /*C changed - error                     */
        !           168:        cmpl    $0xffffffff,tloc        /* Check that bit is set        */
        !           169:        jeql    nxt7
        !           170:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           171:        movl    $1,_ercode      /* error code data miscompare */
        !           172:        movl    tloc,_actual    /* actual data */
        !           173:        movl    $0xffffffff,_expected    /* expected */
        !           174:        jmp     *badrtn         /*error - bit did not get set           */
        !           175: erc2:
        !           176:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           177:        movl    $3,_ercode      /* error code operand miscompare */
        !           178:        movl    tloc,_actual    /* actual data */
        !           179:        movl    $0xffffffff,_expected    /* expected */
        !           180:        jmp     *badrtn         /*error - branch taken with bit off;    */
        !           181: 
        !           182: errore:
        !           183:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           184:        movl    $2,_ercode      /* error flag miscompare */
        !           185:        movl    tloc,_actual    /* actual data */
        !           186:        movl    $0xffffffff,_expected    /* expected */
        !           187:        jmp     *badrtn         /*error - error in flags                */
        !           188: 
        !           189: nxt7:
        !           190:        bbs     $0,_force_lp,0  /* if set loop on last subtest */
        !           191: tx:    callf   $4,_setjmp      /* save context for error return */
        !           192:        movab   tx,_stpc                /* save subtest program counter */
        !           193:        movl    $6,_subtst              /* subtest number */
        !           194:        movl    $1,_no_opr      /* number of operands in use */
        !           195:        movl    $1,_opr         /* first operand */
        !           196: 0:     movl    $1,tloc         /* All bit off except bit 0             */
        !           197:        bbssi   $0,tloc,nxt8    /*now branch forward as bit in ON       */
        !           198:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           199:        movl    $3,_ercode      /* error code operand miscompare */
        !           200:        movl    tloc,_actual    /* actual data */
        !           201:        movl    $1,_expected     /* expected */
        !           202:        jmp     *badrtn         /*error - did not branch with bit set;  */
        !           203:        .space  400
        !           204: nxt8:
        !           205:        cmpl    $1,tloc         /* Check if bit is set                  */
        !           206:        jeql    nxt9
        !           207:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           208:        movl    $1,_ercode      /* error code data miscompare */
        !           209:        movl    tloc,_actual    /* actual data */
        !           210:        movl    $1,_expected     /* expected */
        !           211:        jmp     *badrtn         /*error - bit did not get set           */
        !           212: nxt9:
        !           213:        bbs     $0,_force_lp,0  /* if set loop on last subtest */
        !           214: tx9:   callf   $4,_setjmp      /* save context for error return */
        !           215:        movab   tx9,_stpc               /* save subtest program counter */
        !           216:        movl    $7,_subtst              /* subtest number */
        !           217:        movl    $1,_no_opr      /* number of operands in use */
        !           218:        movl    $0x7fffffff,_opr        /* first operand */
        !           219: 0:     movl    $0x7fffffff,tloc /* All bits are set except bit 31      */
        !           220:        bicpsw  $PSWMASK
        !           221:        bispsw  $(V|N|C)        /*these flags ON                        */
        !           222:        bbssi   $31,tloc,erc3   /*should not branch as bit 31 is OFF    */
        !           223:        jeql    errorf          /*Z changed - error                     */
        !           224:        jgeq    errorf          /*N changed - error                     */
        !           225:        jvc     errorf          /*V changed - error                     */
        !           226:        jcc     errorf          /*C changed - error                     */
        !           227:        cmpl    $0xffffffff,tloc        /* Check that bit is set        */
        !           228:        jeql    nxt10
        !           229:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           230:        movl    $1,_ercode      /* error code data miscompare */
        !           231:        movl    tloc,_actual    /* actual data */
        !           232:        movl    $0xffffffff,_expected    /* expected */
        !           233:        jmp     *badrtn         /*error - bit did not get set           */
        !           234: erc3:
        !           235:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           236:        movl    $3,_ercode      /* error code operand miscompare */
        !           237:        movl    tloc,_actual    /* actual data */
        !           238:        movl    $0x7ffffffff,_expected   /* expected */
        !           239:        jmp     *badrtn         /*error - branch taken with bit off;    */
        !           240: errorf:
        !           241:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           242:        movl    $2,_ercode      /* error flag miscompare */
        !           243:        movl    tloc,_actual    /* actual data */
        !           244:        movl    $0xffffffff,_expected    /* expected */
        !           245:        jmp     *badrtn         /*error - error in flags                */
        !           246: nxt10:
        !           247:        bbs     $0,_force_lp,0  /* if set loop on last subtest */
        !           248: tx10:  callf   $4,_setjmp      /* save context for error return */
        !           249:        movab   tx10,_stpc              /* save subtest program counter */
        !           250:        movl    $8,_subtst              /* subtest number */
        !           251:        movl    $1,_no_opr      /* number of operands in use */
        !           252:        movl    $0x8000000,_opr /* first operand */
        !           253: 0:     movl    $0x80000000,tloc        /* All bit off except bit 31    */
        !           254:        bbssi   $31,tloc,nxt11  /*now branch forward as bit in ON       */
        !           255:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           256:        movl    $3,_ercode      /* error code operand miscompare */
        !           257:        movl    tloc,_actual    /* actual data */
        !           258:        movl    $8000000,_expected       /* expected */
        !           259:        jmp     *badrtn         /*error - did not branch with bit set;  */
        !           260:        .space  400
        !           261: nxt11:
        !           262:        movl    $0xd,r1         /* subtest number */
        !           263:        cmpl    $0x80000000,tloc        /* Check if bit still set ?     */
        !           264:        jeql    nxt12
        !           265:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           266:        movl    $1,_ercode      /* error code data miscompare */
        !           267:        movl    tloc,_actual    /* actual data */
        !           268:        movl    $0x80000000,_expected    /* expected */
        !           269:        jmp     *badrtn         /*error - bit did not get set           */
        !           270: 
        !           271: nxt12:
        !           272:        bbs     $0,_force_lp,0  /* if set loop on last subtest */
        !           273:        movl    $0,_ercode              /* no error all done */
        !           274:        jmp     *return         /*good , goto monitor           */
        !           275: 
        !           276: /*                                                                     */
        !           277: /*     Variables                                                       */
        !           278: /*                                                                     */
        !           279:        .align  2
        !           280: tloc:  .long   0
        !           281: 

unix.superglobalmegacorp.com

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