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 |