Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4382 → Rev 4383

/branches/sparc/kernel/arch/sparc64/include/trap/exception.h
38,10 → 38,16
 
#define TT_INSTRUCTION_ACCESS_EXCEPTION 0x08
#define TT_INSTRUCTION_ACCESS_ERROR 0x0a
#define TT_IAE_UNAUTH_ACCESS 0x0b
#define TT_IAE_NFO_PAGE 0x0c
#define TT_ILLEGAL_INSTRUCTION 0x10
#define TT_PRIVILEGED_OPCODE 0x11
#define TT_UNIMPLEMENTED_LDD 0x12
#define TT_UNIMPLEMENTED_STD 0x13
#define TT_DAE_INVALID_ASI 0x14
#define TT_DAE_PRIVILEGE_VIOLATION 0x15
#define TT_DAE_NC_PAGE 0x16
#define TT_DAE_NFO_PAGE 0x17
#define TT_FP_DISABLED 0x20
#define TT_FP_EXCEPTION_IEEE_754 0x21
#define TT_FP_EXCEPTION_OTHER 0x22
/branches/sparc/kernel/arch/sparc64/src/trap/sun4v/trap_table.S
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