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