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

1.1       root        1: 
                      2: /*             BITW (bit word) test                                    */
                      3: /*                                                                     */
                      4: /*Test name = bitw                                                     */
                      5: /*Description =                                                                */
                      6: /*     This test checks 'bitw' 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_w
                     55: _bit_w:
                     56:        callf   $4,_setjmp      /* save context for return from error */
                     57:        movab   _bit_w,_stpc    /* save address of subtest */
                     58:        movl    $1,_subtst      /* subtest number */
                     59:        movl    $2,_no_opr      /* number of operands in use */
                     60:        movl    $MASKW1,_opr    /* first operand */
                     61:        movl    $SRCW1,_opr + 4 /* second operand */
                     62: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                     63:        movl    $SRCW1,r4       /*r4 = source                           */
                     64:        movl    $MASKW1,tloc    /*tloc = mask                           */
                     65:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
                     66:        bitw    tloc+2,r4       /*tloc AND r4 mem to reg                */
                     67:        bneq    error1          /*error if Z = 0                        */
                     68:        blss    error1          /*error if N =1                         */
                     69:        bvs     error1          /*error if V = 1                        */
                     70:        bcc     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 loop on error                 */
                     74:        movl    $2,_ercode      /* error code flag failure              */
                     75:        jmp     *badrtn
                     76: 1:     cmpl    $SRCW1,r4       /*check source & mask are unchanged     */
                     77:        beql    1f              /*error - source changed                */
                     78:        bbs     $0,_scoplp,0b   /* if set loop on error                 */
                     79:        movl    $3,_ercode      /* error code operand was modified */
                     80:        movl    r4,_actual      /* actual data */
                     81:        movl    $SRCW1,_expected        /* expected data */
                     82:        jmp     *badrtn
                     83: 1:     bicpsw  $Z              /*clear Z flag                          */
                     84:        cmpl    $MASKW1,tloc    /*                                      */
                     85:        beql    t2              /* if correct then continue */
                     86:        bbs     $0,_scoplp,0b   /* if set loop on error                 */
                     87:        movl    $3,_ercode      /* error code operand was modified */
                     88:        movl    tloc,_actual    /* actual data */
                     89:        movl    $MASKW1,_expected       /* expected data */
                     90:        jmp     *badrtn
                     91: 
                     92: /*     Now use different patterns for source & mask                    */
                     93: 
                     94: t2:    bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     95: st2:   callf   $4,_setjmp      /* save context for return from error */
                     96:        movab   st2,_stpc       /* save address of subtest */
                     97:        movl    $2,_subtst      /* subtest number */
                     98:        movl    $2,_no_opr      /* number of operands in use */
                     99:        movl    $MASKW2,_opr    /* first operand */
                    100:        movl    $SRCW2,_opr + 4 /* second operand */
                    101: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    102:        movl    $SRCW2,tloc     /*r1 = source                           */
                    103:        movl    $MASKW2,r3      /*tloc = mask data to memory            */
                    104:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
                    105:        bitw    r3,tloc+2       /*r3 AND tloc   reg to memory           */
                    106:        bneq    error2          /*error if Z = 0                        */
                    107:        blss    error2          /*error if N =1                         */
                    108:        bvs     error2          /*error if V = 1                        */
                    109:        bcc     error2          /*error if C = 0                        */
                    110:        jmp     t3
                    111: error2:        movpsl  _actual         /* actual psl MAYBE it is incorrect     */
                    112:        bbs     $0,_scoplp,0b   /* if set loop on error                 */
                    113:        movl    $2,_ercode      /* error code flag failure              */
                    114:        jmp     *badrtn
                    115: 
                    116: /*     Yet another patterns for source & mask                          */
                    117: 
                    118: t3:    bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    119: st3:   callf   $4,_setjmp      /* save context for return from error */
                    120:        movab   st3,_stpc       /* save address of subtest */
                    121:        movl    $3,_subtst      /* subtest number */
                    122:        movl    $2,_no_opr      /* number of operands in use */
                    123:        movl    $MASKW3,_opr    /* first operand */
                    124:        movl    $SRCW3,_opr + 4 /* second operand */
                    125: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    126:        movl    $SRCW3,r4       /*r4 = source                           */
                    127:        movl    $MASKW3,r3      /*r3 = mask                             */
                    128:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
                    129:        bitw    r3,r4           /* r3 AND r4 register to register       */
                    130:        beql    error3          /*error if Z = 1                        */
                    131:        blss    error3          /*error if N =1                         */
                    132:        bvs     error3          /*error if V = 1                        */
                    133:        bcc     error3          /*error if C = 0                        */
                    134:        jmp     bitwm
                    135:        jmp     t3
                    136: error3:        movpsl  _actual         /* actual psl MAYBE it is incorrect     */
                    137:        bbs     $0,_scoplp,0b   /* if set 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: bitwm:
                    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 operands in use */
                    152:        movl    $MASKW1,_opr    /* first operand */
                    153:        movl    $SRCW1,_opr + 4 /* second operand */
                    154: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    155:        movl    $MASKW1,r3      /*r3 = mask                             */
                    156:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
                    157:        bitw    r3,$SRCW1       /*r3 AND $SRCW1 reg to data             */
                    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 loop on error                 */
                    165:        movl    $2,_ercode      /* error code flag failure              */
                    166:        jmp     *badrtn
                    167: 1:     bicpsw  $Z              /*clear Z flag                          */
                    168:        cmpl    $MASKW1,r3
                    169:        beql    t5              /*error - mask changed                  */
                    170:        bbs     $0,_scoplp,0b   /* if set loop on error                 */
                    171:        movl    $3,_ercode      /* error code operand was modified */
                    172:        movl    r3,_actual      /* actual data */
                    173:        movl    $MASKW1,_expected       /* expected data */
                    174:        jmp     *badrtn
                    175: 
                    176: /*     Now use different patterns for source & mask                    */
                    177: 
                    178: t5:    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 operands in use */
                    183:        movl    $MASKW2,_opr    /* first operand */
                    184:        movl    $SRCW2,_opr + 4 /* second operand */
                    185: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    186:        movl    $SRCW2,tloc     /*tloc = source                         */
                    187:        movl    $MASKW2,r4      /*r4 = mask                             */
                    188:        bispsw  $(N|V|C)        /*neg,overflow, & carry ON              */
                    189:        bitw    $SRCW2,r4       /* data AND tloc data to register       */
                    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:        jmp     t6
                    195: error5:        movpsl  _actual         /* actual psl MAYBE it is incorrect     */
                    196:        bbs     $0,_scoplp,0b   /* if set 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:    bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    203: st6:   callf   $4,_setjmp      /* save context for return from error */
                    204:        movab   st6,_stpc       /* save address of subtest */
                    205:        movl    $6,_subtst      /* subtest number */
                    206:        movl    $2,_no_opr      /* number of operands in use */
                    207:        movl    $MASKW3,_opr    /* first operand */
                    208:        movl    $SRCW3,_opr + 4 /* second operand */
                    209: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    210:        movl    $SRCW3,tloc     /*tloc = source                         */
                    211:        movl    $MASKW3,tloc2   /*r1 = mask                             */
                    212:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
                    213:        bitw    tloc2+2,tloc+2  /*tloc2 AND tloc memory to memory       */
                    214:        jeql    error6          /*error if Z = 1                        */
                    215:        jgeq    error6          /*error if N =1                         */
                    216:        jvs     error6          /*error if V = 1                        */
                    217:        jcc     error6          /*error if C = 0                        */
                    218:        jmp     t7
                    219: error6:        movpsl  _actual         /* actual psl MAYBE it is incorrect     */
                    220:        bbs     $0,_scoplp,0b   /* if set loop on error                 */
                    221:        movl    $2,_ercode      /* error code flag failure              */
                    222:        jmp     *badrtn
                    223: 
                    224: /*     Yet another patterns for source & mask                          */
                    225: 
                    226: t7:    bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    227: st7:   callf   $4,_setjmp      /* save context for return from error */
                    228:        movab   st7,_stpc       /* save address of subtest */
                    229:        movl    $7,_subtst      /* subtest number */
                    230:        movl    $2,_no_opr      /* number of operands in use */
                    231:        movl    $MASKW3,_opr    /* first operand */
                    232:        movl    $SRCW3,_opr + 4 /* second operand */
                    233: 0:     bicpsw  $PSWMASK        /*clear overflow enable                 */
                    234:        movl    $SRCW3,tloc     /*tloc = source                         */
                    235:        bispsw  $(Z|V)          /*zero, & overflow ON                   */
                    236:        bitw    tloc+2,$MASKW3  /*tloc2 AND tloc memory to data         */
                    237:        jeql    error7          /*error if Z = 1                        */
                    238:        jlss    error7          /*error if N =1                         */
                    239:        jvs     error7          /*error if V = 1                        */
                    240:        jcc     error7          /*error if C = 0                        */
                    241:        jmp     aldn
                    242: error7:        movpsl  _actual         /* actual psl MAYBE it is incorrect     */
                    243:        bbs     $0,_scoplp,0b   /* if set loop on error                 */
                    244:        movl    $2,_ercode      /* error code flag failure              */
                    245:        jmp     *badrtn
                    246: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    247:        jmp     *return         /* good, return to monitor */
                    248: 
                    249: 
                    250: /*                                                                     */
                    251: /*     Variables                                                       */
                    252: /*                                                                     */
                    253:        .align  2
                    254: tloc:  .space  4               /*test location                         */
                    255: 
                    256:        .align  2
                    257: tloc2:
                    258:        .space  4
                    259: 
                    260: 

unix.superglobalmegacorp.com

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