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

1.1     ! root        1: /*     BISPSW 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: 
        !            22:        .globl  _bispsw
        !            23: _bispsw:
        !            24:        bicpsw  $(IV|T)         /* disable exceptions           */
        !            25: /*                                                             */
        !            26: spsw:
        !            27:        callf   $4,_setjmp      /* save context for error return */
        !            28:        movab   spsw,_stpc      /* save address of subtest */
        !            29:        movl    $1,_subtst      /* subtest number */
        !            30:        movl    $0,_no_opr      /* no operands we manipulate psw */
        !            31:        movl    $0,_actual      /*  no actual data */
        !            32:        movl    $0,_expected    /* no expected data */
        !            33: 0:     movl    $0xf,r3  /* R3 : mask clear all flags N Z V C */
        !            34:        bicpsw  r3              /* clear all flags              */
        !            35:        bispsw  $(N|Z|V|C)      /* set all flags                */
        !            36:        movpsl  r4
        !            37:        andl2   $0xf,r4
        !            38:        cmpl    $0xf,r4
        !            39:        jeql    nxt             /* if correct continue */
        !            40:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            41:        movl    $1,_ercode      /* error code data miscompare */
        !            42:        movl    r4,_actual      /* actual data */
        !            43:        movl    $0xf,_expected  /* expected data */
        !            44:        jmp     *badrtn
        !            45: 
        !            46: nxt:
        !            47:        bbs     $0,_force_lp,0b /* if set loop on error */
        !            48: st2:   callf   $4,_setjmp      /* save context for error return */
        !            49:        movab   st2,_stpc       /* save address of subtest */
        !            50:        movl    $2,_subtst      /* subtest number */
        !            51: 0:     movl    $0xf,r3  /* R3 : mask clear all flags N Z V C */
        !            52:        bicpsw  r3              /* clear all flags              */
        !            53:        bispsw  $N              /* set n flag                   */
        !            54:        jlss    nxt1
        !            55:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            56:        movl    $1,_ercode      /* error code data miscompare */
        !            57:        movl    r4,_actual      /* actual data */
        !            58:        movl    $0xf,_expected  /* expected data */
        !            59:        jmp     *badrtn
        !            60: nxt1:  
        !            61:        jeql    error1          /* error if z also set          */
        !            62:        jvs     error1          /* error if v also set          */
        !            63:        jcs     error1          /* error if c also set          */
        !            64:        jmp     t3
        !            65: error1:        movpsl  _actual         /* actual psl may be bad */
        !            66:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            67:        movl    $2,_ercode      /* error code flag failure */
        !            68:        jmp     *badrtn
        !            69: 
        !            70: t3:    bbs     $0,_force_lp,0b /* if set loop on error */
        !            71: st3:   callf   $4,_setjmp      /* save context for error return */
        !            72:        movab   st3,_stpc       /* save address of subtest */
        !            73:        movl    $3,_subtst      /* subtest number */
        !            74: 0:     bicpsw  $(N|Z|V|C)      /* clear all flags              */
        !            75:        bispsw  $Z              /* set z flag                   */
        !            76:        jeql    nxt2
        !            77:        jmp     error2
        !            78: nxt2:
        !            79:        jlss    error2          /* error if n also set          */
        !            80:        jvs     error2          /* error if v also set          */
        !            81:        jcs     error2          /* error if c also set          */
        !            82:        jmp     t4
        !            83: error2:        movpsl  _actual         /* actual psl may be bad */
        !            84:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            85:        movl    $2,_ercode      /* error code flag failure */
        !            86:        jmp     *badrtn
        !            87: t4:
        !            88:        bbs     $0,_force_lp,0b /* if set loop on error */
        !            89: st4:   callf   $4,_setjmp      /* save context for error return */
        !            90:        movab   st4,_stpc       /* save address of subtest */
        !            91:        movl    $4,_subtst      /* subtest number */
        !            92: 0:     movl    vflg,r3         /* r3 = mask                    */
        !            93:        bicpsw  $(N|Z|V|C)      /* clear all flags              */
        !            94:        bispsw  r3              /* set v flag                   */
        !            95:        jvs     nxt3
        !            96:        jmp     error3
        !            97: nxt3:
        !            98:        jlss    error3          /* error if n also set          */
        !            99:        jeql    error3          /* error if z also set          */
        !           100:        jcs     error3          /* error if c also set          */
        !           101:        jmp     t5
        !           102: error3:        movpsl  _actual         /* actual psl may be bad */
        !           103:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           104:        movl    $2,_ercode      /* error code flag failure */
        !           105:        jmp     *badrtn
        !           106: 
        !           107: t5:    bbs     $0,_force_lp,0b /* if set loop on error */
        !           108: st5:   callf   $4,_setjmp      /* save context for error return */
        !           109:        movab   st5,_stpc       /* save address of subtest */
        !           110:        movl    $5,_subtst      /* subtest number */
        !           111: 0:     bicpsw  $(N|Z|V|C)      /* clear all flags              */
        !           112:        bispsw  cflg            /* set c flag                   */
        !           113:        jcs     nxt4
        !           114:        jmp     error4
        !           115: nxt4:
        !           116:        jlss    error4          /* error if n also set          */
        !           117:        jeql    error4          /* error if z also set          */
        !           118:        jvs     error4          /* error if v also set          */
        !           119:        jmp     comb
        !           120: error4:        movpsl  _actual         /* actual psl may be bad */
        !           121:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           122:        movl    $2,_ercode      /* error code flag failure */
        !           123:        jmp     *badrtn
        !           124: 
        !           125: comb:
        !           126:        bbs     $0,_force_lp,0b /* if set loop on error */
        !           127: st6:   callf   $4,_setjmp      /* save context for error return */
        !           128:        movab   st6,_stpc       /* save address of subtest */
        !           129:        movl    $6,_subtst      /* subtest number */
        !           130: 0:     bicpsw  $(N|V|C|V)
        !           131:        bispsw  $(V|C)
        !           132:        jvc     error5
        !           133:        jcc     error5
        !           134:        jlss    error5
        !           135:        jeql    error5
        !           136:        jmp     t7
        !           137: error5:        movpsl  _actual         /* actual psl may be bad */
        !           138:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           139:        movl    $2,_ercode      /* error code flag failure */
        !           140:        jmp     *badrtn
        !           141: 
        !           142: t7:    bbs     $0,_force_lp,0b /* if set loop on error */
        !           143: st7:   callf   $4,_setjmp      /* save context for error return */
        !           144:        movab   st7,_stpc       /* save address of subtest */
        !           145:        movl    $7,_subtst      /* subtest number */
        !           146: 0:     bicpsw  $(N|V|C|V)
        !           147:        bispsw  $(Z|C)
        !           148:        jvs     error6
        !           149:        jcc     error6
        !           150:        jlss    error6
        !           151:        jneq    error6
        !           152:        jmp     t8
        !           153: error6:        movpsl  _actual         /* actual psl may be bad */
        !           154:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           155:        movl    $2,_ercode      /* error code flag failure */
        !           156:        jmp     *badrtn
        !           157: 
        !           158: t8:    bbs     $0,_force_lp,0b /* if set loop on error */
        !           159: st8:   callf   $4,_setjmp      /* save context for error return */
        !           160:        movab   st8,_stpc       /* save address of subtest */
        !           161:        movl    $8,_subtst      /* subtest number */
        !           162: 0:     bicpsw  $(N|V|C|V)
        !           163:        bispsw  $(N|C)
        !           164:        jvs     error7
        !           165:        jcc     error7
        !           166:        jeql    error7
        !           167:        jlss    1f
        !           168: error7:        movpsl  _actual         /* actual psl may be bad */
        !           169:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           170:        movl    $2,_ercode      /* error code flag failure */
        !           171:        jmp     *badrtn
        !           172: 
        !           173: 1:
        !           174:        bbs     $0,_force_lp,0b /* if set loop on error */
        !           175:        jmp     *return
        !           176: 
        !           177: /*     test data               */
        !           178:        .align  2
        !           179: vflg:  .long   V
        !           180: zflg:  .long   Z
        !           181: t0:    .long   0xffffffff
        !           182: cflg:  .word   C
        !           183: t1:    .word   0xffff
        !           184: 

unix.superglobalmegacorp.com

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