Subversion Repositories HelenOS

Rev

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

Rev 4369 Rev 4383
Line 59... Line 59...
59
.align TABLE_SIZE
59
.align TABLE_SIZE
60
.global trap_table
60
.global trap_table
61
trap_table:
61
trap_table:
62
 
62
 
63
/* TT = 0x08, TL = 0, instruction_access_exception */
63
/* TT = 0x08, TL = 0, instruction_access_exception */
-
 
64
/* TT = 0x08, TL = 0, IAE_privilege_violation on UltraSPARC T2 */
64
.org trap_table + TT_INSTRUCTION_ACCESS_EXCEPTION*ENTRY_SIZE
65
.org trap_table + TT_INSTRUCTION_ACCESS_EXCEPTION*ENTRY_SIZE
65
.global instruction_access_exception_tl0
66
.global instruction_access_exception_tl0
66
instruction_access_exception_tl0:
67
instruction_access_exception_tl0:
67
	/*wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate
-
 
68
	PREEMPTIBLE_HANDLER instruction_access_exception*/
68
	PREEMPTIBLE_HANDLER instruction_access_exception
69
 
69
 
70
/* TT = 0x0a, TL = 0, instruction_access_error */
70
/* TT = 0x0a, TL = 0, instruction_access_error */
71
.org trap_table + TT_INSTRUCTION_ACCESS_ERROR*ENTRY_SIZE
71
.org trap_table + TT_INSTRUCTION_ACCESS_ERROR*ENTRY_SIZE
72
.global instruction_access_error_tl0
72
.global instruction_access_error_tl0
73
instruction_access_error_tl0:
73
instruction_access_error_tl0:
74
	PREEMPTIBLE_HANDLER instruction_access_error
74
	PREEMPTIBLE_HANDLER instruction_access_error
75
 
75
 
-
 
76
/* TT = 0x0b, TL = 0, IAE_unauth_access */
-
 
77
.org trap_table + TT_IAE_UNAUTH_ACCESS*ENTRY_SIZE
-
 
78
.global iae_unauth_access_tl0
-
 
79
iae_unauth_access_tl0:
-
 
80
	PREEMPTIBLE_HANDLER instruction_access_exception
-
 
81
 
-
 
82
/* TT = 0x0c, TL = 0, IAE_nfo_page */
-
 
83
.org trap_table + TT_IAE_NFO_PAGE*ENTRY_SIZE
-
 
84
.global iae_nfo_page_tl0
-
 
85
iae_nfo_page_tl0:
-
 
86
	PREEMPTIBLE_HANDLER instruction_access_exception
-
 
87
 
76
/* TT = 0x10, TL = 0, illegal_instruction */
88
/* TT = 0x10, TL = 0, illegal_instruction */
77
.org trap_table + TT_ILLEGAL_INSTRUCTION*ENTRY_SIZE
89
.org trap_table + TT_ILLEGAL_INSTRUCTION*ENTRY_SIZE
78
.global illegal_instruction_tl0
90
.global illegal_instruction_tl0
79
illegal_instruction_tl0:
91
illegal_instruction_tl0:
80
	PREEMPTIBLE_HANDLER illegal_instruction
92
	PREEMPTIBLE_HANDLER illegal_instruction
Line 95... Line 107...
95
.org trap_table + TT_UNIMPLEMENTED_STD*ENTRY_SIZE
107
.org trap_table + TT_UNIMPLEMENTED_STD*ENTRY_SIZE
96
.global unimplemented_STD_tl0
108
.global unimplemented_STD_tl0
97
unimplemented_STD_tl0:
109
unimplemented_STD_tl0:
98
	PREEMPTIBLE_HANDLER unimplemented_STD
110
	PREEMPTIBLE_HANDLER unimplemented_STD
99
 
111
 
-
 
112
/* TT = 0x14, TL = 0, DAE_invalid_asi */
-
 
113
.org trap_table + TT_DAE_INVALID_ASI*ENTRY_SIZE
-
 
114
.global dae_invalid_asi_tl0
-
 
115
dae_invalid_asi_tl0:
-
 
116
	PREEMPTIBLE_HANDLER data_access_exception
-
 
117
 
-
 
118
/* TT = 0x15, TL = 0, DAE_privilege_violation */
-
 
119
.org trap_table + TT_DAE_PRIVILEGE_VIOLATION*ENTRY_SIZE
-
 
120
.global dae_privilege_violation_tl0
-
 
121
dae_privilege_violation_tl0:
-
 
