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

1.1       root        1: /*     MOVOW instruction test                                  */
                      2: /*     MOVL have been tested prior to this test.               */
                      3: /*     constant definitions                                    */
                      4: 
                      5:        .set    HIGH,31
                      6:        .set    IPL,8
                      7:        .set    ZERO,0
                      8:        .set    ONES,0xffffffff
                      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:        .set    NEGNO,0xa000ffff
                     16:        .set    NEGVAL,0xff0fffff
                     17:        .set    WORD,0xffff
                     18:        .set    BYTE,0xff
                     19:        .set    MASKHW,0x55550000
                     20:        .set    MASKLW,0x5555
                     21:        .set    MASKB,0x55555500
                     22: 
                     23:        .globl  _movow
                     24: _movow:
                     25:        
                     26:        callf   $4,_setjmp      /* save context for return from error */
                     27:        movab   _movow,_stpc    /* save subtest starting address */
                     28:        movw    $1,_subtst      /* subtest no : Used MOVOW to clear latch */
                     29:        movl    $1,_no_opr      /* number of operands */
                     30:        movl    negno,_opr      /* first operand in use */
                     31: 0:     
                     32:        bicpsw  $(IV|T)         /* disable overflow,trace exceptions    */
                     33: movwmr:                                /* MOVE MEMORY TO REGISTER      */
                     34:        movl    $MASKHW,r4      /* initialize r4 = 0x55550000   */
                     35:        bispsw  $(Z|V|C)        /* set z,v,c flags      */
                     36:        bicpsw  $N              /* clear n flag         */
                     37:        movow   negno,r4        /* move word 0xa000 to r4       */
                     38:        jgeq    error1          /* error if n flag not set      */
                     39:        jeql    error1          /* error if z flag set  */
                     40:        jvs     error1          /* error if v flag set  */
                     41:        jcc     error1          /* error if c flag not set      */
                     42:        jmp     1f
                     43: error1:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                     44:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     45:        movl    $2,_ercode      /* error code flag failure */
                     46:        jmp     *badrtn
                     47: 1:     cmpl    expr5,r4        /* compare r4 to 0xffffa000     */
                     48:        jeql    1f
                     49:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     50:        movl    $1,_ercode      /* error code data miscompare */
                     51:        movl    r4,_actual      /* actual data */
                     52:        movl    expr5,_expected /* expected data */
                     53:        jmp     *badrtn
                     54: 1:     bicpsw  $Z
                     55:        cmpl    $NEGNO,negno    /* make sure source unchanged   */
                     56:        jeql    movwrr
                     57:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     58:        movl    $3,_ercode      /* error code operand was modiefied */
                     59:        movl    negno,_actual   /* actual data */
                     60:        movl    $NEGNO,_expected        /* expected data */
                     61:        jmp     *badrtn
                     62: movwrr:                                /* MOVE REGISTER TO REGISTER    */
                     63:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     64: m2:    callf   $4,_setjmp      /* save context for return from error */
                     65:        movab   m2,_stpc        /* save subtest starting address */
                     66:        movl    $2,_subtst      /* subtest number */
                     67:        movl    $1,_no_opr      /* number of operands */
                     68:        movl    $MASKLW,_opr    /* first operand in use */
                     69: 0:     movl    $MASKLW,r3      /* initialize r3 = 0x5555       */
                     70:        movl    r3,expval
                     71:        movl    $0xffffffff,r4  /* initialize r4 = 0xffffffff   */
                     72:        bispsw  $(Z|N|V)        /* set Z,V,N flags              */
                     73:        bicpsw  $C              /* clear C flag                 */
                     74:        movow   r3,r4           /* move r3 to r4        */
                     75:        jlss    error2          /* error if n flag set  */
                     76:        jeql    error2          /* error if z flag set  */
                     77:        jvs     error2          /* error if v flag set  */
                     78:        jcc     error2          /* error if c flag not set      */
                     79:        jmp     1f
                     80: error2:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                     81:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     82:        movl    $2,_ercode      /* error code flag failure */
                     83:        jmp     *badrtn
                     84:        cmpl    r4,expval
                     85:        jeql    1f
                     86:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     87:        movl    $1,_ercode      /* error code data miscompare */
                     88:        movl    r4,_actual      /* actual data */
                     89:        movl    expval,_expected        /* expected data */
                     90:        jmp     *badrtn
                     91: 1:     movow   r4,r5           /* move r4 to r5        */
                     92:        movow   r5,r6           /* move r5 to r6        */
                     93:        movow   r6,r7           /* move r6 to r7        */
                     94:        movow   r7,r9           /* move r7 to r9        */
                     95:        movl    r9,oldval       /* save value of source = 0x00005555 */
                     96:        movow   r9,r11          /* move r9 to r11       */
                     97:        cmpl    expval,r11      /* compare r11 to 0x00005555    */
                     98:        jneq    error2          /* error if not equal; z flag not set */
                     99:        jeql    1f
                    100:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    101:        movl    $1,_ercode      /* error code data miscompare */
                    102:        movl    r4,_actual      /* actual data */
                    103:        movl    expval,_expected        /* expected data */
                    104:        jmp     *badrtn
                    105: 1:     bicpsw  $Z
                    106:        cmpl    oldval,r9       /* make sure source unchanged   */
                    107:        jeql    m3
                    108:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    109:        movl    $3,_ercode      /* error code operand was modiefied */
                    110:        movl    r9,_actual      /* actual data */
                    111:        movl    oldval,_expected        /* expected data */
                    112:        jmp     *badrtn
                    113: 
                    114: m3:    bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    115: am3:   callf   $4,_setjmp      /* save context for return from error */
                    116:        movab   am3,_stpc       /* save subtest starting address */
                    117:        movl    $3,_subtst      /* subtest number */
                    118:        movl    $1,_no_opr      /* number of operands */
                    119:        movl    negval,_opr     /* first operand in use */
                    120: 0:     movl    $0x0,r4
                    121:        movw    negval,r3       /* move word 0xff0f to r3 */
                    122:        movl    r3,expval       /* save source            */
                    123:        bispsw  $(Z|V)
                    124:        bicpsw  $(C|N)
                    125:        movow   r3,r4           /* move 0xffffff0f to r4  */
                    126:        jgeq    error3          /* error if n flag not set      */
                    127:        jeql    error3          /* error if z flag set  */
                    128:        jvs     error3          /* error if v flag set  */
                    129:        jcc     error3          /* error if c flag not set      */
                    130:        jmp     1f
                    131: error3:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                    132:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    133:        movl    $2,_ercode      /* error code flag failure */
                    134:        jmp     *badrtn
                    135: 1:     cmpl    r4,expval
                    136:        jeql    1f
                    137:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    138:        movl    $1,_ercode      /* error code data miscompare */
                    139:        movl    r4,_actual      /* actual data */
                    140:        movl    expval,_expected        /* expected data */
                    141:        jmp     *badrtn
                    142: 1:     bicpsw  $Z
                    143:        cmpl    r3,expval
                    144:        jeql    movwmm
                    145:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    146:        movl    $3,_ercode      /* error code operand was modiefied */
                    147:        movl    r3,_actual      /* actual data */
                    148:        movl    expval,_expected        /* expected data */
                    149:        jmp     *badrtn
                    150: movwmm:                                /* MOVE MEMORY TO MEMORY        */
                    151:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    152: m4:    callf   $4,_setjmp      /* save context for return from error */
                    153:        movab   m4,_stpc        /* save subtest starting address */
                    154:        movl    $4,_subtst      /* subtest number */
                    155:        movl    $1,_no_opr      /* number of operands */
                    156:        movl    $0xffff0000,_opr        /* first operand in use */
                    157: 0:     movl    $0x0,tstloc
                    158:        movl    $0xffff0000,oprd
                    159:        movl    oprd,oldval     /* save source          */
                    160:        bispsw  $(Z|V)          /* set z,v flags        */
                    161:        bicpsw  $(C|N)          /* clear n,c flag       */
                    162:        movow   oprd,tstloc+2   
                    163:        jgeq    error4          /* error if n flag not set      */
                    164:        jeql    error4          /* error if z flag set  */
                    165:        jvs     error4          /* error if v flag set          */
                    166:        jcc     error4          /* error if c flag not set      */
                    167:        jmp     1f
                    168: error4:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                    169:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    170:        movl    $2,_ercode      /* error code flag failure */
                    171:        jmp     *badrtn
                    172: 1:
                    173:        andl2   $0xffff,tstloc
                    174:        cmpl    $0xffff,tstloc   /* compare tstloc to expected value */
                    175:        jeql    1f
                    176:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    177:        movl    $1,_ercode      /* error code data miscompare */
                    178:        movl    tstloc,_actual  /* actual data */
                    179:        movl    $0xffff,_expected       /* expected data */
                    180:        jmp     *badrtn
                    181: 1:     bicpsw  $Z
                    182:        cmpl    oprd,oldval     /* make sure source unchanged   */
                    183:        jeql    m5
                    184:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    185:        movl    $3,_ercode      /* error code operand was modiefied */
                    186:        movl    oprd,_actual    /* actual data */
                    187:        movl    oldval,_expected        /* expected data */
                    188:        jmp     *badrtn
                    189: 
                    190: m5:                            /* MOVE MEMORY TO MEMORY        */
                    191:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    192: am5:   callf   $4,_setjmp      /* save context for return from error */
                    193:        movab   am5,_stpc       /* save subtest starting address */
                    194:        movl    $5,_subtst      /* subtest number */
                    195:        movl    $1,_no_opr      /* number of operands */
                    196:        movl    $0x5555,_opr    /* first operand in use */
                    197: 0:     movl    $0x5555,tstloc
                    198:        movl    tstloc,oldval   /* save source          */
                    199:        bispsw  $(N|V|Z)        /* set n,v,z flags      */
                    200:        bicpsw  $C              /* clear c flag         */
                    201:        movow    tstloc+2,oprd+2        
                    202:        jlss    error5          /* error if n flag set  */
                    203:        jeql    error5          /* error if z flag set  */
                    204:        jvs     error5          /* error if v flag set  */
                    205:        jcc     error5          /* error if c flag not set      */
                    206:        jmp     1f
                    207: error5:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                    208:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    209:        movl    $2,_ercode      /* error code flag failure */
                    210:        jmp     *badrtn
                    211: 1:
                    212:        andl2   $0xffff,oprd
                    213:        cmpl    $0x5555,oprd   /* compare oprd to expected value */
                    214:        jeql    1f
                    215:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    216:        movl    $1,_ercode      /* error code data miscompare */
                    217:        movl    oprd,_actual    /* actual data */
                    218:        movl    $0x5555,_expected       /* expected data */
                    219:        jmp     *badrtn
                    220: 1:     bicpsw  $Z
                    221:        cmpl    tstloc,oldval   /* make sure source unchanged   */
                    222:        jeql    movwdm
                    223:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    224:        movl    $3,_ercode      /* error code operand was modiefied */
                    225:        movl    tstloc,_actual  /* actual data */
                    226:        movl    oldval,_expected        /* expected data */
                    227:        jmp     *badrtn
                    228: movwdm:                                /* MOVE DATA TO MEMORY  */
                    229:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    230: m6:    callf   $4,_setjmp      /* save context for return from error */
                    231:        movab   m6,_stpc        /* save subtest starting address */
                    232:        movl    $6,_subtst      /* subtest number */
                    233:        movl    $1,_no_opr      /* number of operands */
                    234:        movl    $0x5555,_opr    /* first operand in use */
                    235: 0:     movl    $0x0,tstloc
                    236:        movl    $0xffff0000,oprd
                    237:        movl    oprd,oldval     /* save source          */
                    238:        bispsw  $(Z|V)          /* set z,v flags        */
                    239:        bicpsw  $(C|N)          /* clear n,c flag       */
                    240:        movow    $-0x0001,tstloc+2      
                    241:        jgeq    error6          /* error if n flag not set      */
                    242:        jeql    error6          /* error if z flag set  */
                    243:        jvs     error6          /* error if v flag set          */
                    244:        jcc     error6          /* error if c flag not set      */
                    245:        jmp     1f
                    246: error6:        movpsl  _actual         /* actual = psl MAYBE it is 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:
                    251:        andl2   $0xffff,tstloc
                    252:        cmpl    $0xffff,tstloc   /* compare tstloc to expected value */
                    253:        jeql    1f
                    254:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    255:        movl    $1,_ercode      /* error code data miscompare */
                    256:        movl    tstloc,_actual  /* actual data */
                    257:        movl    $0x0000ffff,_expected   /* expected data */
                    258:        jmp     *badrtn
                    259: 1:     bicpsw  $Z
                    260:        cmpl    oprd,oldval     /* make sure source unchanged   */
                    261:        jeql    movwrm
                    262:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    263:        movl    $3,_ercode      /* error code operand was modiefied */
                    264:        movl    oprd,_actual    /* actual data */
                    265:        movl    oldval,_expected        /* expected data */
                    266:        jmp     *badrtn
                    267: movwrm:
                    268:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    269: m7:    callf   $4,_setjmp      /* save context for return from error */
                    270:        movab   m7,_stpc        /* save subtest starting address */
                    271:        movl    $7,_subtst      /* subtest number */
                    272:        movl    $1,_no_opr      /* number of operands */
                    273:        movl    $0xff0f,_opr    /* first operand in use */
                    274: 0:     movl    $0xff0f,expval  /* move word 0xff0f to expval */
                    275:        movl    $0xff0f,tmp     /* save source            */
                    276:        movw    tmp+2,r3
                    277:        bispsw  $(Z|V)
                    278:        bicpsw  $(C|N)
                    279:        movow   r3,tstloc+2     /* move 0xffffff0f to tstloc+2 */
                    280:        jgeq    error7          /* error if n flag not set      */
                    281:        jeql    error7          /* error if z flag set  */
                    282:        jvs     error7          /* error if v flag set  */
                    283:        jcc     error7          /* error if c flag not set      */
                    284:        jmp     1f
                    285: error7:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                    286:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    287:        movl    $2,_ercode      /* error code flag failure */
                    288:        jmp     *badrtn
                    289: 1:
                    290:        andl2   $0xffff,tstloc
                    291:        cmpl    tstloc,expval
                    292:        jeql    movwdr
                    293:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    294:        movl    $1,_ercode      /* error code data miscompare */
                    295:        movl    tstloc,_actual  /* actual data */
                    296:        movl    expval,_expected        /* expected data */
                    297:        jmp     *badrtn
                    298: 
                    299: movwdr:                                /* MOVE DATA TO REGISTER */
                    300:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    301: m8:    callf   $4,_setjmp      /* save context for return from error */
                    302:        movab   m8,_stpc        /* save subtest starting address */
                    303:        movl    $8,_subtst      /* subtest number */
                    304:        movl    $1,_no_opr      /* number of operands */
                    305:        movl    negval,_opr     /* first operand in use */
                    306: 0:     movl    $0x0,r4
                    307:        movow   negval,r3       /* move word 0xff0f to r3 */
                    308:        movl    r3,expval       /* save source            */
                    309:        bispsw  $(Z|V)
                    310:        bicpsw  $(C|N)
                    311:        movow   $-0x00f1,r4     /* move 0xffffff0f to r4  */
                    312:        jgeq    error8          /* error if n flag not set      */
                    313:        jeql    error8          /* error if z flag set  */
                    314:        jvs     error8          /* error if v flag set  */
                    315:        jcc     error8          /* error if c flag not set      */
                    316:        jmp     1f
                    317: error8:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                    318:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    319:        movl    $2,_ercode      /* error code flag failure */
                    320:        jmp     *badrtn
                    321: 1:     cmpl    r4,expval
                    322:        jeql    1f
                    323:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    324:        movl    $1,_ercode      /* error code data miscompare */
                    325:        movl    r4,_actual      /* actual data */
                    326:        movl    expval,_expected        /* expected data */
                    327:        jmp     *badrtn
                    328: 1:     bicpsw  $Z
                    329:        cmpl    r3,expval
                    330:        jeql    aldn    
                    331:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    332:        movl    $3,_ercode      /* error code operand was modiefied */
                    333:        movl    r3,_actual      /* actual data */
                    334:        movl    oldval,_expected        /* expected data */
                    335:        jmp     *badrtn
                    336: 
                    337: 
                    338: aldn:  bbs     $0,_force_lp,0b /* if set loop on last error */
                    339:        jmp     *return         /* good, return to monitor */
                    340: 
                    341: /*     test data               */
                    342:        .align  2
                    343: negval:        .long   NEGVAL          /* 0xf0ffffff   */      
                    344: zero:  .long   0x0
                    345: expval:        .long   0x0
                    346: oldval:        .long   0x0
                    347: negno:  .long   NEGNO
                    348: expr5:  .long   0xffffa000
                    349: tstloc:        .long   0x0
                    350: tmp:   .long   0x0
                    351: oprd:  .long   0x0

unix.superglobalmegacorp.com

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