|
|
1.1 root 1: #/*
2: # * Interrupt vector routines
3: # */
4:
5: #define SCBVEC(name) .align 2 \
6: .globl _X/**/name \
7: _X/**/name
8: #define PANIC(msg) clrl _waittime \
9: pushab 1f \
10: calls $1*4+4,_panic \
11: halt \
12: 1: .asciz msg
13: #define PRINTF(n,msg) pushab 1f; calls $(n+1)*4+4,_printf; MSG(msg)
14: #define MSG(msg) 1: .asciz msg
15: #define PUSHR pushl r5; pushl r4; pushl r3; pushl r2;\
16: pushl r1; pushl r0
17:
18: #define POPR movl (sp)+,r0 \
19: movl (sp)+,r1 \
20: movl (sp)+,r2 \
21: movl (sp)+,r3 \
22: movl (sp)+,r4 \
23: movl (sp)+,r5
24: #/*
25: # *unknown interrupt
26: #*/
27:
28: SCBVEC(unknown):
29: halt
30: #/*
31: #
32: # *powerfail
33: # *psl & pc are saved on int stack.
34: # *This routine saves general registers,memory mgmt registers,
35: # *privileged registers, etc. in _dbuf & then executes halt.
36: # *
37: # *The restart location is saved at 0x00000c00. CPU 2 should
38: # *restart at the location specified after power is up.
39: #
40: #*/
41:
42: SCBVEC(powerfail):
43:
44: /*save context and restart location*/
45:
46: halt
47:
48: #/*
49: #
50: # *interval timer
51: #
52: #*/
53:
54: SCBVEC(hardclock):
55: #
56: # Timer interrupt
57: #
58: rei
59:
60: SCBVEC(cnrint):
61: halt
62: #/*
63: # *console terminal transmit interrupt
64: #*/
65:
66: SCBVEC(cnxint):
67: rei
68: #/*
69: # *software generated interrupts
70: #*/
71:
72: SCBVEC(s15):
73: halt
74: #/*
75: # *software generated interrupts
76: #*/
77:
78: SCBVEC(s14):
79: halt
80: #/*
81: # *software generated interrupts
82: #*/
83:
84: SCBVEC(s13):
85: halt
86: #/*
87: # *software generated interrupts
88: #*/
89:
90: SCBVEC(s12):
91: halt
92: #/*
93: # *software generated interrupts
94: #*/
95:
96: SCBVEC(s11):
97: halt
98: #/*
99: # *software generated interrupts
100: #*/
101:
102: SCBVEC(s10):
103: halt
104: #/*
105: # *software generated interrupts
106: #*/
107:
108: SCBVEC(s9):
109: halt
110: #/*
111: # *software generated interrupts
112: #*/
113:
114: SCBVEC(s8):
115: halt
116: #/*
117: # *software generated interrupts
118: #*/
119:
120: SCBVEC(s7):
121: halt
122: #/*
123: # *software generated interrupts
124: #*/
125:
126: SCBVEC(s6):
127: halt
128: #/*
129: # *software generated interrupts
130: #*/
131:
132: SCBVEC(s5):
133: halt
134: #/*
135: # *software generated interrupts
136: #*/
137:
138: SCBVEC(s4):
139: halt
140: #/*
141: # *software generated interrupts
142: #*/
143:
144: SCBVEC(s3):
145: halt
146: #/*
147: # *software generated interrupts
148: #*/
149:
150: SCBVEC(s2):
151: halt
152: #/*
153: # *software generated interrupts
154: #*/
155:
156: SCBVEC(s1):
157: halt
158:
159: #/*
160: # *io interrupt
161: #*/
162:
163: SCBVEC(iovec14):
164: halt
165: SCBVEC(iovec15):
166: halt
167: SCBVEC(iovec16):
168: halt
169: SCBVEC(iovec17):
170: halt
171:
172: #/*
173: # *EXCEPTIONS
174: #*/
175:
176: #/*
177: #
178: # *buserror
179: # *psl, pc, and errorcode are pushed onto int stack.
180: # *ipl is raised to 0x1d.
181: # *buserror could be due to:
182: # *non-existent memory
183: # *versabus timeout
184: # *uncorrectable memory
185: # *versabus error (BERR)
186: # *versabus parity error
187: #
188: #*/
189: SCBVEC(buserror):
190: halt
191:
192: #/*
193: # *kernel stack not valid
194: # *happens only during the initiation of another exception or
195: # *interrupt.The process must be aborted.
196: # *pc & psl are pushed onto INTSTACK.
197: # * IPL is raised to 0x1f.
198: # *this routine calls _panic routine written in C which prints
199: # *the message & waits for the operator action.
200: #*/
201:
202: SCBVEC(kspnotval):
203: halt
204: #/*
205: #* Trap and fault vector routines
206: #*/
207: #define TRAP(a) pushl $a; brw alltraps
208:
209: SCBVEC(prvinflt):
210: halt
211: SCBVEC(resopflt):
212: halt
213: SCBVEC(resadflt):
214: halt
215: SCBVEC(bptflt):
216: halt
217: SCBVEC(tracep):
218: halt
219: SCBVEC(arithtrap):
220: halt
221: SCBVEC(protflt): /*access control violation*/
222: halt
223: SCBVEC(transflt):
224: halt
225: SCBVEC(alignflt):
226: halt
227:
228: alltraps:
229: halt
230: #/* mfpr $USP,-(sp)
231: # calls $0*4+4,_trap
232: # mtpr (sp)+,$USP
233: # incl _cnt+V_TRAP
234: #
235: # movab (sp),r12
236: # addl2 $12,r12
237: # movl r12,sp
238: #
239: # mtpr $HIGH,$IPL
240: # rei
241: #*/
242:
243: SCBVEC(kcall): /*kcall*/
244: halt
245: #/*
246: # pushl $SYSCALL
247: # mfpr $USP,-(sp)
248: # calls $0*4+4,_syscall
249: # mtpr (sp)+,$USP
250: # incl _cnt+V_SYSCALL
251: #
252: # movab (sp),r12
253: # addl2 $12,r12
254: # movl r12,sp
255: #
256: # mtpr $HIGH,$IPL
257: # rei
258: #*/
259:
260:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.