122
	PREEMPTIBLE_HANDLER data_access_exception
-
 
123
 
-
 
124
/* TT = 0x16, TL = 0, DAE_nc_page */
-
 
125
.org trap_table + TT_DAE_NC_PAGE*ENTRY_SIZE
-
 
126
.global dae_nc_page_tl0
-
 
127
dae_nc_page_tl0:
-
 
128
	PREEMPTIBLE_HANDLER data_access_exception
-
 
129
 
-
 
130
/* TT = 0x17, TL = 0, DAE_nfo_page */
-
 
131
.org trap_table + TT_DAE_NFO_PAGE*ENTRY_SIZE
-
 
132
.global dae_nfo_page_tl0
-
 
133
dae_nfo_page_tl0:
-
 
134
	PREEMPTIBLE_HANDLER data_access_exception
-
 
135
 
100
/* TT = 0x20, TL = 0, fb_disabled handler */
136
/* TT = 0x20, TL = 0, fb_disabled handler */
101
.org trap_table + TT_FP_DISABLED*ENTRY_SIZE
137
.org trap_table + TT_FP_DISABLED*ENTRY_SIZE
102
.global fb_disabled_tl0
138
.global fb_disabled_tl0
103
fp_disabled_tl0:
139
fp_disabled_tl0:
104
	PREEMPTIBLE_HANDLER fp_disabled
140
	PREEMPTIBLE_HANDLER fp_disabled
Line 132... Line 168...
132
.global division_by_zero_tl0
168
.global division_by_zero_tl0
133
division_by_zero_tl0:
169
division_by_zero_tl0:
134
	PREEMPTIBLE_HANDLER division_by_zero
170
	PREEMPTIBLE_HANDLER division_by_zero
135
 
171
 
136
/* TT = 0x30, TL = 0, data_access_exception */
172
/* TT = 0x30, TL = 0, data_access_exception */
-
 
173
/* TT = 0x30, TL = 0, DAE_side_effect_page for UltraPSARC T2 */
137
.org trap_table + TT_DATA_ACCESS_EXCEPTION*ENTRY_SIZE
174
.org trap_table + TT_DATA_ACCESS_EXCEPTION*ENTRY_SIZE
138
.global data_access_exception_tl0
175
.global data_access_exception_tl0
139
data_access_exception_tl0:
176
data_access_exception_tl0:
140
	/*wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate
-
 
141
	PREEMPTIBLE_HANDLER data_access_exception*/
177
	PREEMPTIBLE_HANDLER data_access_exception
142
 
178
 
143
/* TT = 0x32, TL = 0, data_access_error */
179
/* TT = 0x32, TL = 0, data_access_error */
144
.org trap_table + TT_DATA_ACCESS_ERROR*ENTRY_SIZE
180
.org trap_table + TT_DATA_ACCESS_ERROR*ENTRY_SIZE
145
.global data_access_error_tl0
181
.global data_access_error_tl0
146
data_access_error_tl0:
182
data_access_error_tl0:
Line 351... Line 387...
351
/*
387
/*
352
 * Handlers for TL>0.
388
 * Handlers for TL>0.
353
 */
389
 */
354
 
390
 
355
/* TT = 0x08, TL > 0, instruction_access_exception */
391
/* TT = 0x08, TL > 0, instruction_access_exception */
-
 
392
/* TT = 0x08, TL > 0, IAE_privilege_violation on UltraSPARC T2 */
356
.org trap_table + (TT_INSTRUCTION_ACCESS_EXCEPTION+512)*ENTRY_SIZE
393
.org trap_table + (TT_INSTRUCTION_ACCESS_EXCEPTION+512)*ENTRY_SIZE
357
.global instruction_access_exception_tl1
394
.global instruction_access_exception_tl1
358
instruction_access_exception_tl1:
395
instruction_access_exception_tl1:
359
	/*wrpr %g0, 1, %tl
396
	wrpr %g0, 1, %tl
360
	wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate
-
 
361
	PREEMPTIBLE_HANDLER instruction_access_exception*/
397
	PREEMPTIBLE_HANDLER instruction_access_exception
362
 
398
 
363
/* TT = 0x0a, TL > 0, instruction_access_error */
399
/* TT = 0x0a, TL > 0, instruction_access_error */
364
.org trap_table + (TT_INSTRUCTION_ACCESS_ERROR+512)*ENTRY_SIZE
400
.org trap_table + (TT_INSTRUCTION_ACCESS_ERROR+512)*ENTRY_SIZE
365
.global instruction_access_error_tl1
401
.global instruction_access_error_tl1
366
instruction_access_error_tl1:
402
instruction_access_error_tl1:
367
	wrpr %g0, 1, %tl
