61,11 → 61,11 |
trap_table: |
|
/* TT = 0x08, TL = 0, instruction_access_exception */ |
/* TT = 0x08, TL = 0, IAE_privilege_violation on UltraSPARC T2 */ |
.org trap_table + TT_INSTRUCTION_ACCESS_EXCEPTION*ENTRY_SIZE |
.global instruction_access_exception_tl0 |
instruction_access_exception_tl0: |
/*wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate |
PREEMPTIBLE_HANDLER instruction_access_exception*/ |
PREEMPTIBLE_HANDLER instruction_access_exception |
|
/* TT = 0x0a, TL = 0, instruction_access_error */ |
.org trap_table + TT_INSTRUCTION_ACCESS_ERROR*ENTRY_SIZE |
73,6 → 73,18 |
instruction_access_error_tl0: |
PREEMPTIBLE_HANDLER instruction_access_error |
|
/* TT = 0x0b, TL = 0, IAE_unauth_access */ |
.org trap_table + TT_IAE_UNAUTH_ACCESS*ENTRY_SIZE |
.global iae_unauth_access_tl0 |
iae_unauth_access_tl0: |
PREEMPTIBLE_HANDLER instruction_access_exception |
|
/* TT = 0x0c, TL = 0, IAE_nfo_page */ |
.org trap_table + TT_IAE_NFO_PAGE*ENTRY_SIZE |
.global iae_nfo_page_tl0 |
iae_nfo_page_tl0: |
PREEMPTIBLE_HANDLER instruction_access_exception |
|
/* TT = 0x10, TL = 0, illegal_instruction */ |
.org trap_table + TT_ILLEGAL_INSTRUCTION*ENTRY_SIZE |
.global illegal_instruction_tl0 |
97,6 → 109,30 |
unimplemented_STD_tl0: |
PREEMPTIBLE_HANDLER unimplemented_STD |
|
/* TT = 0x14, TL = 0, DAE_invalid_asi */ |
.org trap_table + TT_DAE_INVALID_ASI*ENTRY_SIZE |
.global dae_invalid_asi_tl0 |
dae_invalid_asi_tl0: |
PREEMPTIBLE_HANDLER data_access_exception |
|
/* TT = 0x15, TL = 0, DAE_privilege_violation */ |
.org trap_table + TT_DAE_PRIVILEGE_VIOLATION*ENTRY_SIZE |
.global dae_privilege_violation_tl0 |
dae_privilege_violation_tl0: |
PREEMPTIBLE_HANDLER data_access_exception |
|
/* TT = 0x16, TL = 0, DAE_nc_page */ |
.org trap_table + TT_DAE_NC_PAGE*ENTRY_SIZE |
.global dae_nc_page_tl0 |
dae_nc_page_tl0: |
PREEMPTIBLE_HANDLER data_access_exception |
|
/* TT = 0x17, TL = 0, DAE_nfo_page */ |
.org trap_table + TT_DAE_NFO_PAGE*ENTRY_SIZE |
.global dae_nfo_page_tl0 |
dae_nfo_page_tl0: |
PREEMPTIBLE_HANDLER data_access_exception |
|
/* TT = 0x20, TL = 0, fb_disabled handler */ |
.org trap_table + TT_FP_DISABLED*ENTRY_SIZE |
.global fb_disabled_tl0 |
134,11 → 170,11 |
PREEMPTIBLE_HANDLER division_by_zero |
|
/* TT = 0x30, TL = 0, data_access_exception */ |
/* TT = 0x30, TL = 0, DAE_side_effect_page for UltraPSARC T2 */ |
.org trap_table + TT_DATA_ACCESS_EXCEPTION*ENTRY_SIZE |
.global data_access_exception_tl0 |
data_access_exception_tl0: |
/*wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate |
PREEMPTIBLE_HANDLER data_access_exception*/ |
PREEMPTIBLE_HANDLER data_access_exception |
|
/* TT = 0x32, TL = 0, data_access_error */ |
.org trap_table + TT_DATA_ACCESS_ERROR*ENTRY_SIZE |
353,12 → 389,12 |
*/ |
|
/* TT = 0x08, TL > 0, instruction_access_exception */ |
/* TT = 0x08, TL > 0, IAE_privilege_violation on UltraSPARC T2 */ |
.org trap_table + (TT_INSTRUCTION_ACCESS_EXCEPTION+512)*ENTRY_SIZE |
.global instruction_access_exception_tl1 |
instruction_access_exception_tl1: |
/*wrpr %g0, 1, %tl |
wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate |
PREEMPTIBLE_HANDLER instruction_access_exception*/ |
wrpr %g0, 1, %tl |
PREEMPTIBLE_HANDLER instruction_access_exception |
|
/* TT = 0x0a, TL > 0, instruction_access_error */ |
.org trap_table + (TT_INSTRUCTION_ACCESS_ERROR+512)*ENTRY_SIZE |
367,6 → 403,20 |
wrpr %g0, 1, %tl |
PREEMPTIBLE_HANDLER instruction_access_error |
|
/* TT = 0x0b, TL > 0, IAE_unauth_access */ |
.org trap_table + (TT_IAE_UNAUTH_ACCESS+512)*ENTRY_SIZE |
.global iae_unauth_access_tl1 |
iae_unauth_access_tl1: |
wrpr %g0, 1, %tl |
PREEMPTIBLE_HANDLER instruction_access_exception |
|
/* TT = 0x0c, TL > 0, IAE_nfo_page */ |
.org trap_table + (TT_IAE_NFO_PAGE+512)*ENTRY_SIZE |
.global iae_nfo_page_tl1 |
iae_nfo_page_tl1: |
wrpr %g0, 1, %tl |
PREEMPTIBLE_HANDLER instruction_access_exception |
|
/* TT = 0x10, TL > 0, illegal_instruction */ |
.org trap_table + (TT_ILLEGAL_INSTRUCTION+512)*ENTRY_SIZE |
.global illegal_instruction_tl1 |
374,6 → 424,34 |
wrpr %g0, 1, %tl |
PREEMPTIBLE_HANDLER illegal_instruction |
|
/* TT = 0x14, TL > 0, DAE_invalid_asi */ |
.org trap_table + (TT_DAE_INVALID_ASI+512)*ENTRY_SIZE |
.global dae_invalid_asi_tl1 |
dae_invalid_asi_tl1: |
wrpr %g0, 1, %tl |
PREEMPTIBLE_HANDLER data_access_exception |
|
/* TT = 0x15, TL > 0, DAE_privilege_violation */ |
.org trap_table + (TT_DAE_PRIVILEGE_VIOLATION+512)*ENTRY_SIZE |
.global dae_privilege_violation_tl1 |
dae_privilege_violation_tl1: |
wrpr %g0, 1, %tl |
PREEMPTIBLE_HANDLER data_access_exception |
|
/* TT = 0x16, TL > 0, DAE_nc_page */ |
.org trap_table + (TT_DAE_NC_PAGE+512)*ENTRY_SIZE |
.global dae_nc_page_tl1 |
dae_nc_page_tl1: |
wrpr %g0, 1, %tl |
PREEMPTIBLE_HANDLER data_access_exception |
|
/* TT = 0x17, TL > 0, DAE_nfo_page */ |
.org trap_table + (TT_DAE_NFO_PAGE+512)*ENTRY_SIZE |
.global dae_nfo_page_tl1 |
dae_nfo_page_tl1: |
wrpr %g0, 1, %tl |
PREEMPTIBLE_HANDLER data_access_exception |
|
/* TT = 0x24, TL > 0, clean_window handler */ |
.org trap_table + (TT_CLEAN_WINDOW+512)*ENTRY_SIZE |
.global clean_window_tl1 |