Annotation of cci/sys/stand/machdep.s, revision 1.1.1.1

1.1       root        1: /*     machdep.s       4.2     23-Aug-85 */
                      2: 
                      3:        .set    _scb, 0x0       # mask for total disable
                      4:        .set    HIGH, 0x1f      # mask for total disable
                      5:        .set    BERVEC, 0x80    # offset into scb of the bus error vector 
                      6:        .set    RESTVEC, 0x8    # offset into scb of the restart vector 
                      7: 
                      8:        .set    IPL, 0x8        # Interupt Priority Level register
                      9:        .set    SCBB, 0x12      # SCB Block pointer register
                     10:        
                     11: /* MER bits */
                     12: 
                     13:        .set    ERRCD, 0x07     # Error code (mask)
                     14:        .set    APE, 1          # Address parity error
                     15:        .set    DPE, 2          # Data parity error
                     16:        .set    DCE, 3          # Data check error
                     17:        .set    VTO, 4          # Versabus timeout
                     18:        .set    VBE, 5          # Versabus error
                     19:        .set    NEM, 6          # Non-existent memory
                     20: 
                     21: 
                     22:        .globl  _mtpr
                     23: _mtpr:
                     24:        .word   0x00            # don't keep anything
                     25:        mtpr    4(fp),8(fp)
                     26:        ret
                     27:        
                     28: 
                     29:        .globl  _mfpr
                     30: _mfpr:
                     31:        .word   0x00            # don't keep anything
                     32:        mfpr    4(fp),r0
                     33:        ret
                     34: 
                     35: /*  Copy bytes within kernel */
                     36:        
                     37:        .globl  _bcopy
                     38: _bcopy:
                     39:        .word   0x07            # Keep r2,r1,r0
                     40:        movl    4(fp),r0
                     41:        movl    8(fp),r1
                     42:        movl    12(fp),r2
                     43:        movblk
                     44:        ret
                     45: 
                     46: 
                     47: /* badaddr(addr, len) */
                     48: /*     see if access addr with a len type instruction causes a machine check */
                     49: /*     len is length of access (1=byte, 2=short, 4=long) */
                     50: /*     r0 = 0 means good(exists); r0 =1 means does not exist. */
                     51: 
                     52:        .globl  _badaddr
                     53: _badaddr:
                     54:        .word   0x1e    # Keep r5,r4,r3,r2,r1
                     55:        mfpr    $IPL,r1
                     56:        mtpr    $HIGH,$IPL
                     57:        mfpr    $SCBB,r5
                     58:        mtpr    $0,$SCBB
                     59:        movl    *$BERVEC,r2
                     60:        movl    4(fp),r3
                     61:        movl    8(fp),r4
                     62:        movab   9f,*$BERVEC
                     63:        bbc     $0,r4,1f; tstb  (r3)
                     64: 1:     bbc     $1,r4,1f; tstw  (r3)
                     65: 1:     bbc     $2,r4,1f; tstl  (r3)
                     66: 1:     clrl    r0                      # made it w/o machine checks
                     67: 2:     movl    r2,*$BERVEC
                     68:        mtpr    r1,$IPL
                     69:        mtpr    r5,$SCBB
                     70:        ret
                     71: 
                     72:        .align  2
                     73: 9:                     # Here we catch buss error (if it comes)
                     74:        andl3   4(sp),$ERRCD,r0
                     75:        cmpl    r0,$APE
                     76:        jneq    1f
                     77:        halt                    # Address parity error !!!
                     78: 1:     cmpl    r0,$VBE
                     79:        jneq    1f
                     80:        halt                    # Versabus error
                     81: 1:
                     82:        movl    $1,r0           # Anything else = bad address
                     83:        movab   8(sp),sp        # discard buss error trash
                     84:        movab   2b,(sp)         # new program counter on stack.
                     85:        rei
                     86: 

unix.superglobalmegacorp.com

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