Annotation of cci/d/entry/shrq.s, revision 1.1

1.1     ! root        1: /*     SHRQ 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  _shrq
        !            22: _shrq:
        !            23:        callf   $4,_setjmp      /* save context for error return */
        !            24:        movab   _shrq,_stpc     /* starting address of subtest */
        !            25:        movl    $1,_subtst      /* subtest number */
        !            26:        movl    $3,_no_opr      /* number of operands in use */
        !            27:        movl    $32,_opr        /* first operand */
        !            28:        movl    $0,_opr + 4     /* second operand */
        !            29:        movl    $0xffffffff,_opr + 8 /* third operand */
        !            30: 0:     bicpsw  $(IV|T)         /* disable exceptions           */
        !            31: /*                                                             */
        !            32: srq:                           /* SHIFT RIGHT QUAD FROM MEMORY TO REGISTER */
        !            33:        movl    $0,sloc0                /* set sloc0            */
        !            34:        movl    $0xffffffff,sloc1       /* set sloc1 = 0xffffffff       */
        !            35:        movl    $0xffffffff,r4
        !            36:        movl    $0xffffffff,r5
        !            37:        bispsw  $(V|N|C)                /* set n,v,c flags              */
        !            38:        bicpsw  $Z                      /* clear z flag                 */
        !            39:        shrq    $32,sloc0,r4            /* shift right 32 and put in r4,r5 */
        !            40:        jneq    error1                  /* error if z flag not set      */
        !            41:        jcc     error1                  /* error if c flag not set      */
        !            42:        jvs     error1                  /* error if v flag set          */
        !            43:        jlss    error1                  /* error if n flag 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:     bicpsw  $Z
        !            50:        cmpl    r5,$0                   /* check result                 */
        !            51:        jeql    1f              /* if correct continue */
        !            52:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            53:        movl    $1,_ercode      /* error code data miscompare */
        !            54:        movl    r5,_actual      /* actual data */
        !            55:        movl    $0,_expected    /* expected data */
        !            56:        jmp     *badrtn
        !            57: 1:     bicpsw  $Z
        !            58:        cmpl    r4,$0
        !            59:        jeql    1f              /* if correct continue */
        !            60:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            61:        movl    $1,_ercode      /* error code data miscompare */
        !            62:        movl    r4,_actual      /* actual data */
        !            63:        movl    $0,_expected    /* expected data */
        !            64:        jmp     *badrtn
        !            65: 1:     bicpsw  $Z
        !            66:        cmpl    $0xffffffff,sloc1       /* check if source get affected */
        !            67:        jeql    1f              /* if correct continue */
        !            68:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            69:        movl    $3,_ercode      /* error code operand miscompare */
        !            70:        movl    sloc1,_actual   /* actual data */
        !            71:        movl    $0xffffffff,_expected   /* expected data */
        !            72:        jmp     *badrtn
        !            73: 1:     bicpsw  $Z
        !            74:        cmpl    sloc0,$0
        !            75:        jeql    s2              /* if correct continue */
        !            76:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            77:        movl    $3,_ercode      /* error code operand miscompare */
        !            78:        movl    sloc0,_actual   /* actual data */
        !            79:        movl    $0,_expected    /* expected data */
        !            80:        jmp     *badrtn
        !            81: /*                               SHIFT RIGHT QUAD FROM REGISTER TO MEMORY */
        !            82: s2:
        !            83:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !            84: as2:   callf   $4,_setjmp      /* save context for error return */
        !            85:        movab   as2,_stpc       /* starting address of subtest */
        !            86:        movl    $2,_subtst      /* subtest number */
        !            87:        movl    $3,_no_opr      /* number of operands in use */
        !            88:        movl    $30,_opr        /* first operand */
        !            89:        movl    $0xffffffff,_opr + 4    /* second operand */
        !            90:        movl    $0xffffffff,_opr + 8 /* third operand */
        !            91: 0:     movl    $0xffffffff,dloc0       /* set dloc0 = dloc1 = 0xffffffff */
        !            92:        movl    dloc0,dloc1
        !            93:        movb    $30,temp        /* set temp = shift count               */
        !            94:        bispsw  $(N|V|C)        /* set n,v,c flags                      */
        !            95:        bicpsw  $Z              /* clear z flag                         */
        !            96:        shrq    temp,r4,dloc0   /* shift r4,r5 left 32 and put in dloc  */
        !            97:        jneq    error2          /* error if z flag not set              */
        !            98:        jcc     error2          /* error if c flag not set              */
        !            99:        jvs     error2          /* error if v flag set                  */
        !           100:        jlss    error2          /* error if n flag set                  */
        !           101:        jmp     1f
        !           102: error2:        movpsl  _actual         /* actual = psl maybe incorrect */
        !           103:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           104:        movl    $2,_ercode      /* error code flag failure */
        !           105:        jmp     *badrtn
        !           106: 1:     cmpl    dloc0,$0        /* check result                         */
        !           107:        jeql    1f              /* if correct continue */
        !           108:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           109:        movl    $1,_ercode      /* error code data miscompare */
        !           110:        movl    dloc0,_actual   /* actual data */
        !           111:        movl    $0,_expected    /* expected data */
        !           112:        jmp     *badrtn
        !           113: 1:     bicpsw  $Z
        !           114:        cmpl    dloc1,dloc0
        !           115:        jeql    1f              /* if correct continue */
        !           116:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           117:        movl    $1,_ercode      /* error code data miscompare */
        !           118:        movl    dloc1,_actual   /* actual data */
        !           119:        movl    dloc0,_expected /* expected data */
        !           120:        jmp     *badrtn
        !           121: 1:     bicpsw  $Z
        !           122:        cmpl    r4,$0           /* make sure source unchanged           */
        !           123:        jeql    1f              /* if correct continue */
        !           124:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           125:        movl    $3,_ercode      /* error code operand miscompare */
        !           126:        movl    r4,_actual      /* actual data */
        !           127:        movl    $0,_expected    /* expected data */
        !           128:        jmp     *badrtn
        !           129: 1:     bicpsw  $Z
        !           130:        cmpl    r5,$0
        !           131:        jeql    s3              /* if correct continue */
        !           132:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           133:        movl    $3,_ercode      /* error code operand miscompare */
        !           134:        movl    r5,_actual      /* actual data */
        !           135:        movl    $0,_expected    /* expected data */
        !           136:        jmp     *badrtn
        !           137: /*                               SHIFT RIGHT QUAD FROM MEMORY TO MEMORY */
        !           138: s3:
        !           139:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           140: as3:   callf   $4,_setjmp      /* save context for error return */
        !           141:        movab   as3,_stpc       /* starting address of subtest */
        !           142:        movl    $3,_subtst      /* subtest number */
        !           143:        movl    $3,_no_opr      /* number of operands in use */
        !           144:        movl    $3,_opr /* first operand */
        !           145:        movl    $0x55555555,_opr + 4    /* second operand */
        !           146:        movl    $0x55555555,_opr + 8 /* third operand */
        !           147: 0:     movl    $0x55555555,sloc0       /* set sloc0 = sloc1 = 0x55555555 */
        !           148:        movl    sloc0,sloc1
        !           149:        movb    $3,r3           /* set r3 = shift count         */
        !           150:        bispsw  $(Z|V|C)        /* set v,z,c flags                      */
        !           151:        bicpsw  $N
        !           152:        shrq    r3,sloc0,sloc0  /* shift and put result back in sloc0  */
        !           153:        jlss    error3          /* error if n flag still set            */
        !           154:        jvs     error3          /* error if v flag still set            */
        !           155:        jeql    error3          /* error if z flag still set            */
        !           156:        jcc     error3          /* error if c flag not set              */
        !           157:        jmp     1f
        !           158: error3:        movpsl  _actual         /* actual = psl maybe incorrect */
        !           159:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           160:        movl    $2,_ercode      /* error code flag failure */
        !           161:        jmp     *badrtn
        !           162: 1:     cmpl    sloc0,$0xaaaaaaa        /* check result                 */
        !           163:        jeql    1f              /* if correct continue */
        !           164:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           165:        movl    $1,_ercode      /* error code data miscompare */
        !           166:        movl    sloc0,_actual   /* actual data */
        !           167:        movl    $0xaaaaaaaa,_expected   /* expected data */
        !           168:        jmp     *badrtn
        !           169: 1:     bicpsw  $Z
        !           170:        cmpl    sloc1,$0xaaaaaaaa
        !           171:        jeql    s4              /* if correct continue */
        !           172:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           173:        movl    $1,_ercode      /* error code data miscompare */
        !           174:        movl    sloc1,_actual   /* actual data */
        !           175:        movl    $0xaaaaaaaa,_expected   /* expected data */
        !           176:        jmp     *badrtn
        !           177: /*                               SPECIAL CASES                         */
        !           178: /*                                     shift count = 0                 */
        !           179: s4:
        !           180:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           181: as4:   callf   $4,_setjmp      /* save context for error return */
        !           182:        movab   as4,_stpc       /* starting address of subtest */
        !           183:        movl    $4,_subtst      /* subtest number */
        !           184:        movl    $3,_no_opr      /* number of operands in use */
        !           185:        movl    $0,_opr /* first operand */
        !           186:        movl    $0xfedcba98,_opr + 4    /* second operand */
        !           187:        movl    $0x76543210,_opr + 8 /* third operand */
        !           188: 0:     movl    $0,r10                  /* set r10 = r11 = 0            */
        !           189:        movl    r10,r11
        !           190:        movl    r11,r6                  /* set r6 = shift count         */
        !           191:        movl    $0xfedcba98,r4          /* set r4 = 0xfedcba98          */
        !           192:        movl    $0x76543210,r5          /* set r8 = 0x76543210          */
        !           193:        bispsw  $(C|Z|V)                /* set c,z,v flags              */
        !           194:        bicpsw  $N
        !           195:        shrq    r6,r4,r10       /* shift right 0 and put in r10,r11     */
        !           196:        jgeq    error4                  /* error if n flag not set      */
        !           197:        jcc     error4                  /* error if c flag not set      */
        !           198:        jeql    error4                  /* error if z flag still set    */
        !           199:        jvs     error4                  /* error if v flag still set    */
        !           200:        jmp     1f
        !           201: error4:        movpsl  _actual         /* actual = psl maybe incorrect */
        !           202:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           203:        movl    $2,_ercode      /* error code flag failure */
        !           204:        jmp     *badrtn
        !           205: 1:     cmpl    $0xfedcba98,r10         /* check result                 */
        !           206:        jeql    1f              /* if correct continue */
        !           207:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           208:        movl    $1,_ercode      /* error code data miscompare */
        !           209:        movl    r10,_actual     /* actual data */
        !           210:        movl    $0xfedcba98,_expected   /* expected data */
        !           211:        jmp     *badrtn
        !           212: 1:     bicpsw  $Z
        !           213:        cmpl    $0x76543210,r11
        !           214:        jeql    1f              /* if correct continue */
        !           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    $0x76543210,_expected   /* expected data */
        !           219:        jmp     *badrtn
        !           220: 1:     bicpsw  $Z
        !           221:        cmpl    r4,r10                  /* make sure source unchanged   */
        !           222:        jeql    1f              /* if correct continue */
        !           223:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           224:        movl    $3,_ercode      /* error code operand miscompare */
        !           225:        movl    r4,_actual      /* actual data */
        !           226:        movl    r10,_expected   /* expected data */
        !           227:        jmp     *badrtn
        !           228: 1:     bicpsw  $Z
        !           229:        cmpl    r5,r11
        !           230:        jeql    s5              /* if correct continue */
        !           231:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           232:        movl    $3,_ercode      /* error code operand miscompare */
        !           233:        movl    r5,_actual      /* actual data */
        !           234:        movl    r11,_expected   /* expected data */
        !           235:        jmp     *badrtn
        !           236: /*                                     shift count = 64                */
        !           237: s5:
        !           238:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           239: as5:   callf   $4,_setjmp      /* save context for error return */
        !           240:        movab   as5,_stpc       /* starting address of subtest */
        !           241:        movl    $5,_subtst      /* subtest number */
        !           242:        movl    $3,_no_opr      /* number of operands in use */
        !           243:        movl    $64,_opr        /* first operand */
        !           244:        movl    $0xfedcba98,_opr + 4    /* second operand */
        !           245:        movl    $0x76543210,_opr + 8 /* third operand */
        !           246: 0:     movl    $0xffffffff,r4
        !           247:        movl    r4,r5
        !           248:        movb    $64,temp        /* set shift count = 64                 */
        !           249:        bispsw  $(N|V|C)        /* set n,c,v flags                      */
        !           250:        bicpsw  $Z              /* clear z flag                         */
        !           251:        shrq    temp,r10,r4     /* shift r10,r11 left 64 and put in r4,r5*/
        !           252:        jneq    error5          /* error if z flag not set              */
        !           253:        jcc     error5          /* error if c flag not set              */
        !           254:        jlss    error5          /* error if v,n flag set                */
        !           255:        jvs     error5
        !           256:        jmp     1f
        !           257: error5:        movpsl  _actual         /* actual = psl maybe incorrect */
        !           258:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           259:        movl    $2,_ercode      /* error code flag failure */
        !           260:        jmp     *badrtn
        !           261: 1:     bicpsw  $Z
        !           262:        cmpl    r4,$0           /* check result                         */
        !           263:        jeql    1f              /* if correct continue */
        !           264:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           265:        movl    $1,_ercode      /* error code data miscompare */
        !           266:        movl    r4,_actual      /* actual data */
        !           267:        movl    $0,_expected    /* expected data */
        !           268:        jmp     *badrtn
        !           269: 1:     bicpsw  $Z
        !           270:        cmpl    r4,r5
        !           271:        jeql    1f              /* if correct continue */
        !           272:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           273:        movl    $1,_ercode      /* error code data miscompare */
        !           274:        movl    r5,_actual      /* actual data */
        !           275:        movl    r4,_expected    /* expected data */
        !           276:        jmp     *badrtn
        !           277: 1:     bicpsw  $Z
        !           278:        cmpl    r10,$0xfedcba98 /* make sure source unchanged           */
        !           279:        jeql    1f              /* if correct continue */
        !           280:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           281:        movl    $3,_ercode      /* error code operand miscompare */
        !           282:        movl    r10,_actual     /* actual data */
        !           283:        movl    $0xfedcba98,_expected   /* expected data */
        !           284:        jmp     *badrtn
        !           285: 1:     bicpsw  $Z
        !           286:        cmpl    r11,$0x76543210
        !           287:        jeql    s6              /* if correct continue */
        !           288:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           289:        movl    $3,_ercode      /* error code operand miscompare */
        !           290:        movl    r11,_actual     /* actual data */
        !           291:        movl    $0x76543210,_expected   /* expected data */
        !           292:        jmp     *badrtn
        !           293: 
        !           294: /*                               SHIFT RIGHT QUAD FROM DATA TO MEMORY */
        !           295: s6:
        !           296:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           297: as6:   callf   $4,_setjmp      /* save context for error return */
        !           298:        movab   as6,_stpc       /* starting address of subtest */
        !           299:        movl    $6,_subtst      /* subtest number */
        !           300:        movl    $3,_no_opr      /* number of operands in use */
        !           301:        movl    $32,_opr        /* first operand */
        !           302:        movl    $0xffffffff,_opr + 4    /* second operand */
        !           303:        movl    $0,_opr + 8              /* third operand */
        !           304: 0:     movl    $0xffffffff,dloc0       /* set dloc0 = dloc1 = 0xffffffff */
        !           305:        movl    dloc0,dloc1
        !           306:        movb    $32,temp        /* set temp = shift count               */
        !           307:        bispsw  $(N|V|C)        /* set n,v,c flags                      */
        !           308:        bicpsw  $Z              /* clear z flag                         */
        !           309:        shrq    temp,$0xffffffff,dloc0 /* shift data left 32 and put in dloc    */
        !           310:        jeql    error6          /* error if z flag set          */
        !           311:        jcc     error6          /* error if c flag not set              */
        !           312:        jvs     error6          /* error if v flag set                  */
        !           313:        jlss    error6          /* error if n flag set                  */
        !           314:        jmp     1f
        !           315: error6:        movpsl  _actual         /* actual = psl maybe incorrect */
        !           316:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           317:        movl    $2,_ercode      /* error code flag failure */
        !           318:        jmp     *badrtn
        !           319: 1:     cmpl    dloc0,$0        /* check result                         */
        !           320:        jeql    1f              /* if correct continue */
        !           321:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           322:        movl    $1,_ercode      /* error code data miscompare */
        !           323:        movl    dloc0,_actual   /* actual data */
        !           324:        movl    $0,_expected    /* expected data */
        !           325:        jmp     *badrtn
        !           326: 1:     bicpsw  $Z
        !           327:        cmpl    dloc1,$0xffffffff
        !           328:        jeql    aldn            /* if correct continue */
        !           329:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           330:        movl    $1,_ercode      /* error code data miscompare */
        !           331:        movl    dloc1,_actual   /* actual data */
        !           332:        movl    $0xffffffff,_expected   /* expected data */
        !           333:        jmp     *badrtn
        !           334: 
        !           335: 
        !           336: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           337:        jmp     *return
        !           338: 
        !           339: 
        !           340: /*     test data               */
        !           341:        .align  2               /* align on longword    */
        !           342: sloc0: .long   0
        !           343: sloc1: .long   0
        !           344: dloc0: .long   0
        !           345: dloc1: .long   0
        !           346: temp:  .long   0
        !           347: 

unix.superglobalmegacorp.com

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