Annotation of cci/d/entry/bit_l.s, revision 1.1.1.1

1.1       root        1: 
                      2: /*             BITL (bit long) test                                    */
                      3: /*                                                                     */
                      4: /*Test name = bitl                                                     */
                      5: /*Description =                                                                */
                      6: /*     This test checks 'bitl' instruction as follows:                 */
                      7: /*     source          mask            N Z V C (flags)                 */
                      8: /*     ______          ____            ______________                  */
                      9: /*     0xaa            0x55            0 1 0 1                         */
                     10: /*     0x55            0xaa            0 1 0 1                         */
                     11: /*     0x80            0x80            0 0 0 1                         */
                     12: /*      R               M                ---                           */
                     13: /*      M               R                ---                           */
                     14: /*                                                                     */
                     15: 
                     16: /*                                                                     */
                     17: /*     Constants definition for 'bit_x' tests                          */
                     18: /*                                                                     */
                     19:        .set    SRCB1,0xaa
                     20:        .set    SRCW1,0xaaaa
                     21:        .set    SRCL1,0xaaaaaaaa
                     22:        .set    MASKB1,0x55
                     23:        .set    MASKW1,0x5555
                     24:        .set    MASKL1,0x55555555
                     25:        .set    SRCB2,MASKB1
                     26:        .set    SRCW2,MASKW1
                     27:        .set    SRCL2,MASKL1
                     28:        .set    MASKB2,SRCB1
                     29:        .set    MASKW2,SRCW1
                     30:        .set    MASKL2,SRCL1
                     31:        .set    SRCB3,0x80
                     32:        .set    SRCW3,0x8000
                     33:        .set    SRCL3,0x80000000
                     34:        .set    MASKB3,SRCB3
                     35:        .set    MASKW3,SRCW3
                     36:        .set    MASKL3,SRCL3
                     37: /*                                                                     */
                     38: /*     Syst.s - Constants                                              */
                     39: /*                                                                     */
                     40:        .set    IPL,8
                     41:        .set    HIGH,31
                     42:        .set    ZERO,0
                     43:        .set    ONES,0xffffffff
                     44:        .set    N,8
                     45:        .set    Z,4
                     46:        .set    V,2
                     47:        .set    C,1
                     48:        .set    T,16
                     49:        .set    IV,32
                     50:        .set    FU,64
                     51:        .set    DV,128
                     52:        .set    PSWMASK,0x003f
                     53: 
                     54:        .globl  _bit_l
                     55: _bit_l:
                     56:        callf   $4,_setjmp      /* save context for return from error */
                     57:        movab   _bit_l,_stpc    /* save address of subtest */
                     58:        movl    $1,_subtst      /* subtest number */
                     59:        movl    $2,_no_opr      /* number of operand in use */
                     60:        movl    $MASKL1,_opr    /* first operand */
                     61:        movl    $SRCL1,_opr + 4 /* second operand */
                     62: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                     63:        movl    $SRCL1,r4       /*r4 = source                           */
                     64:        movl    $MASKL1,tloc    /*tloc = mask                           */
                     65:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
                     66:        bitl    tloc,r4         /*tloc AND r4 mem to reg                */
                     67:        jneq    error1          /*error if Z = 0                        */
                     68:        jlss    error1          /*error if N =1                         */
                     69:        jvs     error1          /*error if V = 1                        */
                     70:        jcc     error1          /*error if C = 0                        */
                     71:        jmp     1f
                     72: error1:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
                     73:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     74:        movl    $2,_ercode      /* error code flag failure */
                     75:        jmp     *badrtn
                     76: 1:     cmpl    $SRCL1,r4       /*check source & mask are unchanged     */
                     77:        beql    1f              /*error - source changed                */
                     78:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     79:        movl    $3,_ercode      /* error code operand was modified */
                     80:        movl    r4,_actual      /* actual data */
                     81:        movl    $SRCL1,_expected        /* expected data */
                     82:        jmp     *badrtn
                     83: 1:     bicpsw  $Z              /*clear Z flag                          */
                     84:        cmpl    $MASKL1,tloc    /*                                      */
                     85:        beql    t2              /*error - source changed                */
                     86:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     87:        movl    $3,_ercode      /* error code operand was modified */
                     88:        movl    tloc,_actual    /* actual data */
                     89:        movl    $MASKL1,_expected       /* expected data */
                     90:        jmp     *badrtn
                     91: 
                     92: /*     Now use different patterns for source & mask                    */
                     93: 
                     94: t2:
                     95:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     96: st2:   callf   $4,_setjmp      /* save context for return from error */
                     97:        movab   st2,_stpc       /* save address of subtest */
                     98:        movl    $2,_subtst      /* subtest number */
                     99:        movl    $2,_no_opr      /* number of operand in use */
                    100:        movl    $MASKL2,_opr    /* first operand */
                    101:        movl    $SRCL2,_opr + 4 /* second operand */
                    102: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    103:        movl    $SRCL2,r3       /*r3 = source                           */
                    104:        movl    $MASKL2,tloc    /*tloc = mask                           */
                    105:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
                    106:        bitl    r3,tloc         /* r3 AND tloc reg to mem               */
                    107:        bneq    error2          /*error if Z = 0                        */
                    108:        blss    error2          /*error if N =1                         */
                    109:        bvs     error2          /*error if V = 1                        */
                    110:        bcc     error2          /*error if C = 0                        */
                    111:        jmp     st3
                    112: error2:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
                    113:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    114:        movl    $2,_ercode      /* error code flag failure */
                    115:        jmp     *badrtn
                    116: 
                    117: /*     Yet another patterns for source & mask                          */
                    118: 
                    119: t3:
                    120:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    121: st3:   callf   $4,_setjmp      /* save context for return from error */
                    122:        movab   st3,_stpc       /* save address of subtest */
                    123:        movl    $3,_subtst      /* subtest number */
                    124:        movl    $2,_no_opr      /* number of operand in use */
                    125:        movl    $MASKL3,_opr    /* first operand */
                    126:        movl    $SRCL3,_opr + 4 /* second operand */
                    127: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    128:        movl    $MASKL3,r3      /*tloc = mask                           */
                    129:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
                    130:        bitl    r3,$SRCL3       /*r3 AND data   reg to data             */
                    131:        beql    error3          /*error if Z = 1                        */
                    132:        bgeq    error3          /*error if N =1                         */
                    133:        bvs     error3          /*error if V = 1                        */
                    134:        bcc     error3          /*error if C = 0                        */
                    135:        jmp     bitlm
                    136: error3:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
                    137:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    138:        movl    $2,_ercode      /* error code flag failure */
                    139:        jmp     *badrtn
                    140: 
                    141:        
                    142: /*                                                                     */
                    143: /*     Repeat the above with source = M, & mask = R                    */
                    144: /*                                                                     */
                    145: 
                    146: bitlm:
                    147:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    148: st4:   callf   $4,_setjmp      /* save context for return from error */
                    149:        movab   st4,_stpc       /* save address of subtest */
                    150:        movl    $4,_subtst      /* subtest number */
                    151:        movl    $2,_no_opr      /* number of operand in use */
                    152:        movl    $MASKL1,_opr    /* first operand */
                    153:        movl    $SRCL1,_opr + 4 /* second operand */
                    154: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    155:        movl    $SRCL1,r4       /*tloc = source                         */
                    156:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
                    157:        bitl    $MASKL1,r4      /* data AND r1 data to reg              */
                    158:        bneq    error4          /*error if Z = 0                        */
                    159:        blss    error4          /*error if N =1                         */
                    160:        bvs     error4          /*error if V = 1                        */
                    161:        bcc     error4          /*error if C = 0                        */
                    162:        jmp     1f      
                    163: error4:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
                    164:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    165:        movl    $2,_ercode      /* error code flag failure */
                    166:        jmp     *badrtn
                    167: 1:     cmpl    $SRCL1,r4       /*check source & mask are unchanged     */
                    168:        beql    t5              /*error - source changed                */
                    169:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    170:        movl    $3,_ercode      /* error code operand was modified */
                    171:        movl    r4,_actual      /* actual data */
                    172:        movl    $SRCL1,_expected        /* expected data */
                    173:        jmp     *badrtn
                    174: 
                    175: /*     Now use different patterns for source & mask                    */
                    176: 
                    177: t5:
                    178:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    179: st5:   callf   $4,_setjmp      /* save context for return from error */
                    180:        movab   st5,_stpc       /* save address of subtest */
                    181:        movl    $5,_subtst      /* subtest number */
                    182:        movl    $2,_no_opr      /* number of operand in use */
                    183:        movl    $MASKL2,_opr    /* first operand */
                    184:        movl    $SRCL2,_opr + 4 /* second operand */
                    185: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    186:        movl    $SRCL2,tloc     /*tloc = source                         */
                    187:        movl    $MASKL2,r3      /*r3 = mask                             */
                    188:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
                    189:        bitl    $MASKL2,$SRCL2  /* data and data                        */
                    190:        jneq    error5          /*error if Z = 0                        */
                    191:        jlss    error5          /*error if N =1                         */
                    192:        jvs     error5          /*error if V = 1                        */
                    193:        jcc     error5          /*error if C = 0                        */
                    194:        jeql    t6
                    195: error5:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
                    196:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    197:        movl    $2,_ercode      /* error code flag failure */
                    198:        jmp     *badrtn
                    199: 
                    200: /*     Yet another patterns for source & mask                          */
                    201: 
                    202: t6:
                    203:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    204: st6:   callf   $4,_setjmp      /* save context for return from error */
                    205:        movab   st6,_stpc       /* save address of subtest */
                    206:        movl    $6,_subtst      /* subtest number */
                    207:        movl    $2,_no_opr      /* number of operand in use */
                    208:        movl    $MASKL3,_opr    /* first operand */
                    209:        movl    $SRCL3,_opr + 4 /* second operand */
                    210: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    211:        movl    $SRCL3,tloc     /*tloc = source                         */
                    212:        movl    $MASKL3,r3      /*r3 = mask                             */
                    213:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
                    214:        bitl    r3,tloc         /*r1 AND tloc                           */
                    215:        jeql    error6          /*error if Z = 1                        */
                    216:        jgeq    error6          /*error if N =1                         */
                    217:        jvs     error6          /*error if V = 1                        */
                    218:        jcc     error6          /*error if C = 0                        */
                    219:        jmp     t7
                    220: error6:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
                    221:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    222:        movl    $2,_ercode      /* error code flag failure */
                    223:        jmp     *badrtn
                    224: /*     Yet another patterns for source & mask                          */
                    225: 
                    226: t7:
                    227:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    228: st7:   callf   $4,_setjmp      /* save context for return from error */
                    229:        movab   st7,_stpc       /* save address of subtest */
                    230:        movl    $7,_subtst      /* subtest number */
                    231:        movl    $2,_no_opr      /* number of operand in use */
                    232:        movl    $MASKL3,_opr    /* first operand */
                    233:        movl    $SRCL3,_opr + 4 /* second operand */
                    234: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    235:        movl    $SRCL3,r4       /*tloc = source                         */
                    236:        movl    $MASKL3,r3      /*r3 = mask                             */
                    237:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
                    238:        bitl    r3,r4           /*r3 AND r4 reg to reg                  */
                    239:        jeql    error7          /*error if Z = 1                        */
                    240:        jgeq    error7          /*error if N =1                         */
                    241:        jvs     error7          /*error if V = 1                        */
                    242:        jcc     error7          /*error if C = 0                        */
                    243:        jmp     aldn
                    244: error7:        movpsl  _actual         /* actual psl MAYBE it is incorrect */
                    245:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    246:        movl    $2,_ercode      /* error code flag failure */
                    247:        jmp     *badrtn
                    248: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    249:        jmp     *return         /* good, return to monitor */
                    250: /*                                                                     */
                    251: /*     Variables                                                       */
                    252: /*                                                                     */
                    253:        .align  2
                    254: tloc:  .space  4               /*test location                         */
                    255: 
                    256: 

unix.superglobalmegacorp.com

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