Annotation of 43BSDTahoe/sys/vax/scb.s, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1982, 1986 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)scb.s       7.4 (Berkeley) 5/14/88
                      7:  */
                      8: 
                      9: #include "uba.h"
                     10: 
                     11: /*
                     12:  * System control block
                     13:  */
                     14:        .set    INTSTK,1        # handle this interrupt on the interrupt stack
                     15:        .set    HALT,3          # halt if this interrupt occurs
                     16: 
                     17: _scb:  .globl  _scb
                     18: 
                     19: #define        KS(a)   .long   _X/**/a
                     20: #define        IS(a)   .long   _X/**/a+INTSTK
                     21: #define        STOP(a) .long   _X/**/a+HALT
                     22: 
                     23: #define        STRAY(x)        .long   _scbstray+2*(x)+INTSTK
                     24: #define        STRAY3(n)       STRAY(n);STRAY(n+4);STRAY(n+8)
                     25: #define        STRAY4(n)       STRAY3(n);STRAY(n+12)
                     26: #define        STRAY15(n)      STRAY4(n);STRAY4(n+16);STRAY4(n+32);STRAY3(n+48)
                     27: #define        STRAY16(n)      STRAY15(n);STRAY(n+60)
                     28: #define        NEX0(n) IS(nex0zvec);STRAY15(n+4)
                     29: #define        NEX1(n) IS(nex1zvec);STRAY15(n+4)
                     30: 
                     31: /* 000 */      IS(passiverel); IS(machcheck);  IS(kspnotval);  STOP(powfail);
                     32: /* 010 */      KS(privinflt);  KS(xfcflt);     KS(resopflt);   KS(resadflt);
                     33: /* 020 */      KS(protflt);    KS(transflt);   KS(tracep);     KS(bptflt);
                     34: /* 030 */      KS(compatflt);  KS(arithtrap);  STRAY(0x38);    STRAY(0x3c);
                     35: /* 040 */      KS(syscall);    KS(chme);       KS(chms);       KS(chmu);
                     36: /* 050 */      IS(sbisilo);    IS(cmrd);       IS(sbi0alert);  IS(sbi0fault);
                     37: /* 060 */      IS(wtime);      IS(sbi0fail);   STRAY(0x68);    STRAY(0x6c);
                     38: /* 070 */      STRAY(0x70);    STRAY(0x74);    STRAY(0x78);    STRAY(0x7c);
                     39: /* 080 */      STRAY(0x80);    STRAY(0x84);    KS(astflt);     STRAY(0x8c);
                     40: /* 090 */      STRAY(0x90);    STRAY(0x94);    STRAY(0x98);    STRAY(0x9c);
                     41: /* 0a0 */      IS(softclock);  STRAY(0xa4);    STRAY(0xa8);    STRAY(0xac);
                     42: /* 0b0 */      IS(netintr);    STRAY(0xb4);    STRAY(0xb8);    IS(kdbintr);
                     43: /* 0c0 */      IS(hardclock);  STRAY(0xc4);    KS(emulate);    KS(emulateFPD);
                     44: /* 0d0 */      STRAY(0xd0);    STRAY(0xd4);    STRAY(0xd8);    STRAY(0xdc);
                     45: /* 0e0 */      STRAY(0xe0);    STRAY(0xe4);    STRAY(0xe8);    STRAY(0xec);
                     46: /* 0f0 */      IS(consdin);    IS(consdout);   IS(cnrint);     IS(cnxint);
                     47: /* 100 */      NEX0(0x100);            /* ipl 0x14, nexus 0-15 */
                     48: /* 140 */      NEX0(0x140);            /* ipl 0x15, nexus 0-15 */
                     49: /* 180 */      NEX0(0x180);            /* ipl 0x16, nexus 0-15 */
                     50: /* 1c0 */      NEX0(0x1c0);            /* ipl 0x17, nexus 0-15 */
                     51: 
                     52: /*
                     53:  * 750 hardware reads through UNIvec (scb + 512 bytes) to find Unibus
                     54:  * interrupt vectors.  780s use this space as a jump table (lookup
                     55:  * code in locore.s makes 780s work like 750s).  Additional pages
                     56:  * of interrupt vectors for additional UBAs follow immediately.
                     57:  *
                     58:  * 8600s may use the next page as a second SCB, for which purpose we init
                     59:  * it here.  Everything else will simply replace these with Unibus vectors.
                     60:  * An additional page is provided for UBA jump tables if the second
                     61:  * scb might be present.  Other CPUs with additional scbs should expand
                     62:  * this area as needed.
                     63:  */
                     64:        .globl  _UNIvec
                     65:        .globl  _eUNIvec
                     66: _UNIvec:
                     67: #if VAX8600
                     68: /* 200 */      STRAY16(0x200);         /* unused (?) */
                     69: /* 240 */      STRAY16(0x240);         /* sbi1fail etc. set at boot time */
                     70: /* 280 */      STRAY16(0x280);         /* unused (?) */
                     71: /* 2c0 */      STRAY16(0x2c0);         /* unused (?) */
                     72: /* 300 */      NEX1(0x300);            /* ipl 0x14, nexus 0-15, sbia 1 */
                     73: /* 340 */      NEX1(0x340);            /* ipl 0x15, nexus 0-15, sbia 1 */
                     74: /* 380 */      NEX1(0x380);            /* ipl 0x16, nexus 0-15, sbia 1 */
                     75: /* 3c0 */      NEX1(0x3c0);            /* ipl 0x17, nexus 0-15, sbia 1 */
                     76: 
                     77: #endif
                     78: #if NUBA > 0
                     79:                .space  512*NUBA        # 750 first/second unibus intr vector
                     80:                                        # UBA jump tables on 780's
                     81: #endif
                     82: _eUNIvec:

unix.superglobalmegacorp.com

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