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

1.1       root        1: /*     SHRL instruction test           */
                      2: #      R2 = error code
                      3: #           1 : error in flags
                      4: #           2 : result incorrect
                      5: #           3 : operand get modified
                      6: 
                      7:        .set    IPL,8
                      8:        .set    MAPEN,9
                      9:        .set    KSP,19
                     10: 
                     11: /*       PSL fields                    */
                     12:        .set    IV,32
                     13:        .set    T,16
                     14:        .set    N,8
                     15:        .set    Z,4
                     16:        .set    V,2
                     17:        .set    C,1
                     18: 
                     19: /*       constants                     */
                     20:        .set    DISABLE,0
                     21:        .set    ENABLE,1
                     22:        .set    HIGH,31                 /* highest interrupt priority   */
                     23: 
                     24:        .globl  _shrl
                     25: _shrl:
                     26:        callf   $4,_setjmp      /* save context for error return */
                     27:        movab   _shrl,_stpc     /* save starting address of subtest */
                     28:        movl    $1,_subtst      /* subtest number */
                     29:        movl    $2,_no_opr      /* number of operands in use */
                     30:        movl    $1,_opr         /* first operand */
                     31:        movl    $0x55555555,_opr + 4 /* second operand */
                     32: 0:     bicpsw  $(IV|T)         /* disable exceptions           */
                     33: /*                                                             */
                     34: shftr:                         /* SHIFT RIGHT LONG FROM MEMORY TO REGISTER */
                     35:        movl    $0x55555555,srcloc      /* set srcloc = 0x55555555      */
                     36:        movl    $(0x55555555/2),r12     /* set r12 = 0x2aaaaaaa         */
                     37:        bispsw  $(Z|V|N)                /* set n,z,v flags              */
                     38:        bicpsw  $C
                     39:        shrl    $1,srcloc,r11           /* shift right 1 and put in r11 */
                     40:        jcc     error1                  /* error if c flag clear        */
                     41:        jlss    error1                  /* error if n flag still set    */
                     42:        jeql    error1                  /* error if z flag still set    */
                     43:        jvs     error1                  /* error if v flag still set    */
                     44:        jmp     1f
                     45: error1: movpsl _actual         /* actual = psl maybe incorrect */
                     46:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     47:        movl    $2,_ercode      /* error code flag failure */
                     48:        jmp     *badrtn
                     49: 1:     cmpl    r11,r12                 /* check result                 */
                     50:        jeql    1f
                     51:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     52:        movl    $1,_ercode      /* error code data miscompare */
                     53:        movl    r11,_actual     /* actual data */
                     54:        movl    r12,_expected   /* expected data */
                     55:        jmp     *badrtn
                     56: 1:     bicpsw  $Z
                     57:        cmpl    $0x55555555,srcloc      /* check if source get affected */
                     58:        jeql    s2
                     59:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     60:        movl    $3,_ercode      /* error code operand miscompare */
                     61:        movl    srcloc,_actual  /* actual data */
                     62:        movl    $0x55555555,_expected   /* expected data */
                     63:        jmp     *badrtn
                     64: /*                               SHIFT RIGHT LONG FROM REGISTER TO MEMORY */
                     65: s2:
                     66:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     67: as2:   callf   $4,_setjmp      /* save context for error return */
                     68:        movab   as2,_stpc       /* save starting address of subtest */
                     69:        movl    $2,_subtst      /* subtest number */
                     70:        movl    $2,_no_opr      /* number of operands in use */
                     71:        movl    $1,_opr         /* first operand */
                     72:        movl    r11,_opr + 4    /* second operand */
                     73: 0:     movb    $1,temp         /* set temp = shift count               */
                     74:        bispsw  $(Z|V|N)                /* set n,z,v flags              */
                     75:        bicpsw  $C
                     76:        shrl    temp,r11,dstloc /* shift r11 right 1 and put in dstloc  */
                     77:        jcc     error2          /* error if c flags clear               */
                     78:        jlss    error2          /* error if n flag still set            */
                     79:        jeql    error2          /* error if z flag still set            */
                     80:        jvs     error2
                     81:        jmp     1f
                     82: error2: movpsl _actual         /* actual = psl maybe incorrect */
                     83:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     84:        movl    $2,_ercode      /* error code flag failure */
                     85:        jmp     *badrtn
                     86: 1:     cmpl    dstloc,$0x15555555      /* check result                 */
                     87:        jeql    1f
                     88:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     89:        movl    $1,_ercode      /* error code data miscompare */
                     90:        movl    dstloc,_actual  /* actual data */
                     91:        movl    $0x1555555,_expected    /* expected data */
                     92:        jmp     *badrtn
                     93: 1:     bicpsw  $Z
                     94:        cmpl    r11,r12         /* make sure source unchanged           */
                     95:        jeql    s3
                     96:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     97:        movl    $3,_ercode      /* error code operand miscompare */
                     98:        movl    r11,_actual     /* actual data */
                     99:        movl    r12,_expected   /* expected data */
                    100:        jmp     *badrtn
                    101: /*                               SHIFT RIGHT LONG FROM MEMORY TO MEMORY */
                    102: s3:
                    103:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    104: as3:   callf   $4,_setjmp      /* save context for error return */
                    105:        movab   as3,_stpc       /* save starting address of subtest */
                    106:        movl    $3,_subtst      /* subtest number */
                    107:        movl    $2,_no_opr      /* number of operands in use */
                    108:        movl    r11,_opr                /* first operand */
                    109:        movl    $0xf,_opr + 4   /* second operand */
                    110: 0:     movl    $0xf,srcloc     /* set srcloc = 0xf                     */
                    111:        movb    $4,r11          /* set r11 = shift count                */
                    112:        bispsw  $(C|V|N)        /* set n,c,v flags                      */
                    113:        bicpsw  $Z              /* clear z flag                         */
                    114:        shrl    r11,srcloc,srcloc  /* shift and put result back in srcloc */
                    115:        jcc     error3          /* error if c flags clear               */
                    116:        jneq    error3          /* error if z flag clear                */
                    117:        jlss    error3          /* error if n flag still set            */
                    118:        jvs     error3
                    119:        jmp     1f
                    120: error3: movpsl _actual         /* actual = psl maybe incorrect */
                    121:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    122:        movl    $2,_ercode      /* error code flag failure */
                    123:        jmp     *badrtn
                    124: 1:     cmpl    srcloc,$0x0     /* check result                         */
                    125:        jeql    s4
                    126:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    127:        movl    $1,_ercode      /* error code data miscompare */
                    128:        movl    srcloc,_actual  /* actual data */
                    129:        movl    $0,_expected    /* expected data */
                    130:        jmp     *badrtn
                    131:                                /* REGISTER, REGISTER, REGISTER         */
                    132: s4:
                    133:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    134: as4:   callf   $4,_setjmp      /* save context for error return */
                    135:        movab   as4,_stpc       /* save starting address of subtest */
                    136:        movl    $4,_subtst      /* subtest number */
                    137:        movl    $2,_no_opr      /* number of operands in use */
                    138:        movl    $4,_opr         /* first operand */
                    139:        movl    $0xf,_opr + 4   /* second operand */
                    140: 0:     movl    $0xf,r12        /* set r12 = 0xf                        */
                    141:        movb    $4,r11          /* set r11 = shift count                */
                    142:        bispsw  $(C|V|N)        /* set n,c,v flags                      */
                    143:        bicpsw  $Z              /* clear z flag                         */
                    144:        shrl    r11,r12,r13     /* shift register to register           */
                    145:        jcc     error4          /* error if c flags clear               */
                    146:        jneq    error4          /* error if z flag clear                */
                    147:        jlss    error4          /* error if n flag still set            */
                    148:        jvs     error4
                    149:        jmp     1f
                    150: error4: movpsl _actual         /* actual = psl maybe incorrect */
                    151:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    152:        movl    $2,_ercode      /* error code flag failure */
                    153:        jmp     *badrtn
                    154: 1:     cmpl    r13,$0x0        /* check result                         */
                    155:        jeql    s5
                    156:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    157:        movl    $1,_ercode      /* error code data miscompare */
                    158:        movl    r13,_actual     /* actual data */
                    159:        movl    $0,_expected    /* expected data */
                    160:        jmp     *badrtn
                    161:                                /* REGISTER, IMM. DATA, REGISTER        */
                    162: s5:
                    163:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    164: as5:   callf   $4,_setjmp      /* save context for error return */
                    165:        movab   as5,_stpc       /* save starting address of subtest */
                    166:        movl    $5,_subtst      /* subtest number */
                    167:        movl    $2,_no_opr      /* number of operands in use */
                    168:        movl    $4,_opr         /* first operand */
                    169:        movl    $0xf,_opr + 4   /* second operand */
                    170: 0:     movb    $4,r11          /* set r11 = shift count                */
                    171:        bispsw  $(C|V|N)        /* set n,c,v flags                      */
                    172:        bicpsw  $Z              /* clear z flag                         */
                    173:        shrl    r11,$0xf,r13    /* shift imm. data to register          */
                    174:        jcc     error5          /* error if c flags clear               */
                    175:        jneq    error5          /* error if z flag clear                */
                    176:        jlss    error5          /* error if n flag still set            */
                    177:        jvs     error5
                    178:        jmp     1f
                    179: error5: movpsl _actual         /* actual = psl maybe incorrect */
                    180:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    181:        movl    $2,_ercode      /* error code flag failure */
                    182:        jmp     *badrtn
                    183: 1:     cmpl    r13,$0x0        /* check result                         */
                    184:        jeql    s6
                    185:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    186:        movl    $1,_ercode      /* error code data miscompare */
                    187:        movl    r13,_actual     /* actual data */
                    188:        movl    $0,_expected    /* expected data */
                    189:        jmp     *badrtn
                    190: /*                               SPECIAL CASES                         */
                    191: /*                                     shift count = 0                 */
                    192: s6:
                    193:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    194: as6:   callf   $4,_setjmp      /* save context for error return */
                    195:        movab   as6,_stpc       /* save starting address of subtest */
                    196:        movl    $6,_subtst      /* subtest number */
                    197:        movl    $2,_no_opr      /* number of operands in use */
                    198:        movl    $4,_opr         /* first operand */
                    199:        movl    $0xf,_opr + 4   /* second operand */
                    200: 0:     movl    $0x55555555,srcloc      /* set srcloc = 0x55555555      */
                    201:        bispsw  $(C|V|N)                /* set n,c,v flags              */
                    202:        bicpsw  $Z                      /* clear z flag                 */
                    203:        shrl    $0,srcloc,r11           /* shift right 0 and put in r11 */
                    204:        jlss    error6                  /* error if n flag still set    */
                    205:        jeql    error6                  /* error if z flag still set    */
                    206:        jvs     error6                  /* error if v flag still set    */
                    207:        jcc     error6                  /* error if c flag clear        */
                    208:        jmp     1f
                    209: error6: movpsl _actual         /* actual = psl maybe incorrect */
                    210:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    211:        movl    $2,_ercode      /* error code flag failure */
                    212:        jmp     *badrtn
                    213: 1:     cmpl    srcloc,r11              /* check result                 */
                    214:        jeql    1f
                    215:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    216:        movl    $1,_ercode      /* error code data miscompare */
                    217:        movl    r11,_actual     /* actual data */
                    218:        movl    srcloc,_expected        /* expected data */
                    219:        jmp     *badrtn
                    220: 1:     bicpsw  $Z
                    221:        cmpl    $0x55555555,srcloc      /* check if source get affected */
                    222:        jeql    s7
                    223:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    224:        movl    $3,_ercode      /* error code operand miscompare */
                    225:        movl    srcloc,_actual  /* actual data */
                    226:        movl    $0x55555555,_expected   /* expected data */
                    227:        jmp     *badrtn
                    228: /*                                     shift count > 32                */
                    229: s7:
                    230:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    231: as7:   callf   $4,_setjmp      /* save context for error return */
                    232:        movab   as7,_stpc       /* save starting address of subtest */
                    233:        movl    $7,_subtst      /* subtest number */
                    234:        movl    $2,_no_opr      /* number of operands in use */
                    235:        movl    $33,_opr                /* first operand */
                    236:        movl    r11,_opr + 4    /* second operand */
                    237: 0:     movb    $33,temp        /* set shift count = 33                 */
                    238:        bispsw  $(C|V|N)        /* set n,z,v flags                      */
                    239:        bicpsw  $Z              /* clear z flag                         */
                    240:        shll    temp,r11,r13    /* shift r11 left 33 and put in r13     */
                    241:        jneq    error7          /* error if z flag not set              */
                    242:        jlss    error7          /* error if n flag still set            */
                    243:        jvs     error7
                    244:        jcc     error7          /* error if c flags clear               */
                    245:        jmp     1f
                    246: error7: movpsl _actual         /* actual = psl maybe incorrect */
                    247:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    248:        movl    $2,_ercode      /* error code flag failure */
                    249:        jmp     *badrtn
                    250: 1:     cmpl    r13,$0          /* check result                         */
                    251:        jeql    1f
                    252:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    253:        movl    $1,_ercode      /* error code data miscompare */
                    254:        movl    r13,_actual     /* actual data */
                    255:        movl    $0,_expected    /* expected data */
                    256:        jmp     *badrtn
                    257: 1:     bicpsw  $Z
                    258:        cmpl    r11,$0x55555555 /* make sure source unchanged           */
                    259:        jeql    s8
                    260:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    261:        movl    $3,_ercode      /* error code operand miscompare */
                    262:        movl    r11,_actual     /* actual data */
                    263:        movl    $0x55555555,_expected   /* expected data */
                    264:        jmp     *badrtn
                    265: /*                                     check overflow flag             */
                    266: s8:
                    267:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    268: as8:   callf   $4,_setjmp      /* save context for error return */
                    269:        movab   as8,_stpc       /* save starting address of subtest */
                    270:        movl    $8,_subtst      /* subtest number */
                    271:        movl    $2,_no_opr      /* number of operands in use */
                    272:        movl    $8,_opr         /* first operand */
                    273:        movl    $0xffffffff,_opr + 4    /* second operand */
                    274: 0:     movb    $8,r3                   /* set r3 = shift count         */
                    275:        movl    $0xffffffff,srcloc      /* set srcloc = 0xffffffff      */
                    276:        bispsw  $(Z|C|N)                /* set n,z,c flags              */
                    277:        bicpsw  $V                      /* clear v flag                 */
                    278:        shrl    r3,srcloc,srcloc   /* shift right 8 and put in srcloc   */
                    279:        jcc     error8                  /* error if c flag not set      */
                    280:        jvs     error8                  /* error if v flag still set    */
                    281:        jlss    error8                  /* error if n flag still set    */
                    282:        jeql    error8                  /* error if z flag still set    */
                    283:        jmp     1f
                    284: error8: movpsl _actual         /* actual = psl maybe incorrect */
                    285:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    286:        movl    $2,_ercode      /* error code flag failure */
                    287:        jmp     *badrtn
                    288: 1:     cmpl    srcloc,$0xffffff        /* check result                 */
                    289:        jeql    aldn
                    290:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    291:        movl    $1,_ercode      /* error code data miscompare */
                    292:        movl    srcloc,_actual  /* actual data */
                    293:        movl    $0xffffff,_expected     /* expected data */
                    294:        jmp     *badrtn
                    295: 
                    296: 
                    297: 
                    298: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    299:        jmp     *return
                    300: 
                    301: 
                    302: 
                    303: /*     test data               */
                    304:        .align  2
                    305: srcloc:        .long   0
                    306: dstloc:        .long   0
                    307: temp:  .long   0
                    308: 
                    309: 

unix.superglobalmegacorp.com

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