Annotation of cci/d/entry/bb_ssi.s, revision 1.1.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.