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

1.1       root        1: /*     SHAL instruction test           */
                      2: #      R2 = error code
                      3: #           1 : error in flags
                      4: #           2 : result is not as expected
                      5: #           3 : source 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  _shiftal
                     25: _shiftal:
                     26:        callf   $4,_setjmp      /* save context for error return */
                     27:        movab   _shiftal,_stpc  /* save starting address of subtest */
                     28:        movl    $1,_subtst      /* subtst 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: shftl:                         /* SHIFT LEFT LONG FROM MEMORY TO REGISTER */
                     35:        movl    $0x55555555,srcloc      /* set srcloc = 0x55555555      */
                     36:        movl    $(0x55555555<<1),r4     /* set r4 = 0xaaaaaaaa          */
                     37:        bispsw  $Z                      /* set z flag                   */
                     38:        bicpsw  $(N|V|C)                /* clear n,v,c flag             */
                     39:                                        /* data memory register         */
                     40:        shal    $1,srcloc,r3            /* shift left 1 and put in r3   */
                     41:        jgeq    error1                  /* error if n flag not set      */
                     42:        jvc     error1                  /* error if v flag not set      */
                     43:        jcc     error1                  /* error if c flag not set      */
                     44:        jeql    error1                  /* error if z flag not clear    */
                     45:        jmp     1f
                     46: error1:        movpsl  _actual         /* actual = psl maybe incorrect */
                     47:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     48:        movl    $2,_ercode      /* error code flag failure */
                     49:        jmp     *badrtn
                     50: 1:     cmpl    r3,r4                   /* 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    r3,_actual      /* actual data */
                     55:        movl    r4,_expected    /* expected data */
                     56:        jmp     *badrtn
                     57: 1:     bicpsw  $Z
                     58:        cmpl    $0x55555555,srcloc      /* check if source get affected */
                     59:        jeql    s2              /* if correct continue */
                     60:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     61:        movl    $3,_ercode      /* error code operand miscompare  */
                     62:        movl    srcloc,_actual  /* actual data */
                     63:        movl    $0x55555555,_expected   /* expected data */
                     64:        jmp     *badrtn
                     65: /*                               SHIFT LEFT LONG FROM REGISTER TO MEMORY */
                     66: s2:
                     67:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     68: as2:   callf   $4,_setjmp      /* save context for error return */
                     69:        movab   as2,_stpc       /* save starting address of subtest */
                     70:        movl    $2,_subtst      /* subtst number */
                     71:        movl    $2,_no_opr      /* number of operands in use */
                     72:        movl    $1,_opr         /* first operand */
                     73:        movl    $0x55555555,_opr + 4 /* second operand */
                     74: 0:     movb    $1,temp         /* set temp = shift count               */
                     75:        bispsw  $(N|Z)          /* set n,z flags                        */
                     76:        bicpsw  $(V|C)          /* clear c,v flag                       */
                     77:                                /* memory register memory entry point   */
                     78:        shal    temp,r3,dstloc  /* shift r3 left 1 and put in dstloc    */
                     79:        jlss    error2          /* error if n,z flag still set          */
                     80:        jeql    error2
                     81:        jvc     error2          /* error if v,c flag clear              */
                     82:        jcc     error2
                     83:        jmp     1f
                     84: error2:        movpsl  _actual         /* actual = psl maybe incorrect */
                     85:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     86:        movl    $2,_ercode      /* error code flag failure */
                     87:        jmp     *badrtn
                     88: 1:     cmpl    dstloc,$0x55555554      /* check result                 */
                     89:        jeql    1f              /* if correct continue */
                     90:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     91:        movl    $1,_ercode      /* error code data miscompare  */
                     92:        movl    dstloc,_actual  /* actual data */
                     93:        movl    $0x55555554,_expected   /* expected data */
                     94:        jmp     *badrtn
                     95: 1:     bicpsw  $Z
                     96:        cmpl    r3,$0xaaaaaaaa  /* make sure source unchanged           */
                     97:        jeql    s3              /* if correct continue */
                     98:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     99:        movl    $3,_ercode      /* error code operand miscompare  */
                    100:        movl    r3,_actual      /* actual data */
                    101:        movl    $0xaaaaaaaa,_expected   /* expected data */
                    102:        jmp     *badrtn
                    103: /*                               SHIFT LEFT LONG FROM MEMORY TO MEMORY */
                    104: s3:
                    105:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    106: as3:   callf   $4,_setjmp      /* save context for error return */
                    107:        movab   as3,_stpc       /* save starting address of subtest */
                    108:        movl    $3,_subtst      /* subtst number */
                    109:        movl    $2,_no_opr      /* number of operands in use */
                    110:        movl    $0xffffffe4,_opr                /* first operand */
                    111:        movl    srcloc,_opr + 4 /* second operand */
                    112: 0:     movl    $0xffffffe4,r3  /* set r3[0:4] = shift count = 4        */
                    113:        bispsw  $(N|Z)          /* set n,z flag                         */
                    114:        bicpsw  $(V|C)          /* clear v,c flag                       */
                    115:                                /* register memory memory entry point   */
                    116:        shal    r3,srcloc,srcloc  /* shift and put result back in srcloc */
                    117:        jlss    error3          /* error if n,z flag still set          */
                    118:        jeql    error3
                    119:        jcc     error3          /* error if c,v flags not set           */
                    120:        jvc     error3
                    121:        jmp     1f
                    122: error3:        movpsl  _actual         /* actual = psl maybe incorrect */
                    123:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    124:        movl    $2,_ercode      /* error code flag failure */
                    125:        jmp     *badrtn
                    126: 1:     cmpl    srcloc,$0x55555550      /* check result                 */
                    127:        jeql    s4              /* if correct continue */
                    128:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    129:        movl    $1,_ercode      /* error code data miscompare  */
                    130:        movl    srcloc,_actual  /* actual data */
                    131:        movl    $0x55555550,_expected   /* expected data */
                    132:        jmp     *badrtn
                    133: /*                               SPECIAL CASES                         */
                    134: /*                                     shift count = 0                 */
                    135: s4:
                    136:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    137: as4:   callf   $4,_setjmp      /* save context for error return */
                    138:        movab   as4,_stpc       /* save starting address of subtest */
                    139:        movl    $4,_subtst      /* subtst number */
                    140:        movl    $2,_no_opr      /* number of operands in use */
                    141:        movl    $0,_opr         /* first operand */
                    142:        movl    $0x55555555,_opr + 4 /* second operand */
                    143: 0:     movl    $0x55555555,srcloc      /* set srcloc = 0x55555555      */
                    144:        movl    $-1,r3
                    145:        bispsw  $(N|Z|V)                /* set n,z,v flags              */
                    146:        bicpsw  $C                      /* clear C flag                 */
                    147:                                        /* shift zero entry point       */
                    148:        shal    $0,srcloc,r3            /* shift left 0 and put in r3   */
                    149:        jlss    error4                  /* error if n,z,v flag still set */
                    150:        jeql    error4
                    151:        jvs     error4  
                    152:        jcc     error4                  /* error if c flag not set      */
                    153:        jmp     1f
                    154: error4:        movpsl  _actual         /* actual = psl maybe incorrect */
                    155:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    156:        movl    $2,_ercode      /* error code flag failure */
                    157:        jmp     *badrtn
                    158: 1:     cmpl    $0x55555555,r3          /* check result                 */
                    159:        jeql    1f              /* if correct continue */
                    160:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    161:        movl    $1,_ercode      /* error code data miscompare  */
                    162:        movl    r3,_actual      /* actual data */
                    163:        movl    $0x55555555,_expected   /* expected data */
                    164:        jmp     *badrtn
                    165: 1:     bicpsw  $Z
                    166:        cmpl    $0x55555555,srcloc      /* check if source get affected */
                    167:        jeql    s5              /* if correct continue */
                    168:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    169:        movl    $3,_ercode      /* error code operand miscompare  */
                    170:        movl    srcloc,_actual  /* actual data */
                    171:        movl    $0x55555555,_expected   /* expected data */
                    172:        jmp     *badrtn
                    173: /*                     shift count = MAX COUNT = 31                    */
                    174: s5:
                    175:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    176: as5:   callf   $4,_setjmp      /* save context for error return */
                    177:        movab   as5,_stpc       /* save starting address of subtest */
                    178:        movl    $5,_subtst      /* subtst number */
                    179:        movl    $2,_no_opr      /* number of operands in use */
                    180:        movl    $-1,_opr                /* first operand */
                    181:        movl    $-1,_opr + 4 /* second operand */
                    182: 0:     movb    $-1,r3          /* set shift count = 31                 */
                    183:        bispsw  $(Z|V)          /* set z,v flag                         */
                    184:        bicpsw  $(N|C)          /* clear n,c flag                       */
                    185:                                /* register register register           */
                    186:        shal    r3,r3,r3        /* shift r3 left 31 and put back in r3 */
                    187:        jgeq    error5          /* error if n,c flag not set            */
                    188:        jcc     error5
                    189:        jeql    error5          /* error if z,v flag set                */
                    190:        jvs     error5
                    191:        jmp     1f
                    192: error5:        movpsl  _actual         /* actual = psl maybe incorrect */
                    193:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    194:        movl    $2,_ercode      /* error code flag failure */
                    195:        jmp     *badrtn
                    196: 1:     bicpsw  $Z
                    197:        cmpl    r3,$0x80000000  /* check result                         */
                    198:        jeql    aldn            /* if correct continue */
                    199:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    200:        movl    $1,_ercode      /* error code data miscompare  */
                    201:        movl    r3,_actual      /* actual data */
                    202:        movl    $0x80000000,_expected   /* expected data */
                    203:        jmp     *badrtn
                    204: 
                    205: 
                    206: 
                    207: 
                    208: 
                    209: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    210:        jmp     *return
                    211: 
                    212:        
                    213: /*     test data               */
                    214:        .align  2
                    215: srcloc:        .long   0
                    216: dstloc:        .long   0
                    217: temp:  .long   0
                    218: 
                    219: 

unix.superglobalmegacorp.com

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