* ========== Copyright Header Begin ==========================================
* OpenSPARC T2 Processor File: htraps.s
* Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
* 4150 Network Circle, Santa Clara, California 95054, U.S.A.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* For the avoidance of doubt, and except that if any non-GPL license
* choice is available it will apply instead, Sun elects to use only
* the General Public License version 2 (GPLv2) at this time for any
* software where a choice of GPL license versions is made
* available with the language indicating that GPLv2 or any later version
* may be used, or where a choice of which version of the GPL is applied is
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* ========== Copyright Header End ============================================
#define NORMAL_TRAP(n) add %l0, n, %l0; b TrapCheck; nop;nop;nop;nop;nop;nop
#define NORMAL_TRAP(n) mov n, %g7; b TrapCheck; nop;nop;nop;nop;nop;nop
#define SPILL_TRAP(n) saved; retry; nop;nop;nop;nop;nop;nop;
#define SPILL_TRAP(n) saved; mov n, %g7; b TrapCheck; nop;
#define FILL_TRAP(n) restored; retry; nop;nop;nop;nop;nop;nop;
#define FILL_TRAP(n) restored; mov n, %g7; b TrapCheck; nop;
#define CUSTOM_TRAP(n) setx n, %g1, %g2; jmp %g2; nop
#ifdef H_HT0_Reserved_0x00
#ifdef SUN_H_HT0_Reserved_0x00
CUSTOM_TRAP(H_HT0_Reserved_0x00)
#ifdef H_HT0_Reserved_0x01
#ifdef SUN_H_HT0_Reserved_0x01
CUSTOM_TRAP(H_HT0_Reserved_0x01)
#ifdef H_HT0_Watchdog_Reset_0x02
#ifdef SUN_H_HT0_Watchdog_Reset_0x02
SUN_H_HT0_Watchdog_Reset_0x02
# ifdef My_HT0_Watchdog_Reset_0x02
My_HT0_Watchdog_Reset_0x02
CUSTOM_TRAP(H_HT0_Watchdog_Reset_0x02)
HT0_Externally_Initiated_Reset_0x03:
#ifdef H_HT0_Externally_Initiated_Reset_0x03
#ifdef SUN_H_HT0_Externally_Initiated_Reset_0x03
SUN_H_HT0_Externally_Initiated_Reset_0x03
CUSTOM_TRAP(H_HT0_Externally_Initiated_Reset_0x03)
HT0_Software_Initiated_Reset_0x04:
#ifdef H_HT0_Software_Initiated_Reset_0x04
#ifdef SUN_H_HT0_Software_Initiated_Reset_0x04
SUN_H_HT0_Software_Initiated_Reset_0x04
CUSTOM_TRAP(H_HT0_Software_Initiated_Reset_0x04)
#ifdef H_HT0_Reserved_0x05
#ifdef SUN_H_HT0_Reserved_0x05
CUSTOM_TRAP(H_HT0_Reserved_0x05)
#ifdef H_HT0_Reserved_0x06
#ifdef SUN_H_HT0_Reserved_0x06
CUSTOM_TRAP(H_HT0_Reserved_0x06)
#ifdef H_HT0_Store_Error_0x07
#ifdef SUN_H_HT0_Store_Error_0x07
SUN_H_HT0_Store_Error_0x07
CUSTOM_TRAP(H_HT0_Store_Error_0x07)
HT0_IAE_privilege_violation_0x08:
#ifdef H_HT0_IAE_privilege_violation_0x08
#ifdef SUN_H_HT0_IAE_privilege_violation_0x08
SUN_H_HT0_IAE_privilege_violation_0x08
# ifdef My_HT0_IAE_privilege_violation_0x08
My_HT0_IAE_privilege_violation_0x08
CUSTOM_TRAP(H_HT0_IAE_privilege_violation_0x08)
# ifdef CLEAR_ITTE_P_ON_INSTR_ACC_EXCE
b iaccess_except_handler; nop;nop;nop;nop;nop;nop;nop;
HT0_Instruction_Access_MMU_Miss_0x09:
#ifdef H_HT0_Instruction_Access_MMU_Miss_0x09
#ifdef SUN_H_HT0_Instruction_Access_MMU_Miss_0x09
SUN_H_HT0_Instruction_Access_MMU_Miss_0x09
# ifdef My_HT0_Instruction_Access_MMU_Miss_0x09
My_HT0_Instruction_Access_MMU_Miss_0x09
CUSTOM_TRAP(H_HT0_Instruction_Access_MMU_Miss_0x09)
nop;nop;nop;nop;nop;nop;nop
HT0_Instruction_Access_Error_0x0a:
#ifdef H_HT0_Instruction_access_error_0x0a
#ifdef SUN_H_HT0_Instruction_access_error_0x0a
SUN_H_HT0_Instruction_access_error_0x0a
CUSTOM_TRAP(H_HT0_Instruction_access_error_0x0a)
HT0_IAE_unauth_access_0x0b:
#ifdef H_HT0_IAE_unauth_access_0x0b
#ifdef SUN_H_HT0_IAE_unauth_access_0x0b
SUN_H_HT0_IAE_unauth_access_0x0b
CUSTOM_TRAP(H_HT0_IAE_unauth_access_0x0b)
#ifdef H_HT0_IAE_nfo_page_0x0c
#ifdef SUN_H_HT0_IAE_nfo_page_0x0c
SUN_H_HT0_IAE_nfo_page_0x0c
CUSTOM_TRAP(H_HT0_IAE_nfo_page_0x0c)
HT0_Instruction_address_range_0x0d:
#ifdef H_HT0_Instruction_address_range_0x0d
#ifdef SUN_H_HT0_Instruction_address_range_0x0d
SUN_H_HT0_Instruction_address_range_0x0d
#ifdef My_HT0_Instruction_address_range_0x0d
My_HT0_Instruction_address_range_0x0d
CUSTOM_TRAP(H_HT0_Instruction_address_range_0x0d)
HT0_Instruction_real_range_0x0e:
#ifdef H_HT0_Instruction_real_range_0x0e
#ifdef SUN_H_HT0_Instruction_real_range_0x0e
SUN_H_HT0_Instruction_real_range_0x0e
CUSTOM_TRAP(H_HT0_Instruction_real_range_0x0e)
#ifdef H_HT0_Reserved_0x0f
#ifdef SUN_H_HT0_Reserved_0x0f
CUSTOM_TRAP(H_HT0_Reserved_0x0f)
HT0_Illegal_Instruction_0x10:
#ifdef H_HT0_Illegal_instruction_0x10
#ifdef SUN_H_HT0_Illegal_instruction_0x10
SUN_H_HT0_Illegal_instruction_0x10
# ifdef My_HT0_Illegal_instruction_0x10
My_HT0_Illegal_instruction_0x10
CUSTOM_TRAP(H_HT0_Illegal_instruction_0x10)
HT0_Privileged_Opcode_0x11:
#ifdef H_HT0_Privileged_opcode_0x11
#ifdef SUN_H_HT0_Privileged_opcode_0x11
SUN_H_HT0_Privileged_opcode_0x11
# ifdef My_HT0_Privileged_opcode_0x11
My_HT0_Privileged_opcode_0x11
CUSTOM_TRAP(H_HT0_Privileged_opcode_0x11)
HT0_Unimplemented_LDD_0x12:
#ifdef H_HT0_Unimplemented_LDD_0x12
#ifdef SUN_H_HT0_Unimplemented_LDD_0x12
SUN_H_HT0_Unimplemented_LDD_0x12
CUSTOM_TRAP(H_HT0_Unimplemented_LDD_0x12)
HT0_Unimplemented_STD_0x13:
#ifdef H_HT0_Unimplemented_STD_0x13
#ifdef SUN_H_HT0_Unimplemented_STD_0x13
SUN_H_HT0_Unimplemented_STD_0x13
CUSTOM_TRAP(H_HT0_Unimplemented_STD_0x13)
HT0_DAE_invalid_asi_0x14:
#ifdef H_HT0_DAE_invalid_asi_0x14
#ifdef SUN_H_HT0_DAE_invalid_asi_0x14
SUN_H_HT0_DAE_invalid_asi_0x14
CUSTOM_TRAP(H_HT0_DAE_invalid_asi_0x14)
HT0_DAE_privilege_violation_0x15:
#ifdef H_HT0_DAE_privilege_violation_0x15
#ifdef SUN_H_HT0_DAE_privilege_violation_0x15
SUN_H_HT0_DAE_privilege_violation_0x15
CUSTOM_TRAP(H_HT0_DAE_privilege_violation_0x15)
#ifdef H_HT0_DAE_nc_page_0x16
#ifdef SUN_H_HT0_DAE_nc_page_0x16
SUN_H_HT0_DAE_nc_page_0x16
CUSTOM_TRAP(H_HT0_DAE_nc_page_0x16)
#ifdef H_HT0_DAE_nfo_page_0x17
#ifdef SUN_H_HT0_DAE_nfo_page_0x17
SUN_H_HT0_DAE_nfo_page_0x17
CUSTOM_TRAP(H_HT0_DAE_nfo_page_0x17)
#ifdef H_HT0_Reserved_0x18
#ifdef SUN_H_HT0_Reserved_0x18
CUSTOM_TRAP(H_HT0_Reserved_0x18)
#ifdef H_HT0_Reserved_0x19
#ifdef SUN_H_HT0_Reserved_0x19
CUSTOM_TRAP(H_HT0_Reserved_0x19)
#ifdef H_HT0_Reserved_0x1a
#ifdef SUN_H_HT0_Reserved_0x1a
CUSTOM_TRAP(H_HT0_Reserved_0x1a)
#ifdef H_HT0_Reserved_0x1b
#ifdef SUN_H_HT0_Reserved_0x1b
CUSTOM_TRAP(H_HT0_Reserved_0x1b)
#ifdef H_HT0_Reserved_0x1c
#ifdef SUN_H_HT0_Reserved_0x1c
CUSTOM_TRAP(H_HT0_Reserved_0x1c)
#ifdef H_HT0_Reserved_0x1d
#ifdef SUN_H_HT0_Reserved_0x1d
CUSTOM_TRAP(H_HT0_Reserved_0x1d)
#ifdef H_HT0_Reserved_0x1e
#ifdef SUN_H_HT0_Reserved_0x1e
CUSTOM_TRAP(H_HT0_Reserved_0x1e)
#ifdef H_HT0_Reserved_0x1f
#ifdef SUN_H_HT0_Reserved_0x1f
CUSTOM_TRAP(H_HT0_Reserved_0x1f)
#ifdef H_HT0_Fp_disabled_0x20
#ifdef SUN_H_HT0_Fp_disabled_0x20
SUN_H_HT0_Fp_disabled_0x20
# ifdef My_HT0_Fp_disabled_0x20
CUSTOM_TRAP(H_HT0_Fp_disabled_0x20)
HT0_Fp_Exception_Ieee_754_0x21:
#ifdef H_HT0_Fp_exception_ieee_754_0x21
#ifdef SUN_H_HT0_Fp_exception_ieee_754_0x21
SUN_H_HT0_Fp_exception_ieee_754_0x21
# ifdef My_HT0_Fp_exception_ieee_754_0x21
My_HT0_Fp_exception_ieee_754_0x21
CUSTOM_TRAP(H_HT0_Fp_exception_ieee_754_0x21)
HT0_Fp_Exception_Other_0x22:
#ifdef H_HT0_Fp_exception_other_0x22
#ifdef SUN_H_HT0_Fp_exception_other_0x22
SUN_H_HT0_Fp_exception_other_0x22
# ifdef My_HT0_Fp_exception_other_0x22
My_HT0_Fp_exception_other_0x22
CUSTOM_TRAP(H_HT0_Fp_exception_other_0x22)
#ifdef H_HT0_Tag_Overflow
#ifdef SUN_H_HT0_Tag_Overflow
# ifdef My_HT0_Tag_Overflow
CUSTOM_TRAP(H_HT0_Tag_Overflow)
#ifdef H_HT0_Clean_Window
#ifdef SUN_H_HT0_Clean_Window
# ifdef My_HT0_Clean_Window
CUSTOM_TRAP(H_HT0_Clean_Window)
rdpr %cleanwin, %g1; add %g1,1,%g1; wrpr %g1, %g0, %cleanwin; retry;
restore; mov 0x24, %g7; b TrapCheck; nop;nop;nop;nop;nop;
HT0_Division_By_Zero_0x28:
#ifdef H_HT0_Division_By_Zero
#ifdef SUN_H_HT0_Division_By_Zero
SUN_H_HT0_Division_By_Zero
# ifdef My_HT0_Division_By_Zero
CUSTOM_TRAP(H_HT0_Division_By_Zero)
HT0_Internal_Processor_Error_0x29:
#ifdef H_HT0_Internal_Processor_Error_0x29
#ifdef SUN_H_HT0_Internal_Processor_Error_0x29
SUN_H_HT0_Internal_Processor_Error_0x29
CUSTOM_TRAP(H_HT0_Internal_Processor_Error_0x29)
HT0_Instruction_Invalid_TSB_Entry_0x2a:
#ifdef H_HT0_Instruction_Invalid_TSB_Entry_0x2a
#ifdef SUN_H_HT0_Instruction_Invalid_TSB_Entry_0x2a
SUN_H_HT0_Instruction_Invalid_TSB_Entry_0x2a
CUSTOM_TRAP(H_HT0_Instruction_Invalid_TSB_Entry_0x2a)
HT0_Data_Invalid_TSB_Entry_0x2b:
#ifdef H_HT0_Data_Invalid_TSB_Entry_0x2b
#ifdef SUN_H_HT0_Data_Invalid_TSB_Entry_0x2b
SUN_H_HT0_Data_Invalid_TSB_Entry_0x2b
CUSTOM_TRAP(H_HT0_Data_Invalid_TSB_Entry_0x2b)
#ifdef H_HT0_Reserved_0x2c
#ifdef SUN_H_HT0_Reserved_0x2c
CUSTOM_TRAP(H_HT0_Reserved_0x2c)
#ifdef H_HT0_mem_real_range_0x2d
#ifdef SUN_H_HT0_mem_real_range_0x2d
SUN_H_HT0_mem_real_range_0x2d
CUSTOM_TRAP(H_HT0_mem_real_range_0x2d)
HT0_mem_address_range_0x2e:
#ifdef H_HT0_mem_address_range_0x2e
#ifdef SUN_H_HT0_mem_address_range_0x2e
SUN_H_HT0_mem_address_range_0x2e
CUSTOM_TRAP(H_HT0_mem_address_range_0x2e)
#ifdef H_HT0_Reserved_0x2f
#ifdef SUN_H_HT0_Reserved_0x2f
CUSTOM_TRAP(H_HT0_Reserved_0x2f)
#ifdef H_HT0_DAE_so_page_0x30
#ifdef SUN_H_HT0_DAE_so_page_0x30
SUN_H_HT0_DAE_so_page_0x30
# ifdef My_HT0_DAE_so_page_0x30
CUSTOM_TRAP(H_HT0_DAE_so_page_0x30)
# ifdef CLEAR_DTTE_P_ON_DATA_ACC_EXCE
b daccess_except_handler; nop;nop;nop;nop;nop;nop;nop;
HT0_Data_Access_MMU_Miss_0x31:
#ifdef H_HT0_Data_Access_MMU_Miss
#ifdef SUN_H_HT0_Data_Access_MMU_Miss
SUN_H_HT0_Data_Access_MMU_Miss
# ifdef My_HT0_Data_Access_MMU_Miss_0x31
My_HT0_Data_Access_MMU_Miss_0x31
CUSTOM_TRAP(H_HT0_Reserved_0x31)
nop;nop;nop;nop;nop;nop;nop
HT0_Data_Access_Error_0x32:
#ifdef H_HT0_Data_access_error_0x32
#ifdef SUN_H_HT0_Data_access_error_0x32
SUN_H_HT0_Data_access_error_0x32
CUSTOM_TRAP(H_HT0_Data_access_error_0x32)
#ifdef H_HT0_Reserved_0x33
#ifdef SUN_H_HT0_Reserved_0x33
# ifdef My_HT0_Data_Access_Protection_0x33
My_HT0_Data_Access_Protection_0x33
CUSTOM_TRAP(H_HT0_Reserved_0x33)
HT0_Mem_Address_Not_Aligned_0x34:
#ifdef H_HT0_Mem_Address_Not_Aligned_0x34
#ifdef SUN_H_HT0_Mem_Address_Not_Aligned_0x34
SUN_H_HT0_Mem_Address_Not_Aligned_0x34
# ifdef My_HT0_Mem_Address_Not_Aligned_0x34
My_HT0_Mem_Address_Not_Aligned_0x34
CUSTOM_TRAP(H_HT0_Mem_Address_Not_Aligned_0x34)
# if defined CHECK_SFSR_SFAR || defined FIX_MEM_ASSRESS_NOT_ALIGNED
b proc_mem_align; nop;nop;nop;nop;nop;nop;nop;
HT0_Lddf_Mem_Address_Not_Aligned_0x35:
#ifdef H_HT0_Lddf_Mem_Address_Not_Aligned_0x35
#ifdef SUN_H_HT0_Lddf_Mem_Address_Not_Aligned_0x35
SUN_H_HT0_Lddf_Mem_Address_Not_Aligned_0x35
# ifdef My_HT0_Lddf_Mem_Address_Not_Aligned_0x35
My_HT0_Lddf_Mem_Address_Not_Aligned_0x35
CUSTOM_TRAP(H_HT0_Lddf_Mem_Address_Not_Aligned_0x35)
HT0_Stdf_Mem_Address_Not_Aligned_0x36:
#ifdef H_HT0_Stdf_Mem_Address_Not_Aligned_0x36
#ifdef SUN_H_HT0_Stdf_Mem_Address_Not_Aligned_0x36
SUN_H_HT0_Stdf_Mem_Address_Not_Aligned_0x36
# ifdef My_HT0_Stdf_Mem_Address_Not_Aligned_0x36
My_HT0_Stdf_Mem_Address_Not_Aligned_0x36
CUSTOM_TRAP(H_HT0_Stdf_Mem_Address_Not_Aligned_0x36)
HT0_Privileged_Action_0x37:
#ifdef H_HT0_Privileged_Action_0x37
#ifdef SUN_H_HT0_Privileged_Action_0x37
SUN_H_HT0_Privileged_Action_0x37
# ifdef My_HT0_Privileged_Action_0x37
My_HT0_Privileged_Action_0x37
CUSTOM_TRAP(H_HT0_Privileged_Action_0x37)
#ifdef H_HT0_Reserved_0x38
#ifdef SUN_H_HT0_Reserved_0x38
CUSTOM_TRAP(H_HT0_Reserved_0x38)
#ifdef H_HT0_Reserved_0x39
#ifdef SUN_H_HT0_Reserved_0x39
CUSTOM_TRAP(H_HT0_Reserved_0x39)
#ifdef H_HT0_Reserved_0x3a
#ifdef SUN_H_HT0_Reserved_0x3a
CUSTOM_TRAP(H_HT0_Reserved_0x3a)
#ifdef H_HT0_Reserved_0x3b
#ifdef SUN_H_HT0_Reserved_0x3b
CUSTOM_TRAP(H_HT0_Reserved_0x3b)
HT0_Control_Word_Queue_Interrupt_0x3c:
#ifdef H_HT0_Control_Word_Queue_Interrupt_0x3c
#ifdef SUN_H_HT0_Control_Word_Queue_Interrupt_0x3c
SUN_H_HT0_Control_Word_Queue_Interrupt_0x3c
# ifdef My_HT0_Control_Word_Queue_Interrupt_0x3c
My_HT0_Control_Word_Queue_Interrupt_0x3c
CUSTOM_TRAP(H_HT0_Control_Word_Queue_Interrupt_0x3c)
HT0_Modular_Arithmetic_Interrupt_0x3d:
#ifdef H_HT0_Modular_Arithmetic_Interrupt_0x3d
#ifdef SUN_H_HT0_Modular_Arithmetic_Interrupt_0x3d
SUN_H_HT0_Modular_Arithmetic_Interrupt_0x3d
# ifdef My_H_HT0_Modular_Arithmetic_Interrupt_0x3d
My_H_HT0_Modular_Arithmetic_Interrupt_0x3d
CUSTOM_TRAP(HT0_Modular_Arithmetic_Interrupt_0x3d)
HT0_Instr_Real_Tran_Miss_0x3e:
#ifdef H_HT0_Instr_Real_Tran_Miss_0x3e
#ifdef SUN_H_HT0_Instr_Real_Tran_Miss_0x3e
SUN_H_HT0_Instr_Real_Tran_Miss_0x3e
# ifdef My_HT0_Instr_Real_Tran_Miss_0x3e
My_HT0_Instr_Real_Tran_Miss_0x3e
CUSTOM_TRAP(H_HT0_Instr_Real_Tran_Miss_0x3e)
! jump into an include file. immu_miss_handler_ext.s
ba immu_real_miss_handler
HT0_Data_Real_Tran_Miss_0x3f:
#ifdef H_HT0_Data_Real_Tran_Miss_0x3f
#ifdef SUN_H_HT0_Data_Real_Tran_Miss_0x3f
SUN_H_HT0_Data_Real_Tran_Miss_0x3f
# ifdef My_HT0_Data_Real_Tran_Miss_0x3f
My_HT0_Data_Real_Tran_Miss_0x3f
CUSTOM_TRAP(H_HT0_Data_Real_Tran_Miss_0x3f)
! jump into an include file. dmmu_miss_handler_ext.s
ba dmmu_real_miss_handler
HT0_Sw_Recoverable_Error_0x40:
#ifdef H_HT0_Sw_Recoverable_Error_0x40
#ifdef SUN_H_HT0_Sw_Recoverable_Error_0x40
SUN_H_HT0_Sw_Recoverable_Error_0x40
CUSTOM_TRAP(H_HT0_Sw_Recoverable_Error_0x40)
HT0_Interrupt_Level_1_0x41:
#ifdef H_HT0_Interrupt_Level_1_0x41
#ifdef SUN_H_HT0_Interrupt_Level_1_0x41
SUN_H_HT0_Interrupt_Level_1_0x41
# ifdef My_HT0_Interrupt_Level_1_0x41
My_HT0_Interrupt_Level_1_0x41
CUSTOM_TRAP(H_HT0_Interrupt_Level_1_0x41)
HT0_Interrupt_Level_2_0x42:
#ifdef H_HT0_Interrupt_Level_2_0x42
#ifdef SUN_H_HT0_Interrupt_Level_2_0x42
SUN_H_HT0_Interrupt_Level_2_0x42
# ifdef My_HT0_Interrupt_Level_2_0x42
My_HT0_Interrupt_Level_2_0x42
CUSTOM_TRAP(H_HT0_Interrupt_Level_2_0x42)
HT0_Interrupt_Level_3_0x43:
#ifdef H_HT0_Interrupt_Level_3_0x43
#ifdef SUN_H_HT0_Interrupt_Level_3_0x43
SUN_H_HT0_Interrupt_Level_3_0x43
# ifdef My_HT0_Interrupt_Level_3_0x43
My_HT0_Interrupt_Level_3_0x43
CUSTOM_TRAP(H_HT0_Interrupt_Level_3_0x43)
HT0_Interrupt_Level_4_0x44:
#ifdef H_HT0_Interrupt_Level_4_0x44
#ifdef SUN_H_HT0_Interrupt_Level_4_0x44
SUN_H_HT0_Interrupt_Level_4_0x44
# ifdef My_HT0_Interrupt_Level_4_0x44
My_HT0_Interrupt_Level_4_0x44
CUSTOM_TRAP(H_HT0_Interrupt_Level_4_0x44)
HT0_Interrupt_Level_5_0x45:
#ifdef H_HT0_Interrupt_Level_5_0x45
#ifdef SUN_H_HT0_Interrupt_Level_5_0x45
SUN_H_HT0_Interrupt_Level_5_0x45
# ifdef My_HT0_Interrupt_Level_5_0x45
My_HT0_Interrupt_Level_5_0x45
CUSTOM_TRAP(H_HT0_Interrupt_Level_5_0x45)
HT0_Interrupt_Level_6_0x46:
#ifdef H_HT0_Interrupt_Level_6_0x46
#ifdef SUN_H_HT0_Interrupt_Level_6_0x46
SUN_H_HT0_Interrupt_Level_6_0x46
# ifdef My_HT0_Interrupt_Level_6_0x46
My_HT0_Interrupt_Level_6_0x46
CUSTOM_TRAP(H_HT0_Interrupt_Level_6_0x46)
HT0_Interrupt_Level_7_0x47:
#ifdef H_HT0_Interrupt_Level_7_0x47
#ifdef SUN_H_HT0_Interrupt_Level_7_0x47
SUN_H_HT0_Interrupt_Level_7_0x47
# ifdef My_HT0_Interrupt_Level_7_0x47
My_HT0_Interrupt_Level_7_0x47
CUSTOM_TRAP(H_HT0_Interrupt_Level_7_0x47)
HT0_Interrupt_Level_8_0x48:
#ifdef H_HT0_Interrupt_Level_8_0x48
#ifdef SUN_H_HT0_Interrupt_Level_8_0x48
SUN_H_HT0_Interrupt_Level_8_0x48
# ifdef My_HT0_Interrupt_Level_8_0x48
My_HT0_Interrupt_Level_8_0x48
CUSTOM_TRAP(H_HT0_Interrupt_Level_8_0x48)
HT0_Interrupt_Level_9_0x49:
#ifdef H_HT0_Interrupt_Level_9_0x49
#ifdef SUN_H_HT0_Interrupt_Level_9_0x49
SUN_H_HT0_Interrupt_Level_9_0x49
# ifdef My_HT0_Interrupt_Level_9_0x49
My_HT0_Interrupt_Level_9_0x49
CUSTOM_TRAP(H_HT0_Interrupt_Level_9_0x49)
HT0_Interrupt_Level_10_0x4a:
#ifdef H_HT0_Interrupt_Level_10_0x4a
#ifdef SUN_H_HT0_Interrupt_Level_10_0x4a
SUN_H_HT0_Interrupt_Level_10_0x4a
# ifdef My_HT0_Interrupt_Level_10_0x4a
My_HT0_Interrupt_Level_10_0x4a
CUSTOM_TRAP(H_HT0_Interrupt_Level_10_0x4a)
HT0_Interrupt_Level_11_0x4b:
#ifdef H_HT0_Interrupt_Level_11_0x4b
#ifdef SUN_H_HT0_Interrupt_Level_11_0x4b
SUN_H_HT0_Interrupt_Level_11_0x4b
# ifdef My_HT0_Interrupt_Level_11_0x4b
My_HT0_Interrupt_Level_11_0x4b
CUSTOM_TRAP(H_HT0_Interrupt_Level_11_0x4b)
HT0_Interrupt_Level_12_0x4c:
#ifdef H_HT0_Interrupt_Level_12_0x4c
#ifdef SUN_H_HT0_Interrupt_Level_12_0x4c
SUN_H_HT0_Interrupt_Level_12_0x4c
# ifdef My_HT0_Interrupt_Level_12_0x4c
My_HT0_Interrupt_Level_12_0x4c
CUSTOM_TRAP(H_HT0_Interrupt_Level_12_0x4c)
HT0_Interrupt_Level_13_0x4d:
#ifdef H_HT0_Interrupt_Level_13_0x4d
#ifdef SUN_H_HT0_Interrupt_Level_13_0x4d
SUN_H_HT0_Interrupt_Level_13_0x4d
# ifdef My_HT0_Interrupt_Level_13_0x4d
My_HT0_Interrupt_Level_13_0x4d
CUSTOM_TRAP(H_HT0_Interrupt_Level_13_0x4d)
HT0_Interrupt_Level_14_0x4e:
#ifdef H_HT0_Interrupt_Level_14_0x4e
#ifdef SUN_H_HT0_Interrupt_Level_14_0x4e
SUN_H_HT0_Interrupt_Level_14_0x4e
# ifdef My_HT0_Interrupt_Level_14_0x4e
My_HT0_Interrupt_Level_14_0x4e
CUSTOM_TRAP(H_HT0_Interrupt_Level_14_0x4e)
HT0_Interrupt_Level_15_0x4f:
#ifdef H_HT0_Interrupt_Level_15_0x4f
#ifdef SUN_H_HT0_Interrupt_Level_15_0x4f
SUN_H_HT0_Interrupt_Level_15_0x4f
# ifdef My_HT0_Interrupt_Level_15_0x4f
My_HT0_Interrupt_Level_15_0x4f
CUSTOM_TRAP(H_HT0_Interrupt_Level_15_0x4f)
#ifdef H_HT0_Reserved_0x50
#ifdef SUN_H_HT0_Reserved_0x50
CUSTOM_TRAP(H_HT0_Reserved_0x50)
#ifdef H_HT0_Reserved_0x51
#ifdef SUN_H_HT0_Reserved_0x51
CUSTOM_TRAP(H_HT0_Reserved_0x51)
#ifdef H_HT0_Reserved_0x52
#ifdef SUN_H_HT0_Reserved_0x52
CUSTOM_TRAP(H_HT0_Reserved_0x52)
#ifdef H_HT0_Reserved_0x53
#ifdef SUN_H_HT0_Reserved_0x53
CUSTOM_TRAP(H_HT0_Reserved_0x53)
#ifdef H_HT0_Reserved_0x54
#ifdef SUN_H_HT0_Reserved_0x54
CUSTOM_TRAP(H_HT0_Reserved_0x54)
#ifdef H_HT0_Reserved_0x55
#ifdef SUN_H_HT0_Reserved_0x55
CUSTOM_TRAP(H_HT0_Reserved_0x55)
#ifdef H_HT0_Reserved_0x56
#ifdef SUN_H_HT0_Reserved_0x56
CUSTOM_TRAP(H_HT0_Reserved_0x56)
#ifdef H_HT0_Reserved_0x57
#ifdef SUN_H_HT0_Reserved_0x57
CUSTOM_TRAP(H_HT0_Reserved_0x57)
#ifdef H_HT0_Reserved_0x58
#ifdef SUN_H_HT0_Reserved_0x58
CUSTOM_TRAP(H_HT0_Reserved_0x58)
#ifdef H_HT0_Reserved_0x59
#ifdef SUN_H_HT0_Reserved_0x59
CUSTOM_TRAP(H_HT0_Reserved_0x59)
#ifdef H_HT0_Reserved_0x5a
#ifdef SUN_H_HT0_Reserved_0x5a
CUSTOM_TRAP(H_HT0_Reserved_0x5a)
#ifdef H_HT0_Reserved_0x5b
#ifdef SUN_H_HT0_Reserved_0x5b
CUSTOM_TRAP(H_HT0_Reserved_0x5b)
#ifdef H_HT0_Reserved_0x5c
#ifdef SUN_H_HT0_Reserved_0x5c
CUSTOM_TRAP(H_HT0_Reserved_0x5c)
#ifdef H_HT0_Reserved_0x5d
#ifdef SUN_H_HT0_Reserved_0x5d
CUSTOM_TRAP(H_HT0_Reserved_0x5d)
#ifdef H_HT0_Hstick_Match_0x5e
#ifdef SUN_H_HT0_Hstick_Match_0x5e
SUN_H_HT0_Hstick_Match_0x5e
# ifdef My_HT0_Hstick_Match_0x5e
CUSTOM_TRAP(H_HT0_Hstick_Match_0x5e)
wrhpr %g0, -1, %hsys_tick_cmpr
HT0_Trap_Level_Zero_0x5f:
#ifdef H_HT0_Trap_Level_Zero_0x5f
#ifdef SUN_H_HT0_Trap_Level_Zero_0x5f
SUN_H_HT0_Trap_Level_Zero_0x5f
# ifdef My_HT0_Trap_Level_Zero_0x5f
My_HT0_Trap_Level_Zero_0x5f
CUSTOM_TRAP(H_HT0_Trap_Level_Zero_0x5f)
#ifdef H_HT0_Interrupt_0x60
#ifdef SUN_H_HT0_Interrupt_0x60
# ifdef My_HT0_Interrupt_0x60
CUSTOM_TRAP(H_HT0_Interrupt_0x60)
#ifdef H_HT0_PA_Watchpoint_0x61
#ifdef SUN_H_HT0_PA_Watchpoint_0x61
SUN_H_HT0_PA_Watchpoint_0x61
# ifdef My_H_HT0_PA_Watchpoint_0x61
My_H_HT0_PA_Watchpoint_0x61
CUSTOM_TRAP(H_HT0_PA_Watchpoint_0x61)
#ifdef H_HT0_VA_Watchpoint_0x62
#ifdef SUN_H_HT0_VA_Watchpoint_0x62
SUN_H_HT0_VA_Watchpoint_0x62
# ifdef My_H_HT0_VA_Watchpoint_0x62
My_H_HT0_VA_Watchpoint_0x62
CUSTOM_TRAP(H_HT0_VA_Watchpoint_0x62)
HT0_Hw_Corrected_Error_0x63:
#ifdef H_HT0_Hw_Corrected_Error_0x63
#ifdef SUN_H_HT0_Hw_Corrected_Error_0x63
SUN_H_HT0_Hw_Corrected_Error_0x63
CUSTOM_TRAP(H_HT0_Hw_Corrected_Error_0x63)
HT0_Fast_Instr_Access_MMU_Miss_0x64:
#ifdef H_HT0_fast_instr_access_MMU_miss
#ifdef SUN_H_HT0_fast_instr_access_MMU_miss
SUN_H_HT0_fast_instr_access_MMU_miss
CUSTOM_TRAP(H_HT0_fast_instr_access_MMU_miss)
#ifdef S2MEM_IMMU_MISS_HANDLER
#include S2MEM_IMMU_MISS_HANDLER
!!#include <immu_miss_handler.s>
! jump into an include file. immu_miss_handler_ext.s
HT0_Fast_Data_Access_MMU_Miss_0x68:
#ifdef H_HT0_fast_data_access_MMU_miss
#ifdef SUN_H_HT0_fast_data_access_MMU_miss
SUN_H_HT0_fast_data_access_MMU_miss
CUSTOM_TRAP(H_HT0_fast_data_access_MMU_miss)
#ifdef S2MEM_DMMU_MISS_HANDLER
#include S2MEM_DMMU_MISS_HANDLER
!!#include <dmmu_miss_handler.s>
! jump into an include file. dmmu_miss_handler_ext.s
HT0_Fast_Data_Access_Protection_0x6c:
#ifdef H_HT0_data_access_protection_0x6c
#ifdef SUN_H_HT0_data_access_protection_0x6c
SUN_H_HT0_data_access_protection_0x6c
# ifdef My_HT0_data_access_protection_0x6c
My_HT0_data_access_protection_0x6c
CUSTOM_TRAP(H_HT0_data_access_protection_0x6c)
#ifdef SET_DTTE_W_ON_DATA_ACC_PROT
#ifdef H_HT0_Reserved_0x70
#ifdef SUN_H_HT0_Reserved_0x70
CUSTOM_TRAP(H_HT0_Reserved_0x70)
HT0_Instruction_Access_MMU_Error_0x71:
#ifdef H_HT0_Instruction_Access_MMU_Error_0x71
#ifdef SUN_H_HT0_Instruction_Access_MMU_Error_0x71
SUN_H_HT0_Instruction_Access_MMU_Error_0x71
CUSTOM_TRAP(H_HT0_Instruction_Access_MMU_Error_0x71)
HT0_Data_Access_MMU_Error_0x72:
#ifdef H_HT0_Data_Access_MMU_Error_0x72
#ifdef SUN_H_HT0_Data_Access_MMU_Error_0x72
SUN_H_HT0_Data_Access_MMU_Error_0x72
CUSTOM_TRAP(H_HT0_Data_Access_MMU_Error_0x72)
#ifdef H_HT0_Reserved_0x73
#ifdef SUN_H_HT0_Reserved_0x73
CUSTOM_TRAP(H_HT0_Reserved_0x73)
HT0_Control_Transfer_Instr_0x74:
#ifdef H_HT0_Control_Transfer_Instr_0x74
#ifdef SUN_H_HT0_Control_Transfer_Instr_0x74
SUN_H_HT0_Control_Transfer_Instr_0x74
# ifdef My_H_HT0_Control_Transfer_Instr_0x74
My_H_HT0_Control_Transfer_Instr_0x74
CUSTOM_TRAP(HT0_Control_Transfer_Instr_0x74)
HT0_Instruction_VA_Watchpoint_0x75:
#ifdef H_HT0_Instruction_VA_Watchpoint_0x75
#ifdef SUN_H_HT0_Instruction_VA_Watchpoint_0x75
SUN_H_HT0_Instruction_VA_Watchpoint_0x75
CUSTOM_TRAP(H_HT0_Instruction_VA_Watchpoint_0x75)
HT0_Instruction_Breakpoint_0x76:
#ifdef H_HT0_Instruction_Breakpoint_0x76
#ifdef SUN_H_HT0_Instruction_Breakpoint_0x76
SUN_H_HT0_Instruction_Breakpoint_0x76
CUSTOM_TRAP(H_HT0_Instruction_Breakpoint_0x76)
#ifdef H_HT0_Reserved_0x77
#ifdef SUN_H_HT0_Reserved_0x77
CUSTOM_TRAP(H_HT0_Reserved_0x77)
#ifdef H_HT0_Reserved_0x78
#ifdef SUN_H_HT0_Reserved_0x78
CUSTOM_TRAP(H_HT0_Reserved_0x78)
#ifdef H_HT0_Reserved_0x79
#ifdef SUN_H_HT0_Reserved_0x79
CUSTOM_TRAP(H_HT0_Reserved_0x79)
#ifdef H_HT0_Reserved_0x7a
#ifdef SUN_H_HT0_Reserved_0x7a
CUSTOM_TRAP(H_HT0_Reserved_0x7a)
#ifdef H_HT0_Reserved_0x7b
#ifdef SUN_H_HT0_Reserved_0x7b
CUSTOM_TRAP(H_HT0_Reserved_0x7b)
#ifdef H_HT0_Reserved_0x7c
#ifdef SUN_H_HT0_Reserved_0x7c
CUSTOM_TRAP(H_HT0_Reserved_0x7c)
#ifdef H_HT0_Reserved_0x7d
#ifdef SUN_H_HT0_Reserved_0x7d
CUSTOM_TRAP(H_HT0_Reserved_0x7d)
#ifdef H_HT0_Reserved_0x7e
#ifdef SUN_H_HT0_Reserved_0x7e
CUSTOM_TRAP(H_HT0_Reserved_0x7e)
#ifdef H_HT0_Reserved_0x7f
#ifdef SUN_H_HT0_Reserved_0x7f
CUSTOM_TRAP(H_HT0_Reserved_0x7f)
HT0_Window_Spill_0_Normal_0x80:
#ifdef H_HT0_Window_Spill_0_Normal_Trap
#ifdef SUN_H_HT0_Window_Spill_0_Normal_Trap
SUN_H_HT0_Window_Spill_0_Normal_Trap
# ifdef My_HT0_Window_Spill_0_Normal_Trap
My_HT0_Window_Spill_0_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_0_Normal_Trap)
HT0_Window_Spill_1_Normal_0x84:
#ifdef H_HT0_Window_Spill_1_Normal_Trap
#ifdef SUN_H_HT0_Window_Spill_1_Normal_Trap
SUN_H_HT0_Window_Spill_1_Normal_Trap
# ifdef My_HT0_Window_Spill_1_Normal_Trap
My_HT0_Window_Spill_1_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_1_Normal_Trap)
HT0_Window_Spill_2_Normal_0x88:
#ifdef H_HT0_Window_Spill_2_Normal_Trap
#ifdef SUN_H_HT0_Window_Spill_2_Normal_Trap
SUN_H_HT0_Window_Spill_2_Normal_Trap
# ifdef My_HT0_Window_Spill_2_Normal_Trap
My_HT0_Window_Spill_2_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_2_Normal_Trap)
HT0_Window_Spill_3_Normal_0x8c:
#ifdef H_HT0_Window_Spill_3_Normal_Trap
#ifdef SUN_H_HT0_Window_Spill_3_Normal_Trap
SUN_H_HT0_Window_Spill_3_Normal_Trap
# ifdef My_HT0_Window_Spill_3_Normal_Trap
My_HT0_Window_Spill_3_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_3_Normal_Trap)
HT0_Window_Spill_4_Normal_0x90:
#ifdef H_HT0_Window_Spill_4_Normal_Trap
#ifdef SUN_H_HT0_Window_Spill_4_Normal_Trap
SUN_H_HT0_Window_Spill_4_Normal_Trap
# ifdef My_HT0_Window_Spill_4_Normal_Trap
My_HT0_Window_Spill_4_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_4_Normal_Trap)
HT0_Window_Spill_5_Normal_0x94:
#ifdef H_HT0_Window_Spill_5_Normal_Trap
#ifdef SUN_H_HT0_Window_Spill_5_Normal_Trap
SUN_H_HT0_Window_Spill_5_Normal_Trap
# ifdef My_HT0_Window_Spill_5_Normal_Trap
My_HT0_Window_Spill_5_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_5_Normal_Trap)
HT0_Window_Spill_6_Normal_0x98:
#ifdef H_HT0_Window_Spill_6_Normal_Trap
#ifdef SUN_H_HT0_Window_Spill_6_Normal_Trap
SUN_H_HT0_Window_Spill_6_Normal_Trap
# ifdef My_HT0_Window_Spill_6_Normal_Trap
My_HT0_Window_Spill_6_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_6_Normal_Trap)
HT0_Window_Spill_7_Normal_0x9c:
#ifdef H_HT0_Window_Spill_7_Normal_Trap
#ifdef SUN_H_HT0_Window_Spill_7_Normal_Trap
SUN_H_HT0_Window_Spill_7_Normal_Trap
# ifdef My_HT0_Window_Spill_7_Normal_Trap
My_HT0_Window_Spill_7_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_7_Normal_Trap)
HT0_Window_Spill_0_Other_0xa0:
#ifdef H_HT0_Window_Spill_0_Other_Trap
#ifdef SUN_H_HT0_Window_Spill_0_Other_Trap
SUN_H_HT0_Window_Spill_0_Other_Trap
# ifdef My_HT0_Window_Spill_0_Other_Trap
My_HT0_Window_Spill_0_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_0_Other_Trap)
HT0_Window_Spill_1_Other_0xa4:
#ifdef H_HT0_Window_Spill_1_Other_Trap
#ifdef SUN_H_HT0_Window_Spill_1_Other_Trap
SUN_H_HT0_Window_Spill_1_Other_Trap
# ifdef My_HT0_Window_Spill_1_Other_Trap
My_HT0_Window_Spill_1_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_1_Other_Trap)
HT0_Window_Spill_2_Other_0xa8:
#ifdef H_HT0_Window_Spill_2_Other_Trap
#ifdef SUN_H_HT0_Window_Spill_2_Other_Trap
SUN_H_HT0_Window_Spill_2_Other_Trap
# ifdef My_HT0_Window_Spill_2_Other_Trap
My_HT0_Window_Spill_2_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_2_Other_Trap)
HT0_Window_Spill_3_Other_0xac:
#ifdef H_HT0_Window_Spill_3_Other_Trap
#ifdef SUN_H_HT0_Window_Spill_3_Other_Trap
SUN_H_HT0_Window_Spill_3_Other_Trap
# ifdef My_HT0_Window_Spill_3_Other_Trap
My_HT0_Window_Spill_3_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_3_Other_Trap)
HT0_Window_Spill_4_Other_0xb0:
#ifdef H_HT0_Window_Spill_4_Other_Trap
#ifdef SUN_H_HT0_Window_Spill_4_Other_Trap
SUN_H_HT0_Window_Spill_4_Other_Trap
# ifdef My_HT0_Window_Spill_4_Other_Trap
My_HT0_Window_Spill_4_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_4_Other_Trap)
HT0_Window_Spill_5_Other_0xb4:
#ifdef H_HT0_Window_Spill_5_Other_Trap
#ifdef SUN_H_HT0_Window_Spill_5_Other_Trap
SUN_H_HT0_Window_Spill_5_Other_Trap
# ifdef My_HT0_Window_Spill_5_Other_Trap
My_HT0_Window_Spill_5_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_5_Other_Trap)
HT0_Window_Spill_6_Other_0xb8:
#ifdef H_HT0_Window_Spill_6_Other_Trap
#ifdef SUN_H_HT0_Window_Spill_6_Other_Trap
SUN_H_HT0_Window_Spill_6_Other_Trap
# ifdef My_HT0_Window_Spill_6_Other_Trap
My_HT0_Window_Spill_6_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_6_Other_Trap)
HT0_Window_Spill_7_Other_0xbc:
#ifdef H_HT0_Window_Spill_7_Other_Trap
#ifdef SUN_H_HT0_Window_Spill_7_Other_Trap
SUN_H_HT0_Window_Spill_7_Other_Trap
# ifdef My_HT0_Window_Spill_7_Other_Trap
My_HT0_Window_Spill_7_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Spill_7_Other_Trap)
HT0_Window_Fill_0_Normal_0xc0:
#ifdef H_HT0_Window_Fill_0_Normal_Trap
#ifdef SUN_H_HT0_Window_Fill_0_Normal_Trap
SUN_H_HT0_Window_Fill_0_Normal_Trap
# ifdef My_HT0_Window_Fill_0_Normal_Trap
My_HT0_Window_Fill_0_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_0_Normal_Trap)
restored; retry; nop;nop;nop;nop;nop;nop;
HT0_Window_Fill_1_Normal_0xc4:
#ifdef H_HT0_Window_Fill_1_Normal_Trap
#ifdef SUN_H_HT0_Window_Fill_1_Normal_Trap
SUN_H_HT0_Window_Fill_1_Normal_Trap
# ifdef My_HT0_Window_Fill_1_Normal_Trap
My_HT0_Window_Fill_1_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_1_Normal_Trap)
HT0_Window_Fill_2_Normal_0xc8:
#ifdef H_HT0_Window_Fill_2_Normal_Trap
#ifdef SUN_H_HT0_Window_Fill_2_Normal_Trap
SUN_H_HT0_Window_Fill_2_Normal_Trap
# ifdef My_HT0_Window_Fill_2_Normal_Trap
My_HT0_Window_Fill_2_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_2_Normal_Trap)
HT0_Window_Fill_3_Normal_0xcc:
#ifdef H_HT0_Window_Fill_3_Normal_Trap
#ifdef SUN_H_HT0_Window_Fill_3_Normal_Trap
SUN_H_HT0_Window_Fill_3_Normal_Trap
# ifdef My_HT0_Window_Fill_3_Normal_Trap
My_HT0_Window_Fill_3_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_3_Normal_Trap)
HT0_Window_Fill_4_Normal_0xd0:
#ifdef H_HT0_Window_Fill_4_Normal_Trap
#ifdef SUN_H_HT0_Window_Fill_4_Normal_Trap
SUN_H_HT0_Window_Fill_4_Normal_Trap
# ifdef My_HT0_Window_Fill_4_Normal_Trap
My_HT0_Window_Fill_4_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_4_Normal_Trap)
HT0_Window_Fill_5_Normal_0xd4:
#ifdef H_HT0_Window_Fill_5_Normal_Trap
#ifdef SUN_H_HT0_Window_Fill_5_Normal_Trap
SUN_H_HT0_Window_Fill_5_Normal_Trap
# ifdef My_HT0_Window_Fill_5_Normal_Trap
My_HT0_Window_Fill_5_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_5_Normal_Trap)
HT0_Window_Fill_6_Normal_0xd8:
#ifdef H_HT0_Window_Fill_6_Normal_Trap
#ifdef SUN_H_HT0_Window_Fill_6_Normal_Trap
SUN_H_HT0_Window_Fill_6_Normal_Trap
# ifdef My_HT0_Window_Fill_6_Normal_Trap
My_HT0_Window_Fill_6_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_6_Normal_Trap)
HT0_Window_Fill_7_Normal_0xdc:
#ifdef H_HT0_Window_Fill_7_Normal_Trap
#ifdef SUN_H_HT0_Window_Fill_7_Normal_Trap
SUN_H_HT0_Window_Fill_7_Normal_Trap
# ifdef My_HT0_Window_Fill_7_Normal_Trap
My_HT0_Window_Fill_7_Normal_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_7_Normal_Trap)
HT0_Window_Fill_0_Other_0xe0:
#ifdef H_HT0_Window_Fill_0_Other_Trap
#ifdef SUN_H_HT0_Window_Fill_0_Other_Trap
SUN_H_HT0_Window_Fill_0_Other_Trap
# ifdef My_HT0_Window_Fill_0_Other_Trap
My_HT0_Window_Fill_0_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_0_Other_Trap)
HT0_Window_Fill_1_Other_0xe4:
#ifdef H_HT0_Window_Fill_1_Other_Trap
#ifdef SUN_H_HT0_Window_Fill_1_Other_Trap
SUN_H_HT0_Window_Fill_1_Other_Trap
# ifdef My_HT0_Window_Fill_1_Other_Trap
My_HT0_Window_Fill_1_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_1_Other_Trap)
HT0_Window_Fill_2_Other_0xe8:
#ifdef H_HT0_Window_Fill_2_Other_Trap
#ifdef SUN_H_HT0_Window_Fill_2_Other_Trap
SUN_H_HT0_Window_Fill_2_Other_Trap
# ifdef My_HT0_Window_Fill_2_Other_Trap
My_HT0_Window_Fill_2_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_2_Other_Trap)
HT0_Window_Fill_3_Other_0xec:
#ifdef H_HT0_Window_Fill_3_Other_Trap
#ifdef SUN_H_HT0_Window_Fill_3_Other_Trap
SUN_H_HT0_Window_Fill_3_Other_Trap
# ifdef My_HT0_Window_Fill_3_Other_Trap
My_HT0_Window_Fill_3_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_3_Other_Trap)
HT0_Window_Fill_4_Other_0xf0:
#ifdef H_HT0_Window_Fill_4_Other_Trap
#ifdef SUN_H_HT0_Window_Fill_4_Other_Trap
SUN_H_HT0_Window_Fill_4_Other_Trap
# ifdef My_HT0_Window_Fill_4_Other_Trap
My_HT0_Window_Fill_4_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_4_Other_Trap)
HT0_Window_Fill_5_Other_0xf4:
#ifdef H_HT0_Window_Fill_5_Other_Trap
#ifdef SUN_H_HT0_Window_Fill_5_Other_Trap
SUN_H_HT0_Window_Fill_5_Other_Trap
# ifdef My_HT0_Window_Fill_5_Other_Trap
My_HT0_Window_Fill_5_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_5_Other_Trap)
HT0_Window_Fill_6_Other_0xf8:
#ifdef H_HT0_Window_Fill_6_Other_Trap
#ifdef SUN_H_HT0_Window_Fill_6_Other_Trap
SUN_H_HT0_Window_Fill_6_Other_Trap
# ifdef My_HT0_Window_Fill_6_Other_Trap
My_HT0_Window_Fill_6_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_6_Other_Trap)
HT0_Window_Fill_7_Other_0xfc:
#ifdef H_HT0_Window_Fill_7_Other_Trap
#ifdef SUN_H_HT0_Window_Fill_7_Other_Trap
SUN_H_HT0_Window_Fill_7_Other_Trap
# ifdef My_HT0_Window_Fill_7_Other_Trap
My_HT0_Window_Fill_7_Other_Trap
CUSTOM_TRAP(H_HT0_Window_Fill_7_Other_Trap)
ta T_HGOOD_TRAP;nop;nop;nop;nop;nop;nop ! N2 N2 N2 N2
ta T_GOOD_TRAP; nop;nop;nop;nop;nop;nop
ta T_HBAD_TRAP; nop;nop;nop;nop;nop;nop
#ifdef H_HT0_ChangePriv_0x102
#ifdef SUN_H_HT0_ChangePriv_0x102
SUN_H_HT0_ChangePriv_0x102
CUSTOM_TRAP(H_HT0_ChangePriv_0x102)
#ifdef H_HT0_ChangeNonPriv_0x103
#ifdef SUN_H_HT0_ChangeNonPriv_0x103
SUN_H_HT0_ChangeNonPriv_0x103
CUSTOM_TRAP(H_HT0_ChangeNonPriv_0x103)
#ifdef H_HT0_ChangeToTL0_0x105
#ifdef SUN_H_HT0_ChangeToTL0_0x105
SUN_H_HT0_ChangeToTL0_0x105
CUSTOM_TRAP(H_HT0_ChangeToTL0_0x105)
#ifdef H_HT0_ChangeToTL0_0x106
#ifdef SUN_H_HT0_ChangeToTL0_0x106
SUN_H_HT0_ChangeToTL0_0x106
CUSTOM_TRAP(H_HT0_ChangeToTL0_0x106)
#ifdef H_HT0_ChangeToTL0_0x107
#ifdef SUN_H_HT0_ChangeToTL0_0x107
SUN_H_HT0_ChangeToTL0_0x107
CUSTOM_TRAP(H_HT0_ChangeToTL0_0x107)
setx htrap_enable_data, %g2, %g1
setx htrap_enable_data, %g2, %g1
setx htrap_enable_data, %g2, %g1
HT0_PThreadMutexLock_0x110:
#ifdef H_HT0_PThreadMutexLock_0x110
#ifdef SUN_H_HT0_PThreadMutexLock_0x110
SUN_H_HT0_PThreadMutexLock_0x110
CUSTOM_TRAP(H_HT0_PThreadMutexLock_0x110)
setx hpthread_mutex_data, %g2, %g3
membar #LoadLoad | #LoadStore
#ifdef H_HT0_ChangeToTL0_0x111
#ifdef SUN_HT0_ChangeToTL0_0x111
SUN_HT0_ChangeToTL0_0x111
CUSTOM_TRAP(H_HT0_ChangeToTL0_0x111)
HT0_PThreadMutexUnLock_0x114:
setx hpthread_mutex_data, %g2, %g5
setx hpthread_counter_data, %g1, %g4
wrpr %g2, 0, %tpc ! set %tcp/%tnpc
jmp %g1 ! %g1 is original %tnpc
! call kernel dervice routine
! call kernel dervice routine
! switch to hpriv, from hpriv
setx htrap_enable_data, %g2, %g1
setx htrap_enable_data, %g2, %g1
setx htrap_enable_data, %g2, %g1
! Function to set PCONTEXT, SCONTEXT,
! pstate.priv, hpstate.hpriv and
! jump to target address.
! Caller should pass argument as:
! %o3[0] = desired pstate.priv value
! %o4[0] = desired hpstate.hpriv value
stxa %o1, [%g1] 0x21 ! set PCONTEXT
stxa %o2, [%g1] 0x21 ! set SCONTEXT
xor %o3, 0x1, %o3 ! invert bit so that later can
xor %o4, 0x1, %o4 ! be xor'ed using wrpr
sllx %o3, 10, %o3 ! align priv bit
sllx %o4, 2, %o4 ! align hpriv bit
! Function to read thread ID from the
! ASI_CMP_INTR_ID (same as ASI_CMP_CORE_ID in N2)
! Value is returned in %o1.
ldxa [%g0]ASI_INTR_ID, %o1
!! 6-core relative TID - values 0-47 only ..
ldxa [%g0]ASI_CMP_CORE, %o2 ! Core-Avail
not %g0, %g1 ! Starting mask
sllx %g1, %o1, %g1 ! Mask all higher threads than me
andn %g1,%o2,%o2 ! %o1 is 1s for missing tids
popc %o2, %g1 ! Number of missing tids which
sub %o1, %g1, %o1 ! Reduce TID by missing count
HT0_Trap_Instruction_0x130:
#ifdef H_HT0_Trap_Instruction_0
#ifdef SUN_H_HT0_Trap_Instruction_0
SUN_H_HT0_Trap_Instruction_0
# ifdef My_HT0_Trap_Instruction_0
My_HT0_Trap_Instruction_0
CUSTOM_TRAP(H_HT0_Trap_Instruction_0)
HT0_Trap_Instruction_0x131:
#ifdef H_HT0_Trap_Instruction_1
#ifdef SUN_H_HT0_Trap_Instruction_1
SUN_H_HT0_Trap_Instruction_1
# ifdef My_HT0_Trap_Instruction_1
My_HT0_Trap_Instruction_1
CUSTOM_TRAP(H_HT0_Trap_Instruction_1)
HT0_Trap_Instruction_0x132:
#ifdef H_HT0_Trap_Instruction_2
#ifdef SUN_H_HT0_Trap_Instruction_2
SUN_H_HT0_Trap_Instruction_2
# ifdef My_HT0_Trap_Instruction_2
My_HT0_Trap_Instruction_2
CUSTOM_TRAP(H_HT0_Trap_Instruction_2)
HT0_Trap_Instruction_0x133:
#ifdef H_HT0_Trap_Instruction_3
#ifdef SUN_H_HT0_Trap_Instruction_3
SUN_H_HT0_Trap_Instruction_3
# ifdef My_HT0_Trap_Instruction_3
My_HT0_Trap_Instruction_3
CUSTOM_TRAP(H_HT0_Trap_Instruction_3)
HT0_Trap_Instruction_0x134:
#ifdef H_HT0_Trap_Instruction_4
#ifdef SUN_H_HT0_Trap_Instruction_4
SUN_H_HT0_Trap_Instruction_4
# ifdef My_HT0_Trap_Instruction_4
My_HT0_Trap_Instruction_4
CUSTOM_TRAP(H_HT0_Trap_Instruction_4)
HT0_Trap_Instruction_0x135:
#ifdef H_HT0_Trap_Instruction_5
#ifdef SUN_H_HT0_Trap_Instruction_5
SUN_H_HT0_Trap_Instruction_5
# ifdef My_HT0_Trap_Instruction_5
My_HT0_Trap_Instruction_5
CUSTOM_TRAP(H_HT0_Trap_Instruction_5)
setx htrap_enable_data, %g2, %g1
#ifdef H_HT0_Trap_Instruction_56
#ifdef SUN_H_HT0_Trap_Instruction_56
SUN_H_HT0_Trap_Instruction_56
# ifdef My_HT0_Trap_Instruction_56
My_HT0_Trap_Instruction_56
CUSTOM_TRAP(H_HT0_Trap_Instruction_56)
setx htrap_enable_data, %g2, %g1
setx htrap_enable_data, %g2, %g1
! Function to set PCONTEXT, SCONTEXT,
! pstate.priv, hpstate.hpriv and
! jump to target address.
! Caller should pass argument as:
! %o3[0] = desired pstate.priv value
! %o4[0] = desired hpstate.hpriv value
stxa %o1, [%g1] 0x21 ! set PCONTEXT
stxa %o2, [%g1] 0x21 ! set SCONTEXT
stxa %o6, [%g1] 0x21 ! set PCONTEXT1
stxa %o7, [%g1] 0x21 ! set SCONTEXT1
xor %o3, 0x1, %o3 ! invert bit so that later can
xor %o4, 0x1, %o4 ! be xor'ed using wrpr
sllx %o3, 10, %o3 ! align priv bit
sllx %o4, 2, %o4 ! align hpriv bit
! $EV trig_pc_d(1,@VA(.HTRAPS.end_of_ctxswitch)) -> marker(bootEnd, *, 1)
#ifdef SEND_BOOT_TRACE_TO_SSI
setx 0xfffff00000, %i0, %i1
! Function to read thread ID from the
! ASI_CMP_INTR_ID (same as ASI_CMP_CORE_ID in N2)
! Value is returned in %o1.
ldxa [%g0]ASI_INTR_ID, %o1
!! 6-core relative TID - values 0-47 only ..
ldxa [%g0]ASI_CMP_CORE, %o2 ! Core-Avail
not %g0, %g1 ! Starting mask
sllx %g1, %o1, %g1 ! Mask all higher threads than me
andn %g1,%o2,%o2 ! %o1 is 1s for missing tids
popc %o2, %g1 ! Number of missing tids which
sub %o1, %g1, %o1 ! Reduce TID by missing count
HT0_Trap_Instruction_0x190:
#ifdef H_HT0_HTrap_Instruction_0
#ifdef SUN_H_HT0_HTrap_Instruction_0
SUN_H_HT0_HTrap_Instruction_0
# ifdef My_HT0_HTrap_Instruction_0
My_HT0_HTrap_Instruction_0
CUSTOM_TRAP(H_HT0_HTrap_Instruction_0)
HT0_Trap_Instruction_0x191:
#ifdef H_HT0_HTrap_Instruction_1
#ifdef SUN_H_HT0_HTrap_Instruction_1
SUN_H_HT0_HTrap_Instruction_1
# ifdef My_HT0_HTrap_Instruction_1
My_HT0_HTrap_Instruction_1
CUSTOM_TRAP(H_HT0_HTrap_Instruction_1)
HT0_Trap_Instruction_0x192:
#ifdef H_HT0_HTrap_Instruction_2
#ifdef SUN_H_HT0_HTrap_Instruction_2
SUN_H_HT0_HTrap_Instruction_2
# ifdef My_HT0_HTrap_Instruction_2
My_HT0_HTrap_Instruction_2
CUSTOM_TRAP(H_HT0_HTrap_Instruction_2)
HT0_Trap_Instruction_0x193:
#ifdef H_HT0_HTrap_Instruction_3
#ifdef SUN_H_HT0_HTrap_Instruction_3
SUN_H_HT0_HTrap_Instruction_3
# ifdef My_HT0_HTrap_Instruction_3
My_HT0_HTrap_Instruction_3
CUSTOM_TRAP(H_HT0_HTrap_Instruction_3)
HT0_Trap_Instruction_0x194:
#ifdef H_HT0_HTrap_Instruction_4
#ifdef SUN_H_HT0_HTrap_Instruction_4
SUN_H_HT0_HTrap_Instruction_4
# ifdef My_HT0_HTrap_Instruction_4
My_HT0_HTrap_Instruction_4
CUSTOM_TRAP(H_HT0_HTrap_Instruction_4)
HT0_Trap_Instruction_0x195:
#ifdef H_HT0_HTrap_Instruction_5
#ifdef SUN_H_HT0_HTrap_Instruction_5
SUN_H_HT0_HTrap_Instruction_5
# ifdef My_HT0_HTrap_Instruction_5
My_HT0_HTrap_Instruction_5
CUSTOM_TRAP(H_HT0_HTrap_Instruction_5)
#ifdef ASI_CHECK_GOODTRAP
call exit_sync_thread_start
! this externally signals good/bad per thread for tester
![15:8] lower tic reg bits
ldxa [%g0]ASI_INTR_ID, %o1
!or %o1, 0x80, %o1 ! only if BAD
! show TID and good/bad on SSI
ldxa [%g0]ASI_INTR_ID, %g1 ! Get TID
stxa %g2, [%g1] ASI_CMP_CORE ! Park thread
ba good_trap ; nop;nop;nop;nop;nop;nop;nop
ba good_trap ; nop;nop;nop;nop;nop;nop;nop
! this externally signals good/bad per thread for tester
ldxa [%g0]ASI_INTR_ID, %o1
or %o1, 0x80, %o1 ! only if BAD
ba bad_trap; nop;nop;nop;nop;nop;nop;nop
HT0_Trap_Instruction_0x1b0:
#ifdef H_HT0_Trap_Instruction_0
#ifdef SUN_H_HT0_Trap_Instruction_0
SUN_H_HT0_Trap_Instruction_0
# ifdef My_HT0_Trap_Instruction_0
My_HT0_Trap_Instruction_0
CUSTOM_TRAP(H_HT0_Trap_Instruction_0)
HT0_Trap_Instruction_0x1b1:
#ifdef H_HT0_Trap_Instruction_1
#ifdef SUN_H_HT0_Trap_Instruction_1
SUN_H_HT0_Trap_Instruction_1
# ifdef My_HT0_Trap_Instruction_1
My_HT0_Trap_Instruction_1
CUSTOM_TRAP(H_HT0_Trap_Instruction_1)
HT0_Trap_Instruction_0x1b2:
#ifdef H_HT0_Trap_Instruction_2
#ifdef SUN_H_HT0_Trap_Instruction_2
SUN_H_HT0_Trap_Instruction_2
# ifdef My_HT0_Trap_Instruction_2
My_HT0_Trap_Instruction_2
CUSTOM_TRAP(H_HT0_Trap_Instruction_2)
HT0_Trap_Instruction_0x1b3:
#ifdef H_HT0_Trap_Instruction_3
#ifdef SUN_H_HT0_Trap_Instruction_3
SUN_H_HT0_Trap_Instruction_3
# ifdef My_HT0_Trap_Instruction_3
My_HT0_Trap_Instruction_3
CUSTOM_TRAP(H_HT0_Trap_Instruction_3)
HT0_Trap_Instruction_0x1b4:
#ifdef H_HT0_Trap_Instruction_4
#ifdef SUN_H_HT0_Trap_Instruction_4
SUN_H_HT0_Trap_Instruction_4
# ifdef My_HT0_Trap_Instruction_4
My_HT0_Trap_Instruction_4
CUSTOM_TRAP(H_HT0_Trap_Instruction_4)
HT0_Trap_Instruction_0x1b5:
#ifdef H_HT0_Trap_Instruction_5
#ifdef SUN_H_HT0_Trap_Instruction_5
SUN_H_HT0_Trap_Instruction_5
# ifdef My_HT0_Trap_Instruction_5
My_HT0_Trap_Instruction_5
CUSTOM_TRAP(H_HT0_Trap_Instruction_5)
! If counter > 0, trap is enabled for n times, decrement counter
! If counter = 0, trap is disabled, go to BadTrap
! If counter = -1, trap has taken n times, go to GoodTrap directly
! If counter <-1, trap is enabled for n times, increment counter
set htrap_enable_data, %g1
be %xcc, HT0_BadTrap_0x101
be %xcc, HT0_GoodTrap_0x100
set htrap_enable_data, %g1
be %xcc, HT0_BadTrap_0x101
be %xcc, HT0_GoodTrap_0x100
#include <immu_miss_handler_ext.s>
#include <dmmu_miss_handler_ext.s>
#include "iaccess_except_handler.s"
#include "daccess_except_handler.s"
#include "daccess_prot_handler.s"
#include "mem_not_align_handler.s"
.half HE0_0x00,HE0_0x01,HE0_0x02,HE0_0x03,HE0_0x04,HE0_0x05,HE0_0x06,HE0_0x07
.half HE0_0x08,HE0_0x09,HE0_0x0a,HE0_0x0b,HE0_0x0c,HE0_0x0d,HE0_0x0e,HE0_0x0f
.half HE0_0x10,HE0_0x11,HE0_0x12,HE0_0x13,HE0_0x14,HE0_0x15,HE0_0x16,HE0_0x17
.half HE0_0x18,HE0_0x19,HE0_0x1a,HE0_0x1b,HE0_0x1c,HE0_0x1d,HE0_0x1e,HE0_0x1f
.half HE0_0x20,HE0_0x21,HE0_0x22,HE0_0x23,HE0_0x24,HE0_0x25,HE0_0x26,HE0_0x27
.half HE0_0x28,HE0_0x29,HE0_0x2a,HE0_0x2b,HE0_0x2c,HE0_0x2d,HE0_0x2e,HE0_0x2f
.half HE0_0x30,HE0_0x31,HE0_0x32,HE0_0x33,HE0_0x34,HE0_0x35,HE0_0x36,HE0_0x37
.half HE0_0x38,HE0_0x39,HE0_0x3a,HE0_0x3b,HE0_0x3c,HE0_0x3d,HE0_0x3e,HE0_0x3f
.half HE0_0x40,HE0_0x41,HE0_0x42,HE0_0x43,HE0_0x44,HE0_0x45,HE0_0x46,HE0_0x47
.half HE0_0x48,HE0_0x49,HE0_0x4a,HE0_0x4b,HE0_0x4c,HE0_0x4d,HE0_0x4e,HE0_0x4f
.half HE0_0x50,HE0_0x51,HE0_0x52,HE0_0x53,HE0_0x54,HE0_0x55,HE0_0x56,HE0_0x57
.half HE0_0x58,HE0_0x59,HE0_0x5a,HE0_0x5b,HE0_0x5c,HE0_0x5d,HE0_0x5e,HE0_0x5f
.half HE0_0x60,HE0_0x61,HE0_0x62,HE0_0x63,HE0_0x64,HE0_0x65,HE0_0x66,HE0_0x67
.half HE0_0x68,HE0_0x69,HE0_0x6a,HE0_0x6b,HE0_0x6c,HE0_0x6d,HE0_0x6e,HE0_0x6f
.half HE0_0x70,HE0_0x71,HE0_0x72,HE0_0x73,HE0_0x74,HE0_0x75,HE0_0x76,HE0_0x77
.half HE0_0x78,HE0_0x79,HE0_0x7a,HE0_0x7b,HE0_0x7c,HE0_0x7d,HE0_0x7e,HE0_0x7f
.half HE0_0x80,HE0_0x81,HE0_0x82,HE0_0x83,HE0_0x84,HE0_0x85,HE0_0x86,HE0_0x87
.half HE0_0x88,HE0_0x89,HE0_0x8a,HE0_0x8b,HE0_0x8c,HE0_0x8d,HE0_0x8e,HE0_0x8f
.half HE0_0x90,HE0_0x91,HE0_0x92,HE0_0x93,HE0_0x94,HE0_0x95,HE0_0x96,HE0_0x97
.half HE0_0x98,HE0_0x99,HE0_0x9a,HE0_0x9b,HE0_0x9c,HE0_0x9d,HE0_0x9e,HE0_0x9f
.half HE0_0xa0,HE0_0xa1,HE0_0xa2,HE0_0xa3,HE0_0xa4,HE0_0xa5,HE0_0xa6,HE0_0xa7
.half HE0_0xa8,HE0_0xa9,HE0_0xaa,HE0_0xab,HE0_0xac,HE0_0xad,HE0_0xae,HE0_0xaf
.half HE0_0xb0,HE0_0xb1,HE0_0xb2,HE0_0xb3,HE0_0xb4,HE0_0xb5,HE0_0xb6,HE0_0xb7
.half HE0_0xb8,HE0_0xb9,HE0_0xba,HE0_0xbb,HE0_0xbc,HE0_0xbd,HE0_0xbe,HE0_0xbf
.half HE0_0xc0,HE0_0xc1,HE0_0xc2,HE0_0xc3,HE0_0xc4,HE0_0xc5,HE0_0xc6,HE0_0xc7
.half HE0_0xc8,HE0_0xc9,HE0_0xca,HE0_0xcb,HE0_0xcc,HE0_0xcd,HE0_0xce,HE0_0xcf
.half HE0_0xd0,HE0_0xd1,HE0_0xd2,HE0_0xd3,HE0_0xd4,HE0_0xd5,HE0_0xd6,HE0_0xd7
.half HE0_0xd8,HE0_0xd9,HE0_0xda,HE0_0xdb,HE0_0xdc,HE0_0xdd,HE0_0xde,HE0_0xdf
.half HE0_0xe0,HE0_0xe1,HE0_0xe2,HE0_0xe3,HE0_0xe4,HE0_0xe5,HE0_0xe6,HE0_0xe7
.half HE0_0xe8,HE0_0xe9,HE0_0xea,HE0_0xeb,HE0_0xec,HE0_0xed,HE0_0xee,HE0_0xef
.half HE0_0xf0,HE0_0xf1,HE0_0xf2,HE0_0xf3,HE0_0xf4,HE0_0xf5,HE0_0xf6,HE0_0xf7
.half HE0_0xf8,HE0_0xf9,HE0_0xfa,HE0_0xfb,HE0_0xfc,HE0_0xfd,HE0_0xfe,HE0_0xff
.half HE1_0x00,HE1_0x01,HE1_0x02,HE1_0x03,HE1_0x04,HE1_0x05,HE1_0x06,HE1_0x07
.half HE1_0x08,HE1_0x09,HE1_0x0a,HE1_0x0b,HE1_0x0c,HE1_0x0d,HE1_0x0e,HE1_0x0f
.half HE1_0x10,HE1_0x11,HE1_0x12,HE1_0x13,HE1_0x14,HE1_0x15,HE1_0x16,HE1_0x17
.half HE1_0x18,HE1_0x19,HE1_0x1a,HE1_0x1b,HE1_0x1c,HE1_0x1d,HE1_0x1e,HE1_0x1f
.half HE1_0x20,HE1_0x21,HE1_0x22,HE1_0x23,HE1_0x24,HE1_0x25,HE1_0x26,HE1_0x27
.half HE1_0x28,HE1_0x29,HE1_0x2a,HE1_0x2b,HE1_0x2c,HE1_0x2d,HE1_0x2e,HE1_0x2f
.half HE1_0x30,HE1_0x31,HE1_0x32,HE1_0x33,HE1_0x34,HE1_0x35,HE1_0x36,HE1_0x37
.half HE1_0x38,HE1_0x39,HE1_0x3a,HE1_0x3b,HE1_0x3c,HE1_0x3d,HE1_0x3e,HE1_0x3f
.half HE1_0x40,HE1_0x41,HE1_0x42,HE1_0x43,HE1_0x44,HE1_0x45,HE1_0x46,HE1_0x47
.half HE1_0x48,HE1_0x49,HE1_0x4a,HE1_0x4b,HE1_0x4c,HE1_0x4d,HE1_0x4e,HE1_0x4f
.half HE1_0x50,HE1_0x51,HE1_0x52,HE1_0x53,HE1_0x54,HE1_0x55,HE1_0x56,HE1_0x57
.half HE1_0x58,HE1_0x59,HE1_0x5a,HE1_0x5b,HE1_0x5c,HE1_0x5d,HE1_0x5e,HE1_0x5f
.half HE1_0x60,HE1_0x61,HE1_0x62,HE1_0x63,HE1_0x64,HE1_0x65,HE1_0x66,HE1_0x67
.half HE1_0x68,HE1_0x69,HE1_0x6a,HE1_0x6b,HE1_0x6c,HE1_0x6d,HE1_0x6e,HE1_0x6f
.half HE1_0x70,HE1_0x71,HE1_0x72,HE1_0x73,HE1_0x74,HE1_0x75,HE1_0x76,HE1_0x77
.half HE1_0x78,HE1_0x79,HE1_0x7a,HE1_0x7b,HE1_0x7c,HE1_0x7d,HE1_0x7e,HE1_0x7f
.half HE1_0x80,HE1_0x81,HE1_0x82,HE1_0x83,HE1_0x84,HE1_0x85,HE1_0x86,HE1_0x87
.half HE1_0x88,HE1_0x89,HE1_0x8a,HE1_0x8b,HE1_0x8c,HE1_0x8d,HE1_0x8e,HE1_0x8f
.half HE1_0x90,HE1_0x91,HE1_0x92,HE1_0x93,HE1_0x94,HE1_0x95,HE1_0x96,HE1_0x97
.half HE1_0x98,HE1_0x99,HE1_0x9a,HE1_0x9b,HE1_0x9c,HE1_0x9d,HE1_0x9e,HE1_0x9f
.half HE1_0xa0,HE1_0xa1,HE1_0xa2,HE1_0xa3,HE1_0xa4,HE1_0xa5,HE1_0xa6,HE1_0xa7
.half HE1_0xa8,HE1_0xa9,HE1_0xaa,HE1_0xab,HE1_0xac,HE1_0xad,HE1_0xae,HE1_0xaf
.half HE1_0xb0,HE1_0xb1,HE1_0xb2,HE1_0xb3,HE1_0xb4,HE1_0xb5,HE1_0xb6,HE1_0xb7
.half HE1_0xb8,HE1_0xb9,HE1_0xba,HE1_0xbb,HE1_0xbc,HE1_0xbd,HE1_0xbe,HE1_0xbf
.half HE1_0xc0,HE1_0xc1,HE1_0xc2,HE1_0xc3,HE1_0xc4,HE1_0xc5,HE1_0xc6,HE1_0xc7
.half HE1_0xc8,HE1_0xc9,HE1_0xca,HE1_0xcb,HE1_0xcc,HE1_0xcd,HE1_0xce,HE1_0xcf
.half HE1_0xd0,HE1_0xd1,HE1_0xd2,HE1_0xd3,HE1_0xd4,HE1_0xd5,HE1_0xd6,HE1_0xd7
.half HE1_0xd8,HE1_0xd9,HE1_0xda,HE1_0xdb,HE1_0xdc,HE1_0xdd,HE1_0xde,HE1_0xdf
.half HE1_0xe0,HE1_0xe1,HE1_0xe2,HE1_0xe3,HE1_0xe4,HE1_0xe5,HE1_0xe6,HE1_0xe7
.half HE1_0xe8,HE1_0xe9,HE1_0xea,HE1_0xeb,HE1_0xec,HE1_0xed,HE1_0xee,HE1_0xef
.half HE1_0xf0,HE1_0xf1,HE1_0xf2,HE1_0xf3,HE1_0xf4,HE1_0xf5,HE1_0xf6,HE1_0xf7
.half HE1_0xf8,HE1_0xf9,HE1_0xfa,HE1_0xfb,HE1_0xfc,HE1_0xfd,HE1_0xfe,HE1_0xff
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
.half 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
!!!!!!!! ERROR HANDLING CODE that used to be in err_handlers.s !!!!!
! For ITTM, ITTP, ITDP errors, err_type is < 4. Issue demap all to the VA in TPC[TL].
! (Demap pg requires context knowledge - too much work)
! For ITMU (err_type = 4), rd sfar to chk MRA index.
! For ITL2U and ITL2ND errors issue retry.
inst_access_mmu_error_handler:
be ht_chk_sfar !! sfar stores the MRA index
stxa %g0, [%g3]ASI_IMMU_DEMAP
inst_access_error_handler:
!# simplified the handler. Read the dsfsr and dsfsr and clear it for all ipe errors.
!# This will also speedup the diags.
!# I don't get much from injecting errors in the trap handlers.
!# First six lines is the new code added to simplify the handler.
!#8/18/05: EVEN with above simplification some of the diags die with max cycles reached.
!#This is because the global registers get messed up if we are at max gl.
!#Since the dsfsr and dsfar are being checked by the checkers, just do a retry.
rdpr %gl, %g7 !! read the current gl
!!bl ht_tsa_error on tsa_errors just clear the dsfsr and exit
and %g3, 0x3, %g3 !! get the tca index
ldxa [%g3]ASI_TICK_ACCESS, %g5 !! read ecc
or %g3, 0x20, %g3 !!set NP bit to read data
ldxa [%g3]ASI_TICK_ACCESS, %g5 !! read data
setx ht_ipe_clr_tcc_err, %g1, %g3
wr %g0, %g5, %sys_tick_cmpr
wrhpr %g0, %g5, %hsys_tick_cmpr
and %g3, 0x7, %g3 !! get stb_index
ht_ipe_rd_stb_entry_data:
ldxa [%g3]ASI_STB_ACCESS, %g2
ldxa [%g3]ASI_STB_ACCESS, %g2
ht_ipe_rd_stb_entry_addr:
ldxa [%g3]ASI_STB_ACCESS, %g2
ldxa [%g3]ASI_STB_ACCESS, %g2
add %g0, 0x100, %g1 !! read the stb ptr
ldxa [%g1]ASI_STB_ACCESS, %g2
and %g3, 0x7, %g3 !! get mra_index
setx ht_ipe_rd_mra, %g1, %g4
add %g0, ASI_MMU_ZERO_CONTEXT_TSB_CONFIG_0, %g1
ldxa [%g1]ASI_MMU_ZERO_CONTEXT_TSB_CONFIG, %g2
add %g0, ASI_MMU_ZERO_CONTEXT_TSB_CONFIG_2, %g1
ldxa [%g1]ASI_MMU_ZERO_CONTEXT_TSB_CONFIG, %g2
add %g0, ASI_MMU_NONZERO_CONTEXT_TSB_CONFIG_0, %g1
ldxa [%g1]ASI_MMU_NONZERO_CONTEXT_TSB_CONFIG, %g2
add %g0, ASI_MMU_NONZERO_CONTEXT_TSB_CONFIG_2, %g1
ldxa [%g1]ASI_MMU_NONZERO_CONTEXT_TSB_CONFIG, %g2
add %g0, ASI_MMU_PHYSICAL_OFFSET_0, %g1
ldxa [%g1]ASI_MMU_PHYSICAL_OFFSET, %g2
add %g0, ASI_MMU_PHYSICAL_OFFSET_1, %g1
ldxa [%g1]ASI_MMU_PHYSICAL_OFFSET, %g2
add %g0, ASI_MMU_PHYSICAL_OFFSET_2, %g1
ldxa [%g1]ASI_MMU_PHYSICAL_OFFSET, %g2
add %g0, ASI_MMU_PHYSICAL_OFFSET_3, %g1
ldxa [%g1]ASI_MMU_PHYSICAL_OFFSET, %g2
and %g3, 0x7, %g3 !! get sca_index
ldxa [%g3]ASI_SCRATCHPAD_ACCESS, %g5 !! read ecc
or %g3, 0x40, %g3 !!set NP bit to read data
ldxa [%g3]ASI_SCRATCHPAD_ACCESS, %g5 !! read data
stxa %g5, [%g4]ASI_HYP_SCRATCHPAD
and %g3, 0x7, %g3 !! get tsa_index
rdpr %tl, %g1 !! store the current tl
wrpr %g0, %g2, %tstate !! shd clear the error
add %g0, ASI_CPU_MONDO_QUEUE_HEAD, %g1
ldxa [%g2]ASI_IRF_ECC_REG, %g4
rdpr %gl, %g7 !! read the current gl
bg ht_ipe_rd_array !! err not in global
cmp %g2, 0x3 !! err in global and at gl 3
be,a ht_ipe_rd_array !! global registers are not corrected
wrpr %g0, %g2, %gl !! restore the gl to error gl
setx ht_ipe_rd_err_reg, %g4, %g5
stxa %r0, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r1, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r2, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r3, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r4, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r5, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r6, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r7, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r8, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r9, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r10, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r11, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r12, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r13, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r14, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r15, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r16, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r17, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r18, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r19, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r20, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r21, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r22, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r23, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r24, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r25, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r26, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r27, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r28, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r29, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r30, [%g0 + %g3]ASI_SCRATCHPAD
stxa %r31, [%g0 + %g3]ASI_SCRATCHPAD
setx ht_ipe_wr_g0, %g4, %g5
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r0
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r1
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r2
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r3
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r4
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r5
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r6
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r7
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r8
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r9
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r10
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r11
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r12
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r13
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r14
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r15
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r16
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r17
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r18
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r19
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r20
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r21
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r22
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r23
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r24
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r25
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r26
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r27
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r28
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r29
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r30
ldxa [%g0 + %g3]ASI_SCRATCHPAD, %r31
ht_ipe_get_frf_even_syndrome:
ht_ipe_get_frf_odd_syndrome:
ldxa [%g1]ASI_FRF_ECC_REG, %g3
data_access_mmu_error_handler:
stxa %g0, [%g3]ASI_DMMU_DEMAP
data_access_error_handler:
setx 0xc03ffff800000000, %g1, %g2
setx 0xab00000000, %g1, %g3
#ifdef DAE_SKIP_IF_SOCU_ERROR
hw_corrected_error_handler:
ldxa [%g0]ASI_DESR, %g1 !! PRM 25.8.5 Also clears desr
#ifdef VERBOSE_MCU_CE_HANDLER
/* only allows MCU and L2 correctable errors */
be hw_corrected_error_clear_l2esr
be hw_corrected_error_clear_dram_esr
ta T_BAD_TRAP ! only expected L2 or MCU Correctable
/* allows pretty much any error */
hw_corrected_error_clear_dram_esr:
/* Check & clear the DRAM ESR - PRM 25.12.1
* DRAM Error Status reg bits are:
* 63 MEU Multiple uncorrectable errors
* 62 MEC Multiple correctable errors
* 61 DAC DRAM access correctable error
* 60 DAU DRAM access uncorrectable error
* 59 DSC DRAM scrub correctable error
* 58 DSU DRAM scrub uncorrectable error
* 57 DBU DRAM out-of-bound error
* 56 MEB Multiple out-of-bound errors
* 55 FBU FBDIMM channel unrecoverable error
* 54 FBR FBDIMM channel recoverable error
best_set_reg(DRAM_ES_PA, %g7, %g3)
best_set_reg(DRAM_CSR_STEP, %g6, %g7)
#ifdef VERBOSE_MCU_CE_HANDLER
/* only allows MCU DAC and DSC errors */
best_set_reg(0x2000000000000000, %g7, %g2) ! DAC bit
best_set_reg(0x0800000000000000, %g7, %g4) ! DSC bit
ldx [%g3], %g5 /* DRAM0 ESR*/
be %xcc, ht_hce_no_dram0_dac
nop ! $EV trig_pc_d(1, @VA(.HTRAPS.ht_hce_dram0_dac)) -> printf("INFO: DRAM0 ESR DAC bit was set",*,1)
be %xcc, ht_hce_no_dram0_dsc
nop ! $EV trig_pc_d(1, @VA(.HTRAPS.ht_hce_dram0_dsc)) -> printf("INFO: DRAM0 ESR DSC bit was set",*,1)
stx %g5, [%g3] /* clear DRAM0 ESR */
ldx [%g3], %g5 /* load DRAM1 ESR*/
be %xcc, ht_hce_no_dram1_dac
nop ! $EV trig_pc_d(1, @VA(.HTRAPS.ht_hce_dram1_dac)) -> printf("INFO: DRAM1 ESR DAC bit was set",*,1)
be %xcc, ht_hce_no_dram1_dsc
nop ! $EV trig_pc_d(1, @VA(.HTRAPS.ht_hce_dram1_dsc)) -> printf("INFO: DRAM1 ESR DSC bit was set",*,1)
stx %g5, [%g3] /* clear DRAM1 ESR */
ldx [%g3], %g5 /* load DRAM2 ESR */
be %xcc, ht_hce_no_dram2_dac
nop ! $EV trig_pc_d(1, @VA(.HTRAPS.ht_hce_dram2_dac)) -> printf("INFO: DRAM2 ESR DAC bit was set",*,1)
be %xcc, ht_hce_no_dram2_dsc
nop ! $EV trig_pc_d(1, @VA(.HTRAPS.ht_hce_dram2_dsc)) -> printf("INFO: DRAM2 ESR DSC bit was set",*,1)
stx %g5, [%g3] /* clear DRAM2 ESR */
ldx [%g3], %g5 /* load DRAM3 ESR */
be %xcc, ht_hce_no_dram3_dac
nop ! $EV trig_pc_d(1, @VA(.HTRAPS.ht_hce_dram3_dac)) -> printf("INFO: DRAM3 ESR DAC bit was set",*,1)
be %xcc, ht_hce_no_dram3_dsc
nop ! $EV trig_pc_d(1, @VA(.HTRAPS.ht_hce_dram3_dsc)) -> printf("INFO: DRAM3 ESR DSC bit was set",*,1)
stx %g5, [%g3] /* DRAM3 */
andcc %g1, %g4, %g6 /* if no DAC/DSC on any DRAM, then error */
ta T_BAD_TRAP ! no DAC or DSC set in any MCU ESR
best_set_reg(0x6840000000000000, %g7, %g2)
stx %g2, [%g3] /* DRAM0 */
stx %g2, [%g3] /* DRAM1 */
stx %g2, [%g3] /* DRAM2 */
stx %g2, [%g3] /* DRAM3 */
hw_corrected_error_clear_l2esr:
/* L2ESR correctable error bits:
* 62 MEC Multiple correctable errors
* 51 LDWC L2 cache data array writeback correctable error
* 47 LDSC L2 cache data array scrub correctable error
* 45 LTC L2 cache tag array correctable error
* 42 DAC DRAM access correctable error
* 40 DRC DRAM dma access correctable error
* 38 DSC DRAM scrub correctable error
* 34 LVC VUAD correctable error
best_set_reg(0x4008a54400000000, %g1, %g2)
best_set_reg(L2ES_PA0, %g1, %g3)
retry !! Can't do much for l2c errors
sllx %g2, 4, %g2 !! index is in bits 10:4 of addr
sllx %g1, 2, %g1 !! for reading data, bit 13 of index shd be 1
ldxa [%g2]ASI_DC_TAG, %g3
ldxa [%g2+%g1]ASI_DC_DATA, %g4
or %g2, 0x8, %g2 !! read MSB 8 bytes from cache line
ldxa [%g2+%g1]ASI_DC_DATA, %g4
sllx %g2, 5, %g2 !! index is in bits 10:5 of addr for tag read
sllx %g2, 1, %g1 !! index is in bits 11:6 of addr for data read
ldxa [%g0+%g2]ASI_IC_TAG, %g3
ldxa [%g1]ASI_IC_INSTR, %g4
and %g1, 0x7, %g3 !! get stb_index
ht_hce_rd_stb_entry_data:
ldxa [%g3]ASI_STB_ACCESS, %g2
ldxa [%g3]ASI_STB_ACCESS, %g2
ht_hce_rd_stb_entry_addr:
ldxa [%g3]ASI_STB_ACCESS, %g2
ldxa [%g3]ASI_STB_ACCESS, %g2
!! The sw_recoverable_err trap is taken mostly for uncorrectable errors.
!! Most of these are due to errors on L2c returns. Can't chk much in the
!! trap handler for these.
sw_recoverable_error_handler:
setx 0xc03ffff800000000, %g1, %g2
setx 0xab00000000, %g1, %g3
ldxa [%g0]ASI_DESR, %g1 !! Also clears desr
ldxa [%g1]ASI_DFESR, %g2 !! read the DFESR and clear it
!!stxa %g0, [%g1]0x4c !! clear the dfesr
Soc_Recoverable_Sw_error_trap:
#define L2_ES_W1C_VALUE 0xc03ffff800000000
ldxa [%g0]ASI_DESR, %i5 !! Also clears desr
setx 0x3f00000000000000, %i6, %i7
setx 0x2400000000000000, %i6, %i7
setx 0x3400000000000000, %i6, %i7
setx 0x3100000000000000, %i6, %i7
setx 0x3000000000000000, %i6, %i7
setx L2_ES_W1C_VALUE, %i5, %i6
setx 0x3ffffc00000000,%i5,%i4
setx 0x20001000000000,%i5,%i6
setx 0xfe00000000000000, %i5, %i6
setx 0x8400000280, %i5, %i7
setx 0x8400000290, %i5, %i6
Soc_Corrected_Hw_error_trap:
#define L2_ES_W1C_VALUE 0xc03ffff800000000
ldxa [%g0]ASI_DESR, %i6 !! Also clears desr
setx 0x3f00000000000000, %i7, %i5
! setx 0x0400000000000000, %i7, %i4
setx 0x0900000000000000, %i7, %i4
setx 0x3ffffc00000000,%i5,%i4
setx 0x20001000000000,%i5,%i7
setx 0x1400000000,%i5,%i4
setx 0x201000000000,%i5,%i4
setx L2_ES_W1C_VALUE, %i5, %i6
setx 0xfe00000000000000, %i5, %i6
setx 0x8400000280, %i5, %i7
setx 0x8400000290, %i5, %i6
Soc_Precise_data_access_error_trap:
#define L2_ES_W1C_VALUE 0xc03ffff800000000
! setx L2_ES_W1C_VALUE, %l0, %l1
! setx L2ES_PA0, %l6, %g1
!setx 0xfe00000000000000, %l0, %g4
! setx 0x8400000280, %l3, %g5
setx 0x8400000290, %i5, %i6
!! END Of SOC Error Handlers !!
or %g1, PSTATE_IE_MASK, %g1
wrpr %g1, %pstate ! Enable interrupts
#include "spc_por_rdchk.s"