Annotation of cci/d/event/prvreg.s, revision 1.1.1.2

1.1       root        1: #      prvreg.s        1.0     9/3/82                                  */
                      2: #
                      3: #      *Privileged registers test : MTPR/MFPR
                      4: #
                      5: #      R2      : expected value                
                      6: #      R3      : actual value          
                      7: #      R4      : privilege register no. that fail
                      8: 
                      9: 
                     10:        .globl  _prvreg
                     11: _prvreg:
                     12:        .word   0x1fff
                     13:        movl    $0x55555554,r2
                     14:        mtpr    r2,$SBR         /* Entry point :  Register to Memory    */
                     15:        mfpr    $SBR,r3         /* Entry point :  Memory to Register    */
                     16:        cmpl    r2,r3
                     17:        beql    1f
                     18:        movl    $0,r4           /* R4 = privilege reg. no that failed   */
                     19:        jmp    *badrtn                  /* **** - r2 & r3 contains exp  */
                     20:                                /* and observed values; r4 = prv reg no.*/
                     21: 1:
                     22:        mtpr    $0xaaaaaaa4,$SBR        /* Entry point : Memory to Memory */
                     23:        mfpr    $SBR,prvar              /* Entry point : Memory to Memory */
                     24:        cmpl    $0xaaaaaaa4,prvar
                     25:        beql    2f
                     26:        movl    $0,r4           /* R4 = privilege reg. no that failed   */
                     27:        movl    $0xaaaaaaa4,r2  /* R2 = Expected value; R3 = Actual value */
                     28:        movl    prvar,r3
                     29:        jmp    *badrtn
                     30: 2:
                     31: 
                     32:        movl    $SLR,r12        /* System Length Register               */
                     33:        movl    $0x35555555,r2
                     34:        mtpr    r2,r12          /* Entry point : Register to Register   */
                     35:        mfpr    r12,r3          /* Entry point : Register to Register   */
                     36:        cmpl    r2,r3
                     37:        beql    1f
                     38:        movl    $1,r4           /* R4 = privilege reg. no that failed   */
                     39:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                     40:                                /*and observed values; r4 = prv reg no. */
                     41: 1:
                     42:        mtpr    $0x3aaaaaaa,r12 /* Entry point : Memory to register     */
                     43:        mfpr    r12,prvar       /* Entry point : Register to Memory     */
                     44:        cmpl    $0x3aaaaaaa,prvar
                     45:        beql    2f
                     46:        movl    $1,r4           /* R4 = privilege reg. no that failed   */
                     47:        movl    $0x3aaaaaaa,r2  /* R2 = Expected value; R3 = Actual value */
                     48:        movl    prvar,r3
                     49:        jmp     *badrtn 
                     50: 2:
                     51: 
                     52:        movl    $0x55555554,r2                  /*p0 base  register     */
                     53:        mtpr    r2,$P0BR
                     54:        movl    $P0BR,_cache1
                     55:        mfpr    _cache1,r3              /* Cache to register */
                     56:        cmpl    r2,r3
                     57:        beql    1f
                     58:        movl    $2,r4           /* R4 = privilege reg. no that failed   */
                     59:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                     60:                                /*and observed values; r4 = prv reg no. */
                     61: 1:
                     62:        movl    $0xaaaaaaa4,r2                  
                     63:        mtpr    r2,$P0BR
                     64:        mfpr    _cache1,_cache2         /* Cache to cache */
                     65:        movl    _cache2,r3
                     66:        cmpl    r2,r3
                     67:        beql    2f
                     68:        movl $2,r4                              /*reg no.               */
                     69:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                     70:                                /*and observed values; r4 = prv reg no. */
                     71: 2:
                     72: 
                     73:        movl    $0x35555555,r2                  /*p0 length  register   */
                     74:        andl2   $0x1fffffff,r2
                     75:        mtpr    r2,$P0LR
                     76:        mfpr    $P0LR,r3
                     77:        cmpl    r2,r3
                     78:        beql    1f
                     79:        movl $3,r4                              /*reg no.               */
                     80:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                     81:                                /*and observed values; r4 = prv reg no. */
                     82: 1:
                     83:        movl    $0x3aaaaaaa,r2                  
                     84:        andl2   $0x1fffffff,r2
                     85:        mtpr    r2,$P0LR
                     86:        mfpr    $P0LR,r3
                     87:        cmpl    r2,r3
                     88:        beql    2f
                     89:        movl $3,r4                              /*reg no.               */
                     90:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                     91:                                /*and observed values; r4 = prv reg no. */
                     92: 2:
                     93: 
                     94:        movl    $0x55555554,r2                  /*p1 base  register     */
                     95:        movl    $P1BR,_sreg
                     96:        mtpr    r2,_sreg
                     97:        mfpr    $P1BR,r3
                     98:        cmpl    r2,r3
                     99:        beql    1f
                    100:        movl $4,r4                              /*reg no.               */
                    101:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    102:                                /*and observed values; r4 = prv reg no. */
                    103: 1:
                    104:        movl    $0xaaaaaaa4,r2                  
                    105:        mtpr    r2,$P1BR
                    106:        mfpr    $P1BR,r3
                    107:        cmpl    r2,r3
                    108:        beql    2f
                    109:        movl $4,r4                              /*reg no.               */
                    110:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    111:                                /*and observed values; r4 = prv reg no. */
                    112: 2:
                    113: 
                    114: 
                    115:        movl    $0x35555555,r2                  /*p1 length  register   */
                    116:        andl2   $0x1fffffff,r2
                    117:        mtpr    r2,$P1LR
                    118:        mfpr    $P1LR,r3
                    119:        cmpl    r2,r3
                    120:        beql    1f
                    121:        movl $5,r4                              /*reg no.               */
                    122:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    123:                                /*and observed values; r4 = prv reg no. */
                    124: 1:
                    125:        movl    $0x3aaaaaaa,r2                  
                    126:        andl2   $0x1fffffff,r2
                    127:        mtpr    r2,$P1LR
                    128:        mfpr    $P1LR,r3
                    129:        cmpl    r2,r3
                    130:        beql    2f
                    131:        movl $5,r4                              /*reg no.               */
                    132:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    133:                                /*and observed values; r4 = prv reg no. */
                    134: 2:
                    135: 
                    136: 
                    137:        movl    $0x55555554,r2                  /*p2 base  register     */
                    138:        mtpr    r2,$P2BR
                    139:        mfpr    $P2BR,r3
                    140:        cmpl    r2,r3
                    141:        beql    1f
                    142:        movl $6,r4                              /*reg no.               */
                    143:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    144:                                /*and observed values; r4 = prv reg no. */
                    145: 1:
                    146:        movl    $0xaaaaaaa4,r2                  
                    147:        mtpr    r2,$P2BR
                    148:        mfpr    $P2BR,r3
                    149:        cmpl    r2,r3
                    150:        beql    2f
                    151:        movl $6,r4                              /*reg no.               */
                    152:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    153:                                /*and observed values; r4 = prv reg no. */
                    154: 2:
                    155: 
                    156:        movl    $0x35555555,r2                  /*p2 length  register   */
                    157:        andl2   $0x1fffffff,r2
                    158:        mtpr    r2,$P2LR
                    159:        mfpr    $P2LR,r3
                    160:        cmpl    r2,r3
                    161:        beql    1f
                    162:        movl $7,r4                              /*reg no.               */
                    163:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    164:                                /*and observed values; r4 = prv reg no. */
                    165: 1:
                    166:        movl    $0x3aaaaaaa,r2                  
                    167:        andl2   $0x1fffffff,r2
                    168:        mtpr    r2,$P2LR
                    169:        mfpr    $P2LR,r3
                    170:        cmpl    r2,r3
                    171:        beql    2f
                    172:        movl $7,r4                              /*reg no.               */
                    173:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    174:                                /*and observed values; r4 = prv reg no. */
                    175: 2:
                    176: 
                    177:        movl    $10,r2
                    178:        mtpr    r2,$IPL
                    179:        mfpr    $IPL,r3
                    180:        cmpl    r2,r3
                    181:        beql    1f
                    182:        movl $8,r4                              /*reg no.               */
                    183:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    184:                                /*and observed values; r4 = prv reg no. */
                    185: 1:
                    186:        movl    $21,r2                  
                    187:        mtpr    r2,$IPL
                    188:        mfpr    $IPL,r3
                    189:        cmpl    r2,r3
                    190:        beql    2f
                    191:        movl $8,r4                              /*reg no.               */
                    192:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    193:                                /*and observed values; r4 = prv reg no. */
                    194: 2:
                    195:        movl    $31,r2                  
                    196:        mtpr    r2,$IPL
                    197:        mfpr    $IPL,r3
                    198:        cmpl    r2,r3
                    199:        beql    2f
                    200:        movl $8,r4                              /*reg no.               */
                    201:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    202:                                /*and observed values; r4 = prv reg no. */
                    203: 2:
                    204: 
                    205:        movl    $0xffffc,r2                     /*PCB base register     */
                    206:        mtpr    r2,$PCBB
                    207:        mfpr    $PCBB,r3
                    208:        cmpl    r2,r3
                    209:        beql    1f
                    210:        movl    $14,r4                          /*reg no.               */
                    211:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    212:                                /*and observed values; r4 = prv reg no. */
                    213: 1:
                    214:        movl    $0xeeeec,r2                     
                    215:        mtpr    r2,$PCBB
                    216:        mfpr    $PCBB,r3
                    217:        cmpl    r2,r3
                    218:        beql    2f
                    219:        movl $14,r4                             /*reg no.               */
                    220:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    221:                                /*and observed values; r4 = prv reg no. */
                    222: /*LET US HOPE WE DON'T GET EXCEPTION DURING THIS TEST                  */
                    223: 
                    224: 2:
