Annotation of 43BSDReno/sys/tahoestand/machdep.c, revision 1.1.1.1

1.1       root        1: /*     machdep.c       1.4     90/06/22        */
                      2: 
                      3: #include "tahoe/mem.h"
                      4: #include "tahoe/mtpr.h"
                      5: #include "tahoe/SYS.h"
                      6: 
                      7:        .set    _scb, 0x0
                      8:        .set    HIGH, 0x1f      # mask for total disable
                      9:        .set    BERVEC, 0x80    # offset into scb of the bus error vector 
                     10:        .set    RESTVEC, 0x8    # offset into scb of the restart vector 
                     11: 
                     12: ENTRY(mtpr, 0)
                     13:        mtpr    8(fp),4(fp)
                     14:        ret
                     15: 
                     16: ENTRY(mfpr, 0)
                     17:        mfpr    4(fp),r0
                     18:        ret
                     19: 
                     20: ENTRY(bcopy, R2|R1|R0)
                     21:        movl    4(fp),r0
                     22:        movl    8(fp),r1
                     23:        movl    12(fp),r2
                     24:        movblk
                     25:        ret
                     26: 
                     27: /*
                     28:  * badaddr(addr, len)
                     29:  *     see if access addr with a len type instruction causes a machine check
                     30:  *     len is length of access (1=byte, 2=short, 4=long)
                     31:  *     r0 = 0 means good(exists); r0 =1 means does not exist.
                     32:  */
                     33: ENTRY(badaddr, R5|R4|R3|R2|R1)
                     34:        mfpr    $IPL,r1
                     35:        mtpr    $HIGH,$IPL
                     36:        mfpr    $SCBB,r5
                     37:        mtpr    $0,$SCBB
                     38:        movl    *$BERVEC,r2
                     39:        movl    4(fp),r3
                     40:        movl    8(fp),r4
                     41:        movab   9f,*$BERVEC
                     42:        bbc     $0,r4,1f; tstb  (r3)
                     43: 1:     bbc     $1,r4,1f; tstw  (r3)
                     44: 1:     bbc     $2,r4,1f; tstl  (r3)
                     45: 1:     clrl    r0                      # made it w/o machine checks
                     46: 2:     movl    r2,*$BERVEC
                     47:        mtpr    r1,$IPL
                     48:        mtpr    r5,$SCBB
                     49:        ret
                     50: 
                     51: /*
                     52:  * wbadaddr(addr, len, value)
                     53:  *     see if write of value to addr with a len type instruction causes
                     54:  *     a machine check
                     55:  *     len is length of access (1=byte, 2=short, 4=long)
                     56:  *     r0 = 0 means good(exists); r0 =1 means does not exist.
                     57:  */
                     58: ENTRY(wbadaddr, R5|R4|R3|R2|R1)
                     59:        mfpr    $IPL,r1
                     60:        mtpr    $HIGH,$IPL
                     61:        mfpr    $SCBB,r5
                     62:        mtpr    $0,$SCBB
                     63:        movl    *$BERVEC,r2
                     64:        movl    4(fp),r3
                     65:        movl    8(fp),r4
                     66:        movab   9f,*$BERVEC
                     67:        bbc     $0,r4,1f; movb  15(fp), (r3)
                     68: 1:     bbc     $1,r4,1f; movw  14(fp), (r3)
                     69: 1:     bbc     $2,r4,1f; movl  12(fp), (r3)
                     70: 1:     clrl    r0                      # made it w/o machine checks
                     71: 2:     movl    r2,*$BERVEC
                     72:        mtpr    r1,$IPL
                     73:        mtpr    r5,$SCBB
                     74:        ret
                     75: 
                     76:        .align  2
                     77: 9:                     # Here we catch buss error (if it comes)
                     78:        andl3   4(sp),$ERRCD,r0
                     79:        cmpl    r0,$APE
                     80:        jneq    1f
                     81:        halt                    # Address parity error !!!
                     82: 1:     cmpl    r0,$VBE
                     83:        jneq    1f
                     84:        halt                    # Versabus error
                     85: 1:
                     86:        movl    $1,r0           # Anything else = bad address
                     87:        movab   8(sp),sp        # discard buss error trash
                     88:        movab   2b,(sp)         # new program counter on stack.
                     89:        rei
                     90: 
                     91: ENTRY(movow, 0)
                     92:        movow   10(fp),*4(fp)
                     93:        ret
                     94: 
                     95: ENTRY(movob, 0)
                     96:        movob   11(fp),*4(fp)
                     97:        ret

unix.superglobalmegacorp.com

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