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

1.1       root        1: /*     SHLL instruction test           */
                      2: /*       Privilege registers           */
                      3: 
                      4:        .set    IPL,8
                      5:        .set    MAPEN,9
                      6:        .set    KSP,19
                      7: 
                      8: /*       PSL fields                    */
                      9:        .set    IV,32
                     10:        .set    T,16
                     11:        .set    N,8
                     12:        .set    Z,4
                     13:        .set    V,2
                     14:        .set    C,1
                     15: 
                     16: /*       constants                     */
                     17:        .set    DISABLE,0
                     18:        .set    ENABLE,1
                     19:        .set    HIGH,31                 /* highest interrupt priority   */
                     20: 
                     21:        .globl  _shiftll
                     22: _shiftll:
                     23:        callf   $4,_setjmp      /* save context for error return */
                     24:        movab   _shiftll,_stpc  /* save starting address of subtest */
                     25:        movl    $1,_subtst      /* subtest number */
                     26:        movl    $2,_no_opr      /* number of operands in use */
                     27:        movl    $1,_opr         /* first operand */
                     28:        movl    $0x55555555,_opr + 4 /* second operand */
                     29: 0:     bicpsw  $(IV|T)         /* disable exceptions           */
                     30: shftl:                         /* SHIFT LEFT LONG FROM MEMORY TO REGISTER */
                     31:        movl    $0x55555555,srcloc      /* set srcloc = 0x55555555      */
                     32:        movl    $0xaaaaaaaa,r4  /* set r4 = 0xaaaaaaaa          */
                     33:        bispsw  $(Z|V)                  /* set z,v flags                */
                     34:        bicpsw  $(N|C)                  /* clear n,c flag               */
                     35:                                        /* data memory register         */
                     36:        shll    $1,srcloc,r3            /* shift left 1 and put in r3   */
                     37:        jgeq    error1                  /* error if n flag not set      */
                     38:        jcc     error1                  /* error if c flag not set      */
                     39:        jeql    error1                  /* error if z flag still set    */
                     40:        jvs     error1                  /* error if v flag still set    */
                     41:        jmp     1f
                     42: error1:        movpsl  _actual         /* actual = psl MAYBE                   */
                     43:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     44:        movl    $2,_ercode      /* error code flag failure */
                     45:        jmp     *badrtn
                     46: 1:     cmpl    r3,r4           /* check result                         */
                     47:        jeql    1f              /* no error then continue */
                     48:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     49:        movl    $1,_ercode      /* error code data miscompare */
                     50:        movl    r3,_actual      /* actual data */
                     51:        movl    r4,_expected    /* expected data */
                     52:        jmp     *badrtn
                     53: 1:     bicpsw  $Z
                     54:        cmpl    $0x55555555,srcloc      /* check if source get affected */
                     55:        jeql    s2              /* no error then continue */
                     56:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     57:        movl    $3,_ercode      /* error code operand miscompare */
                     58:        movl    srcloc,_actual  /* actual data */
                     59:        movl    $0x55555555,_expected   /* expected data */
                     60:        jmp     *badrtn
                     61: /*                               SHIFT LEFT LONG FROM REGISTER TO MEMORY */
                     62: s2:
                     63:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     64: as2:   callf   $4,_setjmp      /* save context for error return */
                     65:        movab   as2,_stpc       /* save starting address of subtest */
                     66:        movl    $2,_subtst      /* subtest number */
                     67:        movl    $2,_no_opr      /* number of operands in use */
                     68:        movl    $1,_opr         /* first operand */
                     69:        movl    r3,_opr + 4 /* second operand */
                     70: 0:     movb    $1,temp         /* set temp = shift count               */
                     71:        bispsw  $(N|Z|V)        /* set n,z,v flags                      */
                     72:        bicpsw  $C              /* clear C flag                         */
                     73:                                /* memory reg memory                    */
                     74:        shll    temp,r3,dstloc  /* shift r3 left 1 and put in dstloc    */
                     75:        jlss    error2          /* error if n,z,v flag still set        */
                     76:        jeql    error2
                     77:        jvs     error2
                     78:        jcc     error2          /* error if c flag not set              */
                     79:        jmp     1f
                     80: error2:        movpsl  _actual         /* actual = psl MAYBE                   */
                     81:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     82:        movl    $2,_ercode      /* error code flag failure */
                     83:        jmp     *badrtn
                     84: 1:     cmpl    dstloc,$0x55555554      /* check result                 */
                     85:        jeql    1f              /* no error then continue */
                     86:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     87:        movl    $1,_ercode      /* error code data miscompare */
                     88:        movl    dstloc,_actual  /* actual data */
                     89:        movl    $0x55555554,_expected   /* expected data */
                     90:        jmp     *badrtn
                     91: 1:     bicpsw  $Z
                     92:        cmpl    r3,$0xaaaaaaaa  /* make sure source unchanged           */
                     93:        jeql    s3              /* no error then continue */
                     94:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     95:        movl    $3,_ercode      /* error code operand miscompare */
                     96:        movl    r3,_actual      /* actual data */
                     97:        movl    $0xaaaaaaaa,_expected   /* expected data */
                     98:        jmp     *badrtn
                     99: /*                               SHIFT LEFT LONG FROM MEMORY TO MEMORY */
                    100: s3:
                    101:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    102: as3:   callf   $4,_setjmp      /* save context for error return */
                    103:        movab   as3,_stpc       /* save starting address of subtest */
                    104:        movl    $3,_subtst      /* subtest number */
                    105:        movl    $2,_no_opr      /* number of operands in use */
                    106:        movl    $4,_opr         /* first operand */
                    107:        movl    srcloc,_opr + 4 /* second operand */
                    108: 0:     movl    $4,r3           /* set r3 = shift count         */
                    109:        bispsw  $(N|Z|V)        /* set n,z,v flags                      */
                    110:        bicpsw  $C              /* clear C flag                         */
                    111:                                /* reg memory memory                    */
                    112:        shll    r3,srcloc,srcloc  /* shift and put result back in srcloc */
                    113:        jlss    error3          /* error if n flag still set            */
                    114:        jeql    error3          /* error if z flag still set            */
                    115:        jvs     error3
                    116:        jcc     error3          /* error if c flags not set             */
                    117:        jmp     1f
                    118: error3:        movpsl  _actual         /* actual = psl MAYBE                   */
                    119:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    120:        movl    $2,_ercode      /* error code flag failure */
                    121:        jmp     *badrtn
                    122: 1:     cmpl    srcloc,$0x55555550      /* check result                 */
                    123:        jeql    s4              /* no error then continue */
                    124:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    125:        movl    $1,_ercode      /* error code data miscompare */
                    126:        movl    srcloc,_actual  /* actual data */
                    127:        movl    $0x55555550,_expected   /* expected data */
                    128:        jmp     *badrtn
                    129: /*                               SPECIAL CASES                         */
                    130: /*                                     shift count = 0                 */
                    131: s4:
                    132:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    133: as4:   callf   $4,_setjmp      /* save context for error return */
                    134:        movab   as4,_stpc       /* save starting address of subtest */
                    135:        movl    $4,_subtst      /* subtest number */
                    136:        movl    $2,_no_opr      /* number of operands in use */
                    137:        movl    $0,_opr         /* first operand */
                    138:        movl    $0x55555555,_opr + 4 /* second operand */
                    139: 0:     movl    $0x55555555,srcloc      /* set srcloc = 0x55555555      */
                    140:        bispsw  $(N|Z|V)        /* set n,z,v flags                      */
                    141:        bicpsw  $C              /* clear C flag                         */
                    142:        shll    $0,srcloc,r3            /* shift left 0 and put in r3   */
                    143:        jlss    error4                  /* error if n flag still set    */
                    144:        jeql    error4                  /* error if z flag still set    */
                    145:        jvs     error4                  /* error if v flag still set    */
                    146:        jcc     error4                  /* error if c flag not set      */
                    147:        jmp     1f
                    148: error4:        movpsl  _actual         /* actual = psl MAYBE                   */
                    149:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    150:        movl    $2,_ercode      /* error code flag failure */
                    151:        jmp     *badrtn
                    152: 1:     cmpl    $0x55555555,r3          /* check result                 */
                    153:        jeql    1f              /* no error then continue */
                    154:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    155:        movl    $1,_ercode      /* error code data miscompare */
                    156:        movl    r3,_actual      /* actual data */
                    157:        movl    $0x55555555,_expected   /* expected data */
                    158:        jmp     *badrtn
                    159: 1:     bicpsw  $Z
                    160:        cmpl    $0x55555555,srcloc      /* check if source get affected */
                    161:        jeql    s5              /* no error then continue */
                    162:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    163:        movl    $3,_ercode      /* error code operand miscompare */
                    164:        movl    srcloc,_actual  /* actual data */
                    165:        movl    $0x55555555,_expected   /* expected data */
                    166:        jmp     *badrtn
                    167: /*                                     shift count > 32                */
                    168: s5:
                    169:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    170: as5:   callf   $4,_setjmp      /* save context for error return */
                    171:        movab   as5,_stpc       /* save starting address of subtest */
                    172:        movl    $5,_subtst      /* subtest number */
                    173:        movl    $2,_no_opr      /* number of operands in use */
                    174:        movl    $0,_opr         /* first operand */
                    175:        movl    $0x55555555,_opr + 4 /* second operand */
                    176: 0:     movb    $33,temp        /* set shift count = 33                 */
                    177:        bispsw  $(N|C)          /* set n,c flags                        */
                    178:        bicpsw  $(V|Z)          /* clear z,v flag                       */
                    179:        shll    temp,r3,r5      /* shift r3 left 33 and put in r5       */
                    180:        jlss    error5          /* error if n flag still set            */
                    181:        jneq    error5          /* error if z flag not set              */
                    182:        jvs     error5
                    183:        jcc     error5          /* error if c flags not set             */
                    184:        jmp     1f
                    185: error5:        movpsl  _actual         /* actual = psl MAYBE                   */
                    186:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    187:        movl    $2,_ercode      /* error code flag failure */
                    188:        jmp     *badrtn
                    189: 1:     bicpsw  $Z
                    190:        cmpl    r5,$0           /* check result                         */
                    191:        jeql    1f              /* no error then continue */
                    192:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    193:        movl    $1,_ercode      /* error code data miscompare */
                    194:        movl    r5,_actual      /* actual data */
                    195:        movl    $0,_expected    /* expected data */
                    196:        jmp     *badrtn
                    197: 1:     bicpsw  $Z
                    198:        cmpl    r3,$0x55555555  /* make sure source unchanged           */
                    199:        jeql    s6              /* no error then continue */
                    200:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    201:        movl    $3,_ercode      /* error code operand miscompare */
                    202:        movl    r3,_actual      /* actual data */
                    203:        movl    $0x55555555,_expected   /* expected data */
                    204:        jmp     *badrtn
                    205: 
                    206: s6:
                    207:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    208: as6:   callf   $4,_setjmp      /* save context for error return */
                    209:        movab   as6,_stpc       /* save starting address of subtest */
                    210:        movl    $6,_subtst      /* subtest number */
                    211:        movl    $2,_no_opr      /* number of operands in use */
                    212:        movl    $32,_opr                /* first operand */
                    213:        movl    $0xffffffff,_opr + 4 /* second operand */
                    214: 0:     movb    $32,r6                  /* set r6 = shift count         */
                    215:        movl    $0xffffffff,srcloc      /* set srcloc = 0xffffffff      */
                    216:        bispsw  $(N|C|V)                /* set n,c,v flags              */
                    217:        bicpsw  $Z                      /* clear z flag                 */
                    218:        shll    r6,srcloc,r3            /* shift left 32 and put in r3  */
                    219:        jlss    error6                  /* error if n flag set          */
                    220:        jvs     error6                  /* error if v flag set          */
                    221:        jneq    error6                  /* error if z flag not set      */
                    222:        jcc     error6                  /* error if c flag not set      */
                    223:        jmp     1f
                    224: error6:        movpsl  _actual         /* actual = psl MAYBE                   */
                    225:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    226:        movl    $2,_ercode      /* error code flag failure */
                    227:        jmp     *badrtn
                    228: 1:     bicpsw  $Z
                    229:        cmpl    r3,$0           /* check result                         */
                    230:        jeql    1f              /* no error then continue */
                    231:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    232:        movl    $1,_ercode      /* error code data miscompare */
                    233:        movl    r3,_actual      /* actual data */
                    234:        movl    $0,_expected    /* expected data */
                    235:        jmp     *badrtn
                    236: 1:     bicpsw  $Z
                    237:        cmpl    $0xffffffff,srcloc      /* check if source get affected */
                    238:        jeql    aldn            /* no error then continue */
                    239:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    240:        movl    $3,_ercode      /* error code operand miscompare */
                    241:        movl    srcloc,_actual  /* actual data */
                    242:        movl    $0xffffffff,_expected   /* expected data */
                    243:        jmp     *badrtn
                    244: 
                    245: 
                    246: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    247:        jmp     *return
                    248: 
                    249:        
                    250: /*     test data               */
                    251:        .align  2
                    252: srcloc:        .long   0
                    253: dstloc:        .long   0
                    254: temp:  .long   0
                    255: 
                    256: 

unix.superglobalmegacorp.com

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