1.1.1.2 ! root      225:        mfpr    $ISP,_savvec0           /* save value of ISP    */
        !           226:        mtpr    $0x1f,$IPL              /* Set IPL to high      */
1.1       root      227:        movl    $0x55555554,r2                  /*int stck ptr register */
                    228:        mtpr    r2,$ISP
                    229:        mfpr    $ISP,r3
                    230:        cmpl    r2,r3
                    231:        beql    1f
                    232:        movl $15,r4                             /*reg no.               */
                    233:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    234:                                /*and observed values; r4 = prv reg no. */
                    235: 1:
                    236:        movl    $0xaaaaaaac,r2                  
                    237:        mtpr    r2,$ISP
                    238:        mfpr    $ISP,r3
                    239:        cmpl    r2,r3
                    240:        beql    2f
                    241:        movl $15,r4                             /*reg no.               */
                    242:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    243:                                /*and observed values; r4 = prv reg no. */
                    244: 2:
1.1.1.2 ! root      245:        mtpr    _savvec0,$ISP   /* Restore ISP                  */
1.1       root      246:        movl    $0xaaaa,r2      /* Soft int summary register    */
                    247:        movl    r2,*$SSR        /* is a read only register      */
                    248:        mfpr    $SISR,r3        /* funtional test no comparison */
                    249:        cmpl    r2,r3
                    250:        beql    1f
                    251:        movl $17,r4                             /*reg no.               */
                    252:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    253:                                /*and observed values; r4 = prv reg no. */
                    254: 1:
                    255:        movl    $0x5555,r2                      
                    256:        movl    r2,*$SSR 
                    257:        mfpr    $SISR,r3
                    258:        cmpl    r2,r3
                    259:        beql    2f
                    260:        movl    $17,r4                          /*reg no.               */
                    261:        jmp    *badrtn                  /***** - r2 & r3 contains exp   */
                    262:                                /*and observed values; r4 = prv reg no. */
                    263: 2:
                    264:        clrl    *$SSR
                    265:        movl    $0xfff000,r2
                    266:        movab   _iob4,r9
                    267:        mtpr    r9,$PCBB        /* Init PCBB    */
                    268:        mtpr    r2,$USP
                    269:        mfpr    $USP,r3
                    270:        cmpl    r2,r3
                    271:        beql    2f
                    272:        movl    $20,r4                          /*reg no.               */
                    273:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    274:                                /*and observed values; r4 = prv reg no. */
                    275: 2:
