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 |