Subversion Repositories HelenOS

Rev

Rev 1855 | Rev 1857 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1855 Rev 1856
Line 201... Line 201...
201
.org trap_table + TT_SPILL_0_NORMAL*ENTRY_SIZE
201
.org trap_table + TT_SPILL_0_NORMAL*ENTRY_SIZE
202
.global spill_0_normal
202
.global spill_0_normal
203
spill_0_normal:
203
spill_0_normal:
204
	SPILL_NORMAL_HANDLER_KERNEL
204
	SPILL_NORMAL_HANDLER_KERNEL
205
 
205
 
-
 
206
/* TT = 0x84, TL = 0, spill_1_normal handler */
-
 
207
.org trap_table + TT_SPILL_1_NORMAL*ENTRY_SIZE
-
 
208
.global spill_1_normal
-
 
209
spill_1_normal:
-
 
210
	SPILL_NORMAL_HANDLER_USERSPACE
-
 
211
 
-
 
212
/* TT = 0x88, TL = 0, spill_2_normal handler */
-
 
213
.org trap_table + TT_SPILL_2_NORMAL*ENTRY_SIZE
-
 
214
.global spill_2_normal
-
 
215
spill_2_normal:
-
 
216
	SPILL_TO_USPACE_WINDOW_BUFFER
-
 
217
 
206
/* TT = 0xc0, TL = 0, fill_0_normal handler */
218
/* TT = 0xc0, TL = 0, fill_0_normal handler */
207
.org trap_table + TT_FILL_0_NORMAL*ENTRY_SIZE
219
.org trap_table + TT_FILL_0_NORMAL*ENTRY_SIZE
208
.global fill_0_normal
220
.global fill_0_normal
209
fill_0_normal:
221
fill_0_normal:
210
	FILL_NORMAL_HANDLER_KERNEL
222
	FILL_NORMAL_HANDLER_KERNEL
211
 
223
 
-
 
224
/* TT = 0xc4, TL = 0, fill_1_normal handler */
-
 
225
.org trap_table + TT_FILL_1_NORMAL*ENTRY_SIZE
-
 
226
.global fill_1_normal
-
 
227
fill_1_normal:
-
 
228
	FILL_NORMAL_HANDLER_USERSPACE
-
 
229
 
212
/*
230
/*
213
 * Handlers for TL>0.
231
 * Handlers for TL>0.
214
 */
232
 */
215
 
233
 
216
/* TT = 0x08, TL > 0, instruction_access_exception */
234
/* TT = 0x08, TL > 0, instruction_access_exception */
Line 265... Line 283...
265
.org trap_table + (TT_SPILL_0_NORMAL+512)*ENTRY_SIZE
283
.org trap_table + (TT_SPILL_0_NORMAL+512)*ENTRY_SIZE
266
.global spill_0_normal_high
284
.global spill_0_normal_high
267
spill_0_normal_high:
285
spill_0_normal_high:
268
	SPILL_NORMAL_HANDLER_KERNEL
286
	SPILL_NORMAL_HANDLER_KERNEL
269
 
287
 
-
 
288
/* TT = 0x88, TL > 0, spill_2_normal handler */
-
 
289
.org trap_table + (TT_SPILL_2_NORMAL+512)*ENTRY_SIZE
-
 
290
.global spill_2_normal_high
-
 
291
spill_2_normal_high:
-
 
292
	SPILL_TO_USPACE_WINDOW_BUFFER
-
 
293
 
-
 
294
/* TT = 0xa0, TL > 0, spill_0_other handler */
-
 
295
.org trap_table + (TT_SPILL_0_OTHER+512)*ENTRY_SIZE
-
 
296
.global spill_0_other_high
-
 
297
spill_0_other_high:
-
 
298
	SPILL_TO_USPACE_WINDOW_BUFFER
-
 
299
 
270
/* TT = 0xc0, TL > 0, fill_0_normal handler */
300
/* TT = 0xc0, TL > 0, fill_0_normal handler */
271
.org trap_table + (TT_FILL_0_NORMAL+512)*ENTRY_SIZE
301
.org trap_table + (TT_FILL_0_NORMAL+512)*ENTRY_SIZE
272
.global fill_0_normal_high
302
.global fill_0_normal_high
273
fill_0_normal_high:
303
fill_0_normal_high:
274
	FILL_NORMAL_HANDLER_KERNEL
304
	FILL_NORMAL_HANDLER_KERNEL
Line 287... Line 317...
287
 *
317
 *
288
 * Input registers:
318
 * Input registers:
289
 *	%g1		Address of function to call.
319
 *	%g1		Address of function to call.
290
 * 	%g2	 	Argument for the function.
320
 * 	%g2	 	Argument for the function.
291
 *	%g6		Pre-set as kernel stack base if trap from userspace.
321
 *	%g6		Pre-set as kernel stack base if trap from userspace.
292
 *	%g7		Reserved.
322
 *	%g7		Pre-set as address of the userspace window buffer.
293
 */
323
 */
294
.global preemptible_handler
324
.global preemptible_handler
295
preemptible_handler:
325
preemptible_handler:
296
	rdpr %tstate, %g3
326
	rdpr %tstate, %g3
297
	andcc %g3, TSTATE_PRIV_BIT, %g0		! if this trap came from the privileged mode...
327
	andcc %g3, TSTATE_PRIV_BIT, %g0		! if this trap came from the privileged mode...