1.1.1.2 ! root      276:        mfpr    $KSP,_savvec9           /* Save KSP     */
1.1       root      277:        movl    $0xffe000,r2
                    278:        mtpr    r2,$KSP
                    279:        mfpr    $KSP,r3
                    280:        cmpl    r2,r3
                    281:        beql    2f
                    282:        movl    $19,r4                          /*reg no.               */
                    283:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    284:                                /*and observed values; r4 = prv reg no. */
                    285: 2:
1.1.1.2 ! root      286:        mtpr    _savvec9,$KSP   /* Restore KSP  */
1.1       root      287:        movl    *$0x414,r12     /* Save original SCB value in R12       */
                    288:        movl    $0xeee000,r2
                    289:        mtpr    r2,$SCBB
                    290:        mfpr    $SCBB,r3
                    291:        cmpl    r2,r3
                    292:        beql    2f
                    293:        movl    $18,r4                          /*reg no.               */
                    294:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    295:                                /*and observed values; r4 = prv reg no. */
                    296: 2:
                    297:        movl    r12,*$0x414     /* Restore original SCB         */
                    298:        mtpr    $0x1f,$IPL      /* Set IPL to High      */
                    299:        movl    $0x8000,r2
                    300:        mtpr    $0xf,$SIRR      /* Set SIRR at level 15 */
                    301:        mfpr    $SISR,r3        /* Read software int. summary register */
                    302:        cmpl    $0x8000,r3      /* Should indicate int. pending at level 15 */
                    303:        beql    2f
                    304:        movl    $16,r4                          /*reg no.               */
                    305:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    306:                                /*and observed values; r4 = prv reg no. */
                    307: 2:
                    308:        mtpr    $0,$SIRR        /* Clear SIRR */
                    309:        clrl    *$SSR
                    310:        movl    $0xaa,r2
                    311:        mtpr    r2,$DCK
                    312:        movl    *$TDCK,r3
                    313:        cmpl    r2,r3
                    314:        beql    2f
                    315:        movl    $12,r4                          /*reg no.               */
                    316:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    317:                                /*and observed values; r4 = prv reg no. */
                    318: 2:
                    319:        movl    $0xbb,r2
                    320:        mtpr    r2,$CCK
                    321:        movl    *$TCCK,r3
                    322:        cmpl    r2,r3
                    323:        beql    2f
                    324:        movl    $13,r4                          /*reg no.               */
                    325:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    326:                                /*and observed values; r4 = prv reg no. */
                    327: 2:
                    328: 
                    329:        movl    $0xffe000,r2
                    330:        movl    $KSP,_cache1
                    331:        mtpr    $0xffe000,_cache1       /* Literal to cache */
                    332:        mfpr    $KSP,r3
                    333:        cmpl    r2,r3
                    334:        beql    2f
                    335:        movl    $27,r4                  /* R4 = which part of the test */
                    336:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    337: 2:
                    338:        movl    $0xffa000,r2
                    339:        movl    r2,_cache2
                    340:        mtpr    _cache2,_cache1         /* Cache to cache */
                    341:        mfpr    $KSP,r3
                    342:        cmpl    r2,r3
                    343:        beql    2f
                    344:        movl    $28,r4                  /* R4 = which part of the test */
                    345:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    346: 2:
                    347:        movl    $0xffb000,r2
                    348:        movl    r2,_cache2
                    349:        movl    $KSP,r11
                    350:        mtpr    _cache2,r11             /* Cache to register */
                    351:        mfpr    $KSP,r3
                    352:        cmpl    r2,r3
                    353:        beql    2f
                    354:        movl    $29,r4                  /* R4 = which part of the test */
                    355:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    356: 2:
                    357:        movl    $0xffc000,r2
                    358:        movl    r2,_cache2
                    359:        mtpr    _cache2,$KSP            /* Cache to literal */
                    360:        mfpr    $KSP,r3
                    361:        cmpl    r2,r3
                    362:        beql    2f
                    363:        movl    $30,r4                  /* R4 = which part of the test */
                    364:        jmp     *badrtn                 /***** - r2 & r3 contains exp   */
                    365: 2:
1.1.1.2 ! root      366:        mtpr    $KSP,_savvec9   /* Restore KSP                          */
1.1       root      367:        mfpr    $MME,r9         /* The following MTPR/MFPR just to see  */
                    368:        mtpr    $1,$TBIA        /* if control return to program !!      */
                    369:        mtpr    $_iob4,$TBIS
                    370:        mfpr    $DCB,r9
                    371:        mtpr    $4,$PADC
                    372:        mtpr    $_iob4,$P1DC
                    373:        mtpr    $2,$PACC
                    374:        mtpr    $0,$DCR
                    375:        mfpr    $DCR,r9
                    376:        ret                     /* End of privileged registers test     */
                    377: 
                    378:        .align  2
                    379: prvar: .long   0
                    380: _cache1:
                    381:        .long   0
                    382: _cache2:
                    383:        .long   0
                    384: _sreg: .long   0
                    385: 

unix.superglobalmegacorp.com

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