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

1.1     ! root        1: /*       INCB instruction test                         */
        !             2: /*       Privilege registers                           */
        !             3: 
        !             4:        .set    IPL,0x8
        !             5:        .set    MAPEN,0x9
        !             6:        .set    KSP,0x19
        !             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    MAXPOSL,0x7fffffff
        !            20:        .set    MAXNEGL,0x80000000
        !            21:        .set    MAXPOSW,0x7fff
        !            22:        .set    MAXNEGW,0x8000
        !            23:        .set    MAXPOSB,0x7f
        !            24:        .set    MAXNEGB,0x80
        !            25:        .set    ZERO,0
        !            26:        .set    ONES,0xffffffff
        !            27:        .set    HIGH,31                 /* highest interrupt priority   */
        !            28: 
        !            29:        .globl  _inc_b
        !            30: _inc_b:
        !            31:        callf   $4,_setjmp      /* save context for error return */
        !            32:        movab   _inc_b,_stpc    /* save address of subtest start */
        !            33:        movl    $1,_subtst      /* subtest number */
        !            34:        movl    $1,_no_opr      /* number of operands in use */
        !            35:        movl    $0xfffffffe,_opr /* first operand */
        !            36: 0:     bicpsw  $(IV|T)         /* disable overflow,trace exceptions    */
        !            37: incrb:                         /* INCREMENT REGISTER                   */
        !            38:        movl    $0xfffffffe,r3  /* load r3 with -2                      */
        !            39:        bispsw  $(Z|V|C)        /* set z,v,c flags                      */
        !            40:        bicpsw  $N              /* clear n flag                         */
        !            41:        incb    r3              /* increment r3                         */
        !            42:        jgeq    error1          /* error if n flag not set              */
        !            43:        jeql    error1          /* error if z flag still set            */
        !            44:        jvs     error1          /* error if v flag still set            */
        !            45:        jcs     error1          /* error if c flag still set            */
        !            46:        jmp     1f
        !            47: error1:        movpsl  _actual         /* actual = psl MAYBE is incorrect */
        !            48:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            49:        movl    $2,_ercode      /* error code flag failure */
        !            50:        jmp     *badrtn
        !            51: 1:     cmpl    $0xffffffff,r3  /* is r3 = -1                           */
        !            52:        jeql    step2
        !            53:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            54:        movl    $1,_ercode      /* error code data miscompare */
        !            55:        movl    r3,_actual      /* actual data */
        !            56:        movl    $0xffffffff,_expected /* expected data */
        !            57:        jmp     *badrtn
        !            58: step2:
        !            59:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !            60: ai2:   callf   $4,_setjmp      /* save context for error return */
        !            61:        movab   ai2,_stpc       /* save address of subtest start */
        !            62:        movl    $2,_subtst      /* subtest number */
        !            63:        movl    $1,_no_opr      /* number of operands in use */
        !            64:        movl    $0xfffffffe,_opr /* first operand */
        !            65: 0:     bispsw  $(N|V)          /* set n,v flags                        */
        !            66:        bicpsw  $(Z|C)          /* clear z,c flag                       */
        !            67:        incb    r3              /* increment r3                         */
        !            68:        jlss    error2          /* error if n flag still set            */
        !            69:        jvs     error2          /* error if v flag still set            */
        !            70:        jneq    error2          /* error if z flag not set              */
        !            71:        jcc     error2          /* error if c flag not set              */
        !            72:        jmp     1f
        !            73: error2:        movpsl  _actual         /* actual = psl MAYBE is incorrect */
        !            74:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            75:        movl    $2,_ercode      /* error code flag failure */
        !            76:        jmp     *badrtn
        !            77: 1:     bicpsw  $Z
        !            78:        cmpl    $0x0,r3         /* is r3 == 0x0                         */
        !            79:        jeql    ovfl
        !            80:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            81:        movl    $1,_ercode      /* error code data miscompare */
        !            82:        movl    r3,_actual      /* actual data */
        !            83:        movl    $0,_expected /* expected data */
        !            84:        jmp     *badrtn
        !            85: ovfl:
        !            86: # To be investigate : what hareware does if this happen !! an incb is executed
        !            87: # to an incorrect data
        !            88:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !            89: ai3:   callf   $4,_setjmp      /* save context for error return */
        !            90:        movab   ai3,_stpc       /* save address of subtest start */
        !            91:        movl    $3,_subtst      /* subtest number */
        !            92:        movl    $1,_no_opr      /* number of operands in use */
        !            93:        movl    $0x7fffffff,_opr /* first operand */
        !            94: 0:     movl    $0x7fffffff,r3   /* set r3 = 0x7fffffff */
        !            95:        bispsw  $(Z|C|N)        /* set n,z,c flags                      */
        !            96:        bicpsw  $V              /* clear v flags                        */
        !            97:        incb    r3              /* increment r3                         */
        !            98:        jvs     error3          /* error if v flag not set              */
        !            99:        jlss    error3          /* error if n flag set                  */
        !           100:        jeql    error3          /* error if z flag still set            */
        !           101:        jcs     error3          /* error if c flag still set            */
        !           102:        jmp     1f
        !           103: error3:        movpsl  _actual         /* actual = psl MAYBE is incorrect */
        !           104:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           105:        movl    $2,_ercode      /* error code flag failure */
        !           106:        jmp     *badrtn
        !           107: 1:     cmpl    $MAXNEGL,r3     /* is r3 == 0x80000000  */
        !           108:        jeql    incmb
        !           109:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           110:        movl    $1,_ercode      /* error code data miscompare */
        !           111:        movl    r3,_actual      /* actual data */
        !           112:        movl    $MAXNEGL,_expected /* expected data */
        !           113:        jmp     *badrtn
        !           114: incmb:                         /* INCREMENT MEMORY                     */
        !           115:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           116: ai4:   callf   $4,_setjmp      /* save context for error return */
        !           117:        movab   ai4,_stpc       /* save address of subtest start */
        !           118:        movl    $4,_subtst      /* subtest number */
        !           119:        movl    $1,_no_opr      /* number of operands in use */
        !           120:        movl    $0xfeffffff,_opr /* first operand */
        !           121: 0:     movl    $0xfeffffff,tstloc      /* load tstloc with -2 (byte)   */
        !           122:        bispsw  $(Z|V|C)        /* set z,v,c flags                      */
        !           123:        bicpsw  $N              /* clear n flag                         */
        !           124:        incb    tstloc          /* increment tstloc                     */
        !           125:        jgeq    error4          /* error if n flag not set              */
        !           126:        jeql    error4          /* error if z flag still set            */
        !           127:        jvs     error4          /* error if v flag still set            */
        !           128:        jcs     error4          /* error if c flag still set            */
        !           129:        jmp     1f
        !           130: error4:        movpsl  _actual         /* actual = psl MAYBE is incorrect */
        !           131:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           132:        movl    $2,_ercode      /* error code flag failure */
        !           133:        jmp     *badrtn
        !           134: 1:     cmpl    $0xffffffff,tstloc      /* is tstloc == -1              */
        !           135:        jeql    stp2
        !           136:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           137:        movl    $1,_ercode      /* error code data miscompare */
        !           138:        movl    tstloc,_actual  /* actual data */
        !           139:        movl    $0xffffffff,_expected /* expected data */
        !           140:        jmp     *badrtn
        !           141: stp2:
        !           142:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           143: ai5:   callf   $4,_setjmp      /* save context for error return */
        !           144:        movab   ai5,_stpc       /* save address of subtest start */
        !           145:        movl    $5,_subtst      /* subtest number */
        !           146:        movl    $1,_no_opr      /* number of operands in use */
        !           147:        movl    $0xffffffff,_opr /* first operand */
        !           148: 0:     bispsw  $(N|V)          /* set n,v flags                        */
        !           149:        bicpsw  $(Z|C)          /* clear z,c flag                       */
        !           150:        incb    tstloc          /* increment tstloc                     */
        !           151:        jlss    error5          /* error if n flag still set            */
        !           152:        jvs     error5          /* error if v flag still set            */
        !           153:        jneq    error5          /* error if z flag not set              */
        !           154:        jcc     error5          /* error if c flag not set              */
        !           155:        jmp     1f
        !           156: error5:        movpsl  _actual         /* actual = psl MAYBE is incorrect */
        !           157:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           158:        movl    $2,_ercode      /* error code flag failure */
        !           159:        jmp     *badrtn
        !           160: 1:     bicpsw  $Z
        !           161:        cmpl    $0x00ffffff,tstloc      /* is tstloc == 0x00ffffff      */
        !           162:        jeql    ovfl1
        !           163:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           164:        movl    $1,_ercode      /* error code data miscompare */
        !           165:        movl    tstloc,_actual  /* actual data */
        !           166:        movl    $0x00ffffff,_expected /* expected data */
        !           167:        jmp     *badrtn
        !           168: ovfl1:
        !           169:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           170: ai6:   callf   $4,_setjmp      /* save context for error return */
        !           171:        movab   ai6,_stpc       /* save address of subtest start */
        !           172:        movl    $6,_subtst      /* subtest number */
        !           173:        movl    $1,_no_opr      /* number of operands in use */
        !           174:        movl    $0x7fffffff,_opr /* first operand */
        !           175: 0:     movl    $0x7fffffff,tstloc  /* tstloc = 0x7fffffff              */
        !           176:        bispsw  $(Z|C|N)        /* set n,z,c flags                      */
        !           177:        bicpsw  $V              /* clear n,v flags                      */
        !           178:        incb    tstloc          /* increment tstloc                     */
        !           179:        jvc     error6          /* error if v flag not set              */
        !           180:        jlss    error6          /* error if n flag set                  */
        !           181:        jeql    error6          /* error if z flag still set            */
        !           182:        jcs     error6          /* error if c flag still set            */
        !           183:        jmp     1f
        !           184: error6:        movpsl  _actual         /* actual = psl MAYBE is incorrect */
        !           185:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           186:        movl    $2,_ercode      /* error code flag failure */
        !           187:        jmp     *badrtn
        !           188: 1:     cmpl    $0x80ffffff,tstloc      /* is tstloc == 0x80ffffff      */
        !           189:        jeql    aldn
        !           190:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           191:        movl    $1,_ercode      /* error code data miscompare */
        !           192:        movl    tstloc,_actual  /* actual data */
        !           193:        movl    $0x80ffffff,_expected /* expected data */
        !           194:        jmp     *badrtn
        !           195: 
        !           196: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           197:        jmp     *return
        !           198: /*                                                                     */
        !           199: /*     test data                                                       */
        !           200:        .align  2
        !           201: tstloc:        .long   0
        !           202: 

unix.superglobalmegacorp.com

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