403
	wrpr %g0, 1, %tl
368
	PREEMPTIBLE_HANDLER instruction_access_error
404
	PREEMPTIBLE_HANDLER instruction_access_error
369
 
405
 
-
 
406
/* TT = 0x0b, TL > 0, IAE_unauth_access */
-
 
407
.org trap_table + (TT_IAE_UNAUTH_ACCESS+512)*ENTRY_SIZE
-
 
408
.global iae_unauth_access_tl1
-
 
409
iae_unauth_access_tl1:
-
 
410
	wrpr %g0, 1, %tl
-
 
411
	PREEMPTIBLE_HANDLER instruction_access_exception
-
 
412
 
-
 
413
/* TT = 0x0c, TL > 0, IAE_nfo_page */
-
 
414
.org trap_table + (TT_IAE_NFO_PAGE+512)*ENTRY_SIZE
-
 
415
.global iae_nfo_page_tl1
-
 
416
iae_nfo_page_tl1:
-
 
417
	wrpr %g0, 1, %tl
-
 
418
	PREEMPTIBLE_HANDLER instruction_access_exception
-
 
419
 
370
/* TT = 0x10, TL > 0, illegal_instruction */
420
/* TT = 0x10, TL > 0, illegal_instruction */
371
.org trap_table + (TT_ILLEGAL_INSTRUCTION+512)*ENTRY_SIZE
421
.org trap_table + (TT_ILLEGAL_INSTRUCTION+512)*ENTRY_SIZE
372
.global illegal_instruction_tl1
422
.global illegal_instruction_tl1
373
illegal_instruction_tl1:
423
illegal_instruction_tl1:
374
	wrpr %g0, 1, %tl
424
	wrpr %g0, 1, %tl
375
	PREEMPTIBLE_HANDLER illegal_instruction
425
	PREEMPTIBLE_HANDLER illegal_instruction
376
 
426
 
-
 
427
/* TT = 0x14, TL > 0, DAE_invalid_asi */
-
 
428
.org trap_table + (TT_DAE_INVALID_ASI+512)*ENTRY_SIZE
-
 
429
.global dae_invalid_asi_tl1
-
 
430
dae_invalid_asi_tl1:
-
 
431
	wrpr %g0, 1, %tl
-
 
432
	PREEMPTIBLE_HANDLER data_access_exception
-
 
433
 
-
 
434
/* TT = 0x15, TL > 0, DAE_privilege_violation */
-
 
435
.org trap_table + (TT_DAE_PRIVILEGE_VIOLATION+512)*ENTRY_SIZE
-
 
436
.global dae_privilege_violation_tl1
-
 
437
dae_privilege_violation_tl1:
-
 
438
	wrpr %g0, 1, %tl
-
 
439
	PREEMPTIBLE_HANDLER data_access_exception
-
 
440
 
-
 
441
/* TT = 0x16, TL > 0, DAE_nc_page */
-
 
442
.org trap_table + (TT_DAE_NC_PAGE+512)*ENTRY_SIZE
-
 
443
.global dae_nc_page_tl1
-
 
444
dae_nc_page_tl1:
-
 
445
	wrpr %g0, 1, %tl
-
 
446
	PREEMPTIBLE_HANDLER data_access_exception
-
 
447
 
-
 
448
/* TT = 0x17, TL > 0, DAE_nfo_page */
-
 
449
.org trap_table + (TT_DAE_NFO_PAGE+512)*ENTRY_SIZE
-
 
450
.global dae_nfo_page_tl1
-
 
451
dae_nfo_page_tl1:
-
 
452
	wrpr %g0, 1, %tl
-
 
453
	PREEMPTIBLE_HANDLER data_access_exception
-
 
454
 
377
/* TT = 0x24, TL > 0, clean_window handler */
455
/* TT = 0x24, TL > 0, clean_window handler */
378
.org trap_table + (TT_CLEAN_WINDOW+512)*ENTRY_SIZE
456
.org trap_table + (TT_CLEAN_WINDOW+512)*ENTRY_SIZE
379
.global clean_window_tl1
457
.global clean_window_tl1
380
clean_window_tl1:
458
clean_window_tl1:
381
	CLEAN_WINDOW_HANDLER
459
	CLEAN_WINDOW_HANDLER