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