Commit | Line | Data |
---|---|---|
da7c5cc6 | 1 | /* |
0880b18e | 2 | * Copyright (c) 1982, 1986 Regents of the University of California. |
da7c5cc6 KM |
3 | * All rights reserved. The Berkeley software License Agreement |
4 | * specifies the terms and conditions for redistribution. | |
5 | * | |
ca67e7b4 | 6 | * @(#)scb.s 7.4 (Berkeley) 5/14/88 |
da7c5cc6 | 7 | */ |
01c32e7f SL |
8 | |
9 | #include "uba.h" | |
8d708666 BJ |
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 | ||
7b0a009a | 17 | _scb: .globl _scb |
8d708666 | 18 | |
7b0a009a BJ |
19 | #define KS(a) .long _X/**/a |
20 | #define IS(a) .long _X/**/a+INTSTK | |
21 | #define STOP(a) .long _X/**/a+HALT | |
8d708666 | 22 | |
9a0de372 MK |
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); | |
7b0a009a BJ |
32 | /* 010 */ KS(privinflt); KS(xfcflt); KS(resopflt); KS(resadflt); |
33 | /* 020 */ KS(protflt); KS(transflt); KS(tracep); KS(bptflt); | |
9a0de372 | 34 | /* 030 */ KS(compatflt); KS(arithtrap); STRAY(0x38); STRAY(0x3c); |
7b0a009a | 35 | /* 040 */ KS(syscall); KS(chme); KS(chms); KS(chmu); |
9a0de372 MK |
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); | |
7b0a009a | 46 | /* 0f0 */ IS(consdin); IS(consdout); IS(cnrint); IS(cnxint); |
9a0de372 MK |
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 | |
148f759f | 56 | * of interrupt vectors for additional UBAs follow immediately. |
9a0de372 | 57 | * |
148f759f MK |
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. | |
9a0de372 | 60 | * An additional page is provided for UBA jump tables if the second |
148f759f MK |
61 | * scb might be present. Other CPUs with additional scbs should expand |
62 | * this area as needed. | |
9a0de372 | 63 | */ |
148f759f MK |
64 | .globl _UNIvec |
65 | .globl _eUNIvec | |
9a0de372 | 66 | _UNIvec: |
148f759f | 67 | #if VAX8600 |
9a0de372 MK |
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 | ||
9a0de372 | 77 | #endif |
148f759f MK |
78 | #if NUBA > 0 |
79 | .space 512*NUBA # 750 first/second unibus intr vector | |
80 | # UBA jump tables on 780's | |
096eb64d | 81 | #endif |
9a0de372 | 82 | _eUNIvec: |