/* * ========== Copyright Header Begin ========================================== * * OpenSPARC T2 Processor File: tlu_rand5_7745150.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 * otherwise unspecified. * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. * * * ========== Copyright Header End ============================================ */ # 517 "diag.j" #define IMMU_SKIP_IF_NO_TTE #define DMMU_SKIP_IF_NO_TTE #define PORTABLE_CORE #define MAIN_PAGE_NUCLEUS_ALSO #define MAIN_PAGE_HV_ALSO #define MAIN_PAGE_VA_IS_RA_ALSO #define DISABLE_PART_LIMIT_CHECK #define MAIN_PAGE_USE_CONFIG 3 #define PART0_Z_TSB_SIZE_3 10 #define PART0_Z_PAGE_SIZE_3 1 #define PART0_NZ_TSB_SIZE_3 10 #define PART0_NZ_PAGE_SIZE_3 1 #define PART0_Z_TSB_SIZE_1 3 #define PART0_NZ_TSB_SIZE_1 3 #define PART_0_BASE 0x0 #define USER_PAGE_CUSTOM_MAP #define MAIN_BASE_TEXT_VA 0x333000000 #define MAIN_BASE_TEXT_RA 0x033000000 #define MAIN_BASE_DATA_VA 0x379400000 #define MAIN_BASE_DATA_RA 0x079400000 #define HIGHVA_HIGHNUM 0x3 #d # 543 "diag.j" #undef H_HT0_Instruction_Access_MMU_Error_0x71 #define H_HT0_Instruction_Access_MMU_Error_0x71 inst_access_mmu_error_handler #undef H_HT0_Instruction_access_error_0x0a #define H_HT0_Instruction_access_error_0x0a inst_access_error_handler #undef H_HT0_Internal_Processor_Error_0x29 #define H_HT0_Internal_Processor_Error_0x29 int_proc_err_handler #undef H_HT0_Data_Access_MMU_Error_0x72 #define H_HT0_Data_Access_MMU_Error_0x72 data_access_mmu_error_handler #undef H_HT0_Data_access_error_0x32 #define H_HT0_Data_access_error_0x32 data_access_error_handler #undef H_HT0_Hw_Corrected_Error_0x63 #define H_HT0_Hw_Corrected_Error_0x63 hw_corrected_error_handler #undef H_HT0_Sw_Recoverable_Error_0x40 #define H_HT0_Sw_Recoverable_Error_0x40 sw_recoverable_error_handler #undef H_HT0_Store_Error_0x07 #define H_HT0_Store_Error_0x07 store_error_handler #define DAE_SKIP_IF_SOCU_ERROR # 5 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #ifndef T_HANDLER_RAND4_1 #define T_HANDLER_RAND4_1 b .+16;\ sdiv %r1, %r0, %l4;nop;nop #endif #ifndef T_HANDLER_RAND7_1 #define T_HANDLER_RAND7_1 b .+28;\ pdist %f4, %f6, %f20; \ nop; nop ; nop; nop; illtrap #endif #ifndef T_HANDLER_RAND4_2 #define T_HANDLER_RAND4_2 save %i7, %g0, %i7; \ save %i7, %g0, %i7; \ restore %i7, %g0, %i7;\ restore %i7, %g0, %i7; #endif #ifndef T_HANDLER_RAND7_2 #define T_HANDLER_RAND7_2 b .+8 ;\ rdpr %pstate, %l2;\ b .+8 ;\ rdpr %tstate, %l3;\ b .+12 ;\ wrpr %l3, %r0, %tstate; nop #endif #ifndef T_HANDLER_RAND4_3 #define T_HANDLER_RAND4_3 save %i7, %g0, %i7;\ restore %i7, %g0, %i7;\ save %i7, %g0, %i7; \ restore %i7, %g0, %i7; #endif #ifndef T_HANDLER_RAND7_3 #define T_HANDLER_RAND7_3 b .+8 ;\ rdpr %tnpc, %l2;\ and %l2, 0xfc0, %l2;\ add %i7, %l2, %l2;\ stda %f16,[%i7]ASI_BLOCK_AS_IF_USER_PRIMARY ;\ b .+8 ;\ stda %f0,[%i7]ASI_BLOCK_AS_IF_USER_PRIMARY_LITTLE ; #endif #ifndef T_HANDLER_RAND4_4 #define T_HANDLER_RAND4_4 b .+4 ; b .+4; b .+4; b .+4 #endif #ifndef T_HANDLER_RAND7_4 #define T_HANDLER_RAND7_4 b .+8;\ save %i7, %g0, %i7; \ b,a .+8;\ b .+12;\ stw %i7, [%i7];\ b .-8;;\ restore %i7, %g0, %i7; #endif #ifndef T_HANDLER_RAND4_5 #define T_HANDLER_RAND4_5 ldda [%r31]ASI_NUCLEUS_QUAD_LDD, %l4;\ sdiv %l4, %l5, %l7;\ add %r31, 128, %l5;\ stda %l4, [%i7]ASI_BLOCK_PRIMARY_LITTLE; #endif #ifndef T_HANDLER_RAND7_5 #define T_HANDLER_RAND7_5 save %i7, %g0, %i7;\ rdpr %tnpc, %l2;\ wrpr %l2, %tpc;\ add %l2, 4, %l2;\ wrpr %l2, %tnpc;\ restore %i7, %g0, %i7;\ retry; #endif #ifndef T_HANDLER_RAND4_6 #define T_HANDLER_RAND4_6 ldda [%r31]ASI_BLOCK_AS_IF_USER_PRIMARY, %l2;\ rd %fprs, %l2; \ wr %l2, 0x4, %fprs ;\ stda %f0,[%r31]ASI_BLOCK_AS_IF_USER_PRIMARY_LITTLE; #endif #ifndef T_HANDLER_RAND7_6 #define T_HANDLER_RAND7_6 umul %o4, 2, %o5;\ rdpr %tnpc, %l2;\ wrpr %l2, %tpc;\ add %l2, 4, %l2;\ wrpr %l2, %tnpc;\ stw %l2, [%i7];\ retry; #endif !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #ifndef HT_HANDLER_RAND4_1 #define HT_HANDLER_RAND4_1 mov 0x80, %l3;\ b .+12;\ stxa %l3, [%l3]0x57 ;\ nop #endif #ifndef HT_HANDLER_RAND7_1 #define HT_HANDLER_RAND7_1 b .+28;\ pdist %f4, %f4, %f20;\ nop; nop ; nop; nop; illtrap #endif #ifndef HT_HANDLER_RAND4_2 #define HT_HANDLER_RAND4_2 rdpr %tstate, %l2;\ b .+12;\ wrpr %l2, 0x800, %tstate;\ nop; #endif #ifndef HT_HANDLER_RAND7_2 #define HT_HANDLER_RAND7_2 b .+8 ;\ rdhpr %hpstate, %l2;\ b .+8 ;\ rdhpr %htstate, %l3;\ b .+12 ;\ wrhpr %l3, %r0, %htstate; nop #endif #ifndef HT_HANDLER_RAND4_3 #define HT_HANDLER_RAND4_3 stxa %l4, [%r31]ASI_AS_IF_USER_PRIMARY;\ mov 0x80, %l3;\ stxa %l3, [%l3]0x5f ;\ b .+8 ;\ ldxa [%r31]ASI_AS_IF_USER_PRIMARY, %l4; #endif #ifndef HT_HANDLER_RAND7_3 #define HT_HANDLER_RAND7_3 b .+8 ;\ rdpr %tnpc, %l2;\ and %l2, 0xfc0, %l2;\ add %i7, %l2, %l2;\ stda %f16,[%i7]ASI_BLOCK_AS_IF_USER_PRIMARY ;\ b .+8 ;\ stda %f0,[%i7]ASI_BLOCK_AS_IF_USER_PRIMARY_LITTLE ; #endif #ifndef HT_HANDLER_RAND4_4 #define HT_HANDLER_RAND4_4 ldda [%i7]ASI_BLOCK_AS_IF_USER_PRIMARY_LITTLE, %l3;\ b .+12 ;\ stxa %l3, [%g0]ASI_LSU_CONTROL; nop #endif #ifndef HT_HANDLER_RAND7_4 #define HT_HANDLER_RAND7_4 rdpr %tnpc, %l3;\ and %l3, 0xff, %l3;\ sllx %l3, 26, %l3;\ ldxa [%g0]0x45, %l4;\ or %l3, %l4, %l3 ;\ stxa %l3, [%g0]0x45 ;\ nop; #endif #ifndef HT_HANDLER_RAND4_5 #define HT_HANDLER_RAND4_5 ldda [%r31]ASI_NUCLEUS_QUAD_LDD, %l4;\ sdiv %l4, %l5, %l6;\ sdiv %l3, %l6, %l7;\ stda %f32, [%r31]ASI_BLOCK_PRIMARY_LITTLE; #endif #ifndef HT_HANDLER_RAND7_5 #define HT_HANDLER_RAND7_5 save %i7, %g0, %i7;\ rdpr %tnpc, %l2;\ wrpr %l2, %tpc;\ add %l2, 4, %l2;\ wrpr %l2, %tnpc;\ restore %i7, %g0, %i7;\ retry; #endif #ifndef HT_HANDLER_RAND4_6 #define HT_HANDLER_RAND4_6 ld [%r31], %l2;\ rd %fprs, %l2; \ wr %l2, 0x4, %fprs ;\ stda %f0,[%i7]ASI_BLOCK_AS_IF_USER_PRIMARY_LITTLE; #endif #ifndef HT_HANDLER_RAND7_6 #define HT_HANDLER_RAND7_6 rdhpr %htstate, %o4;\ rdpr %tnpc, %l2;\ wrpr %l2, %tpc;\ add %l2, 4, %l2;\ wrpr %l2, %tnpc;\ wrhpr %o4, %r0, %htstate;\ retry; #endif !!!!!!!!!!!!!!!!!!!!!!!!! !! Disable trap checking #define NO_TRAPCHECK ! Enable Traps #define ENABLE_T1_Privileged_Opcode_0x11 #define ENABLE_T1_Fp_Disabled_0x20 #define ENABLE_HT0_Watchdog_Reset_0x02 #define FILL_TRAP_RETRY #define SPILL_TRAP_RETRY #define CLEAN_WIN_RETRY #define My_RED_Mode_Other_Reset #define My_RED_Mode_Other_Reset \ ba red_other_ext;\ nop;retry;nop;nop;nop;nop;nop #define H_HT0_Software_Initiated_Reset_0x04 #define SUN_H_HT0_Software_Initiated_Reset_0x04 \ setx Software_Reset_Handler, %g1, %g2 ;\ jmp %g2 ;\ nop # 198 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_T1_Clean_Window_0x24 #define SUN_H_T1_Clean_Window_0x24 \ rdpr %cleanwin, %l1;\ add %l1,1,%l1;\ wrpr %l1, %g0, %cleanwin;\ retry; nop; nop; nop; nop #define H_T1_Clean_Window_0x25 #define SUN_H_T1_Clean_Window_0x25 \ rdpr %cleanwin, %l1;\ add %l1,1,%l1;\ wrpr %l1, %g0, %cleanwin;\ retry; nop; nop; nop; nop #define H_T1_Clean_Window_0x26 #define SUN_H_T1_Clean_Window_0x26 \ rdpr %cleanwin, %l1;\ add %l1,1,%l1;\ wrpr %l1, %g0, %cleanwin;\ retry; nop; nop; nop; nop #define H_T1_Clean_Window_0x27 #define SUN_H_T1_Clean_Window_0x27 \ rdpr %cleanwin, %l1;\ add %l1,1,%l1;\ wrpr %l1, %g0, %cleanwin;\ retry; nop; nop; nop; nop # 227 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_HT0_Tag_Overflow #define My_HT0_Tag_Overflow \ HT_HANDLER_RAND7_1 ;\ done #define H_T0_Tag_Overflow #define My_T0_Tag_Overflow \ T_HANDLER_RAND7_2 ;\ done #define H_T1_Tag_Overflow_0x23 #define SUN_H_T1_Tag_Overflow_0x23 \ T_HANDLER_RAND7_3 ;\ done #define H_T0_Window_Spill_0_Normal_Trap #define SUN_H_T0_Window_Spill_0_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_1_Normal_Trap #define SUN_H_T0_Window_Spill_1_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_2_Normal_Trap #define SUN_H_T0_Window_Spill_2_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_3_Normal_Trap #define SUN_H_T0_Window_Spill_3_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_4_Normal_Trap #define SUN_H_T0_Window_Spill_4_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_5_Normal_Trap #define SUN_H_T0_Window_Spill_5_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_6_Normal_Trap #define SUN_H_T0_Window_Spill_6_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_7_Normal_Trap #define SUN_H_T0_Window_Spill_7_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_0_Other_Trap #define SUN_H_T0_Window_Spill_0_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_1_Other_Trap #define SUN_H_T0_Window_Spill_1_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_2_Other_Trap #define SUN_H_T0_Window_Spill_2_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_3_Other_Trap #define SUN_H_T0_Window_Spill_3_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_4_Other_Trap #define SUN_H_T0_Window_Spill_4_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_5_Other_Trap #define SUN_H_T0_Window_Spill_5_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_6_Other_Trap #define SUN_H_T0_Window_Spill_6_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Spill_7_Other_Trap #define SUN_H_T0_Window_Spill_7_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_0_Normal_Trap #define SUN_H_T0_Window_Fill_0_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_1_Normal_Trap #define SUN_H_T0_Window_Fill_1_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_2_Normal_Trap #define SUN_H_T0_Window_Fill_2_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_3_Normal_Trap #define SUN_H_T0_Window_Fill_3_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_4_Normal_Trap #define SUN_H_T0_Window_Fill_4_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_5_Normal_Trap #define SUN_H_T0_Window_Fill_5_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_6_Normal_Trap #define SUN_H_T0_Window_Fill_6_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_7_Normal_Trap #define SUN_H_T0_Window_Fill_7_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_0_Other_Trap #define SUN_H_T0_Window_Fill_0_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_1_Other_Trap #define SUN_H_T0_Window_Fill_1_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_2_Other_Trap #define SUN_H_T0_Window_Fill_2_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_3_Other_Trap #define SUN_H_T0_Window_Fill_3_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_4_Other_Trap #define SUN_H_T0_Window_Fill_4_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_5_Other_Trap #define SUN_H_T0_Window_Fill_5_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_6_Other_Trap #define SUN_H_T0_Window_Fill_6_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Window_Fill_7_Other_Trap #define SUN_H_T0_Window_Fill_7_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; # 339 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_T1_Window_Spill_0_Normal_Trap #define SUN_H_T1_Window_Spill_0_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_1_Normal_Trap #define SUN_H_T1_Window_Spill_1_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_2_Normal_Trap #define SUN_H_T1_Window_Spill_2_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_3_Normal_Trap #define SUN_H_T1_Window_Spill_3_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_4_Normal_Trap #define SUN_H_T1_Window_Spill_4_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_5_Normal_Trap #define SUN_H_T1_Window_Spill_5_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_6_Normal_Trap #define SUN_H_T1_Window_Spill_6_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_7_Normal_Trap #define SUN_H_T1_Window_Spill_7_Normal_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_0_Other_Trap #define SUN_H_T1_Window_Spill_0_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_1_Other_Trap #define SUN_H_T1_Window_Spill_1_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_2_Other_Trap #define SUN_H_T1_Window_Spill_2_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_3_Other_Trap #define SUN_H_T1_Window_Spill_3_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_4_Other_Trap #define SUN_H_T1_Window_Spill_4_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_5_Other_Trap #define SUN_H_T1_Window_Spill_5_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_6_Other_Trap #define SUN_H_T1_Window_Spill_6_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Spill_7_Other_Trap #define SUN_H_T1_Window_Spill_7_Other_Trap saved; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_0_Normal_Trap #define SUN_H_T1_Window_Fill_0_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_1_Normal_Trap #define SUN_H_T1_Window_Fill_1_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_2_Normal_Trap #define SUN_H_T1_Window_Fill_2_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_3_Normal_Trap #define SUN_H_T1_Window_Fill_3_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_4_Normal_Trap #define SUN_H_T1_Window_Fill_4_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_5_Normal_Trap #define SUN_H_T1_Window_Fill_5_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_6_Normal_Trap #define SUN_H_T1_Window_Fill_6_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_7_Normal_Trap #define SUN_H_T1_Window_Fill_7_Normal_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_0_Other_Trap #define SUN_H_T1_Window_Fill_0_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_1_Other_Trap #define SUN_H_T1_Window_Fill_1_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_2_Other_Trap #define SUN_H_T1_Window_Fill_2_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_3_Other_Trap #define SUN_H_T1_Window_Fill_3_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_4_Other_Trap #define SUN_H_T1_Window_Fill_4_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_5_Other_Trap #define SUN_H_T1_Window_Fill_5_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_6_Other_Trap #define SUN_H_T1_Window_Fill_6_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T1_Window_Fill_7_Other_Trap #define SUN_H_T1_Window_Fill_7_Other_Trap restored; retry; nop;nop;nop;nop;nop;nop; #define H_T0_Trap_Instruction_0 #define My_T0_Trap_Instruction_0 \ T_HANDLER_RAND7_5 ;\ done; #define H_T0_Trap_Instruction_1 #define My_T0_Trap_Instruction_1 \ T_HANDLER_RAND7_6 ;\ done; #define H_T0_Trap_Instruction_2 #define My_T0_Trap_Instruction_2 \ inc %o3;\ umul %o3, 2, %o4;\ ba 1f; \ save %i7, %g0, %i7; \ 2: done; \ nop; \ 1: ba 2b; \ restore %i7, %g0, %i7 #define H_T0_Trap_Instruction_3 #define My_T0_Trap_Instruction_3 \ save %i7, %g0, %i7 ;\ T_HANDLER_RAND4_5;\ stw %o4, [%i7];\ restore %i7, %g0, %i7 ;\ done #define H_T0_Trap_Instruction_4 #define My_T0_Trap_Instruction_4 \ T_HANDLER_RAND7_6 ;\ done; #define H_T0_Trap_Instruction_5 #define My_T0_Trap_Instruction_5 \ T_HANDLER_RAND4_5;\ done; #define H_T1_Trap_Instruction_0 #define My_T1_Trap_Instruction_0 \ inc %o4;\ umul %o4, 2, %o5;\ ba 3f; \ save %i7, %g0, %i7; \ 4: done; \ nop; \ 3: ba 4b; \ restore %i7, %g0, %i7 #define H_T1_Trap_Instruction_1 #define My_T1_Trap_Instruction_1 \ T_HANDLER_RAND7_3;\ done #define H_T1_Trap_Instruction_2 #define My_T1_Trap_Instruction_2 \ inc %o3;\ umul %o3, 2, %o4;\ ba 5f; \ save %i7, %g0, %i7; \ 6: done; \ nop; \ 5: ba 6b; \ restore %i7, %g0, %i7 #define H_T1_Trap_Instruction_3 #define My_T1_Trap_Instruction_3 \ T_HANDLER_RAND4_1;\ done; #define H_T1_Trap_Instruction_4 #define My_T1_Trap_Instruction_4 \ T_HANDLER_RAND7_1;\ done; #define H_T1_Trap_Instruction_5 #define My_T1_Trap_Instruction_5 \ T_HANDLER_RAND7_2;\ done #define H_HT0_Trap_Instruction_0 #define My_HT0_Trap_Instruction_0 \ HT_HANDLER_RAND4_1 ;\ done; #define H_HT0_Trap_Instruction_1 #define My_HT0_Trap_Instruction_1 \ HT_HANDLER_RAND4_3 ;\ done #define H_HT0_Trap_Instruction_2 #define My_HT0_Trap_Instruction_2 \ HT_HANDLER_RAND7_5 ;\ done; #define H_HT0_Trap_Instruction_3 #define My_HT0_Trap_Instruction_3 \ HT_HANDLER_RAND4_5 ;\ done #define H_HT0_Trap_Instruction_4 #define My_HT0_Trap_Instruction_4 \ HT_HANDLER_RAND7_4 ;\ done #define H_HT0_Trap_Instruction_5 #define My_HT0_Trap_Instruction_5 \ ba htrap_5_ext;\ nop; retry;\ nop; nop; nop; nop; nop #define H_HT0_Mem_Address_Not_Aligned_0x34 #define My_HT0_Mem_Address_Not_Aligned_0x34 \ HT_HANDLER_RAND4_2 ;\ done ; #define H_HT0_Illegal_instruction_0x10 #define My_HT0_Illegal_instruction_0x10 \ HT_HANDLER_RAND4_2 ;\ done; #define H_HT0_DAE_so_page_0x30 #define My_HT0_DAE_so_page_0x30 \ HT_HANDLER_RAND4_2;\ done; #define H_HT0_DAE_invalid_asi_0x14 #define SUN_H_HT0_DAE_invalid_asi_0x14 \ HT_HANDLER_RAND4_3 ;\ done #define H_HT0_DAE_privilege_violation_0x15 #define SUN_H_HT0_DAE_privilege_violation_0x15 \ HT_HANDLER_RAND4_4 ;\ done; #define H_HT0_Privileged_Action_0x37 #define My_HT0_Privileged_Action_0x37 \ done; \ nop; nop #define H_HT0_Lddf_Mem_Address_Not_Aligned_0x35 #define My_HT0_Lddf_Mem_Address_Not_Aligned_0x35 \ HT_HANDLER_RAND4_3 ;\ done #define H_HT0_Stdf_Mem_Address_Not_Aligned_0x36 #define My_HT0_Stdf_Mem_Address_Not_Aligned_0x36 \ HT_HANDLER_RAND7_1;\ done #define H_HT0_Fp_exception_ieee_754_0x21 #define My_HT0_Fp_exception_ieee_754_0x21 \ HT_HANDLER_RAND4_2 ;\ done #define H_HT0_Fp_exception_other_0x22 #define My_HT0_Fp_exception_other_0x22 \ HT_HANDLER_RAND7_2 ;\ done #define H_HT0_Division_By_Zero #define My_HT0_Division_By_Zero \ HT_HANDLER_RAND4_6;\ done #define H_T0_Division_By_Zero #define My_T0_Division_By_Zero \ T_HANDLER_RAND4_3;\ done #define H_T1_Division_By_Zero_0x28 #define My_H_T1_Division_By_Zero_0x28 \ T_HANDLER_RAND4_3;\ done #define H_T0_Division_By_Zero #define My_T0_Division_By_Zero\ T_HANDLER_RAND4_4 ;\ done #define H_T0_Fp_exception_ieee_754_0x21 #define My_T0_Fp_exception_ieee_754_0x21 \ T_HANDLER_RAND4_3 ;\ done #define H_T1_Fp_Exception_Ieee_754_0x21 #define My_H_T1_Fp_Exception_Ieee_754_0x21 \ T_HANDLER_RAND4_4 ;\ done #define H_T1_Fp_Exception_Other_0x22 #define My_H_T1_Fp_Exception_Other_0x22 \ T_HANDLER_RAND4_5 ;\ done #define H_T1_Privileged_Opcode_0x11 #define SUN_H_T1_Privileged_Opcode_0x11 \ T_HANDLER_RAND4_6 ;\ done #define H_HT0_Privileged_opcode_0x11 #define My_HT0_Privileged_opcode_0x11 \ HT_HANDLER_RAND4_1;\ done; #define H_HT0_Fp_disabled_0x20 #define My_HT0_Fp_disabled_0x20 \ mov 0x4, %l2 ;\ wr %l2, 0x0, %fprs ;\ sllx %l2, 10, %l3; \ rdpr %tstate, %l2;\ or %l2, %l3, %l2 ;\ stw %l2, [%i7];\ wrpr %l2, 0x0, %tstate;\ retry; #define H_T0_Fp_disabled_0x20 #define My_T0_Fp_disabled_0x20 \ mov 0x4, %l2 ;\ wr %l2, 0x0, %fprs ;\ sllx %l2, 10, %l3; \ rdpr %tstate, %l2;\ or %l2, %l3, %l2 ;\ wrpr %l2, 0x0, %tstate;\ retry; nop #define H_T1_Fp_Disabled_0x20 #define My_H_T1_Fp_Disabled_0x20 \ mov 0x4, %l2 ;\ wr %l2, 0x0, %fprs ;\ sllx %l2, 10, %l3; \ rdpr %tstate, %l2;\ or %l2, %l3, %l2 ;\ wrpr %l2, 0x0, %tstate;\ stw %l2, [%i7];\ retry #define H_HT0_Watchdog_Reset_0x02 #define My_HT0_Watchdog_Reset_0x02 \ ba wdog_2_ext;\ nop;retry;nop;nop;nop;nop;nop #define H_T0_Privileged_opcode_0x11 #define My_T0_Privileged_opcode_0x11 \ T_HANDLER_RAND4_4;\ done #define H_T1_Fp_exception_other_0x22 #define My_T1_Fp_exception_other_0x22 \ T_HANDLER_RAND7_3 ;\ done; #define H_T0_Fp_exception_other_0x22 #define My_T0_Fp_exception_other_0x22 \ T_HANDLER_RAND7_4;\ done #define H_HT0_Trap_Level_Zero_0x5f #define My_HT0_Trap_Level_Zero_0x5f \ not %g0, %r13; \ rdhpr %hpstate, %l3;\ jmp %r13;\ rdhpr %htstate, %l3;\ and %l3, 0xfe, %l3;\ wrhpr %l3, 0, %htstate;\ stw %r13, [%i7];\ retry #define My_Watchdog_Reset #define My_Watchdog_Reset \ ba wdog_red_ext;\ nop;retry;nop;nop;nop;nop;nop #define H_HT0_Control_Transfer_Instr_0x74 #define My_H_HT0_Control_Transfer_Instr_0x74 \ rdpr %tstate, %l3;\ mov 1, %l4;\ sllx %l4, 20, %l4;\ wrpr %l3, %l4, %tstate ;\ retry;nop; #define H_T0_Control_Transfer_Instr_0x74 #define My_H_T0_Control_Transfer_Instr_0x74 \ rdpr %tstate, %l3;\ mov 1, %l4;\ sllx %l4, 20, %l4;\ wrpr %l3, %l4, %tstate ;\ retry;nop; #define H_T1_Control_Transfer_Instr_0x74 #define My_H_T1_Control_Transfer_Instr_0x74 \ rdpr %tstate, %l3;\ mov 1, %l4;\ sllx %l4, 20, %l4;\ wrpr %l3, %l4, %tstate ;\ retry;nop; # 707 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_HT0_data_access_protection_0x6c #define SUN_H_HT0_data_access_protection_0x6c ba daccess_prot_handler; nop #define H_HT0_PA_Watchpoint_0x61 #define My_H_HT0_PA_Watchpoint_0x61 \ HT_HANDLER_RAND7_4;\ done #ifndef H_HT0_Data_access_error_0x32 #define H_HT0_Data_access_error_0x32 #define SUN_H_HT0_Data_access_error_0x32 \ done;nop #endif # 722 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_T0_VA_Watchpoint_0x62 #define My_T0_VA_Watchpoint_0x62 \ T_HANDLER_RAND7_5;\ done #define H_T1_VA_Watchpoint_0x62 #define SUN_H_T1_VA_Watchpoint_0x62 \ T_HANDLER_RAND7_3;\ done #define H_HT0_VA_Watchpoint_0x62 #define My_H_HT0_VA_Watchpoint_0x62 \ HT_HANDLER_RAND7_5;\ done #define H_HT0_Instruction_VA_Watchpoint_0x75 #define SUN_H_HT0_Instruction_VA_Watchpoint_0x75 \ done; #define H_HT0_Instruction_Breakpoint_0x76 #define SUN_H_HT0_Instruction_Breakpoint_0x76 \ rdhpr %htstate, %g1;\ wrhpr %g1, 0x400, %htstate;\ retry;nop # 748 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_HT0_Instruction_address_range_0x0d #define SUN_H_HT0_Instruction_address_range_0x0d \ HT_HANDLER_RAND4_1;\ done; #define H_HT0_Instruction_real_range_0x0e #define SUN_H_HT0_Instruction_real_range_0x0e \ HT_HANDLER_RAND4_1;\ done; #define H_HT0_mem_real_range_0x2d #define SUN_H_HT0_mem_real_range_0x2d \ HT_HANDLER_RAND4_2;\ done; # 764 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_HT0_mem_address_range_0x2e #define SUN_H_HT0_mem_address_range_0x2e \ HT_HANDLER_RAND4_3;\ done; #define H_HT0_DAE_nc_page_0x16 #define SUN_H_HT0_DAE_nc_page_0x16 \ HT_HANDLER_RAND4_4;\ done; #define H_HT0_DAE_nfo_page_0x17 #define SUN_H_HT0_DAE_nfo_page_0x17 \ HT_HANDLER_RAND4_5;\ done; # 780 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_HT0_IAE_unauth_access_0x0b #define SUN_H_HT0_IAE_unauth_access_0x0b \ HT_HANDLER_RAND7_3;\ done; # 786 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_HT0_IAE_nfo_page_0x0c #define SUN_H_HT0_IAE_nfo_page_0x0c \ HT_HANDLER_RAND7_6;\ done; # 792 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_HT0_Reserved_0x3b #define SUN_H_HT0_Reserved_0x3b \ mov 0x80, %l3;\ stxa %l3, [%l3]0x5f ;\ stxa %l3, [%l3]0x57 ;\ done; # 802 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_handlers.s" #define H_HT0_IAE_privilege_violation_0x08 #define My_HT0_IAE_privilege_violation_0x08 \ HT_HANDLER_RAND7_2;\ done; #ifndef H_HT0_Instruction_Access_MMU_Error_0x71 #define H_HT0_Instruction_Access_MMU_Error_0x71 #define SUN_H_HT0_Instruction_Access_MMU_Error_0x71 \ mov 0x80, %l3;\ stxa %l3, [%l3]0x5f ;\ stxa %l3, [%l3]0x57 ;\ retry; #endif #ifndef H_HT0_Data_Access_MMU_Error_0x72 #define H_HT0_Data_Access_MMU_Error_0x72 #define SUN_H_HT0_Data_Access_MMU_Error_0x72 \ mov 0x80, %l3;\ stxa %l3, [%l3]0x5f ;\ stxa %l3, [%l3]0x57 ;\ retry; #endif !!!!!!!!!!!!!!!!!!!!!! END of all handlers !!!!!!!!!!!!!!!!!!! # 12 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_intr_handlers.s" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! START of Interrupt Handlers !!!!!!!!!!!!!!!!! #ifndef INT_HANDLER_RAND4_1 #define INT_HANDLER_RAND4_1 retry; nop; nop; nop #endif #ifndef INT_HANDLER_RAND7_1 #define INT_HANDLER_RAND7_1 mov 0x20,%g1; mov 1, %g2;stxa %g2,[%g1]0x40 #endif #ifndef INT_HANDLER_RAND4_2 #define INT_HANDLER_RAND4_2 retry; nop; nop; nop #endif #ifndef INT_HANDLER_RAND7_2 #define INT_HANDLER_RAND7_2 mov 0x80,%g1;stxa %g0,[%g1]0x40 #endif #ifndef INT_HANDLER_RAND4_3 #define INT_HANDLER_RAND4_3 retry; nop; nop; nop #endif #ifndef INT_HANDLER_RAND7_3 #define INT_HANDLER_RAND7_3 retry; nop; nop; nop ; nop; nop; nop #endif #define H_HT0_Externally_Initiated_Reset_0x03 #define SUN_H_HT0_Externally_Initiated_Reset_0x03 \ ldxa [%g0] ASI_LSU_CTL_REG, %g1; \ set cregs_lsu_ctl_reg_r64, %g1; \ stxa %g1, [%g0] ASI_LSU_CTL_REG; \ retry;nop #define My_External_Reset \ ldxa [%g0] ASI_LSU_CTL_REG, %l5; \ set cregs_lsu_ctl_reg_r64, %l5; \ stxa %l5, [%g0] ASI_LSU_CTL_REG; \ retry;nop !!!!! SPU Interrupt Handlers #define H_HT0_Control_Word_Queue_Interrupt_0x3c #define My_HT0_Control_Word_Queue_Interrupt_0x3c \ INT_HANDLER_RAND7_1 ;\ retry ; #define H_HT0_Modular_Arithmetic_Interrupt_0x3d #define My_H_HT0_Modular_Arithmetic_Interrupt_0x3d \ INT_HANDLER_RAND7_2 ;\ retry ; # 59 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_intr_handlers.s" !!!!! HW interrupt handlers #define H_HT0_Interrupt_0x60 #define My_HT0_Interrupt_0x60 \ ldxa [%g0] ASI_SWVR_INTR_RECEIVE, %g5 ;\ ldxa [%g0] ASI_SWVR_INTR_R, %g4 ;\ ldxa [%g0] ASI_SWVR_INTR_RECEIVE, %g3 ;\ INT_HANDLER_RAND4_1 ;\ retry; !!!!! Queue interrupt handler # 72 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_intr_handlers.s" #define H_T0_Cpu_Mondo_Trap_0x7c #define My_T0_Cpu_Mondo_Trap_0x7c \ mov 0x3c8, %g3; \ ldxa [%g3] 0x25, %g5; \ mov 0x3c0, %g3; \ stxa %g5, [%g3] 0x25; \ retry; \ nop; \ nop; \ nop #define H_T0_Dev_Mondo_Trap_0x7d #define My_T0_Dev_Mondo_Trap_0x7d \ mov 0x3d8, %g3; \ ldxa [%g3] 0x25, %g5; \ mov 0x3d0, %g3; \ stxa %g5, [%g3] 0x25; \ retry; \ nop; \ nop; \ nop #define H_T0_Resumable_Error_0x7e #define My_T0_Resumable_Error_0x7e \ mov 0x3e8, %g3; \ ldxa [%g3] 0x25, %g5; \ mov 0x3e0, %g3; \ stxa %g5, [%g3] 0x25; \ retry; \ nop; \ nop; \ nop #define H_T1_Cpu_Mondo_Trap_0x7c #define My_T1_Cpu_Mondo_Trap_0x7c \ mov 0x3c8, %g3; \ ldxa [%g3] 0x25, %g5; \ mov 0x3c0, %g3; \ stxa %g5, [%g3] 0x25; \ retry; \ nop; \ nop; \ nop #define H_T1_Dev_Mondo_Trap_0x7d #define My_T1_Dev_Mondo_Trap_0x7d \ mov 0x3d8, %g3; \ ldxa [%g3] 0x25, %g5; \ mov 0x3d0, %g3; \ stxa %g5, [%g3] 0x25; \ retry; \ nop; \ nop; \ nop #define H_T1_Resumable_Error_0x7e #define My_T1_Resumable_Error_0x7e \ mov 0x3e8, %g3; \ ldxa [%g3] 0x25, %g5; \ mov 0x3e0, %g3; \ stxa %g5, [%g3] 0x25; \ retry; \ nop; \ nop; \ nop #define H_HT0_Reserved_0x7c #define SUN_H_HT0_Reserved_0x7c \ mov 0x3c8, %g3; \ ldxa [%g3] 0x25, %g5; \ mov 0x3c0, %g3; \ stxa %g5, [%g3] 0x25; \ retry; \ nop; \ nop; \ nop #define H_HT0_Reserved_0x7d #define SUN_H_HT0_Reserved_0x7d \ mov 0x3d8, %g3; \ ldxa [%g3] 0x25, %g5; \ mov 0x3d0, %g3; \ stxa %g5, [%g3] 0x25; \ retry; \ nop; \ nop; \ nop #define H_HT0_Reserved_0x7e #define SUN_H_HT0_Reserved_0x7e \ mov 0x3e8, %g3; \ ldxa [%g3] 0x25, %g5; \ mov 0x3e0, %g3; \ stxa %g5, [%g3] 0x25; \ retry; \ nop; \ nop; \ nop # 172 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_intr_handlers.s" !!!!! Hstick-match trap handler # 175 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_intr_handlers.s" #define H_T0_Reserved_0x5e #define My_T0_Reserved_0x5e \ rdhpr %hintp, %g3; \ wrhpr %g3, %g3, %hintp; \ retry; \ nop; \ nop; \ nop; \ nop; \ nop #define H_HT0_Hstick_Match_0x5e #define My_HT0_Hstick_Match_0x5e \ rdhpr %hintp, %g3; \ wrhpr %g3, %g3, %hintp; \ retry; \ nop; \ nop; \ nop; \ nop; \ nop #define H_T0_Reserved_0x5e #define My_T0_Reserved_0x5e \ rdhpr %hintp, %g3; \ wrhpr %g3, %g3, %hintp; \ retry; \ nop; \ nop; \ nop; \ nop; \ nop #define H_T1_Reserved_0x5e #define My_T1_Reserved_0x5e \ rdhpr %hintp, %g3; \ wrhpr %g3, %g3, %hintp; \ retry; \ nop; \ nop; \ nop; \ nop; \ nop # 220 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_intr_handlers.s" !!!!! SW interuupt handlers # 223 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_intr_handlers.s" #define H_T0_Interrupt_Level_14_0x4e #define My_T0_Interrupt_Level_14_0x4e \ rd %softint, %g3; \ sethi %hi(0x14000), %g3; \ or %g3, 0x1, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_1_0x41 #define My_T0_Interrupt_Level_1_0x41 \ rd %softint, %g3; \ or %g0, 0x2, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_2_0x42 #define My_T0_Interrupt_Level_2_0x42 \ rd %softint, %g3; \ or %g0, 0x4, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_3_0x43 #define My_T0_Interrupt_Level_3_0x43 \ rd %softint, %g3; \ or %g0, 0x8, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_4_0x44 #define My_T0_Interrupt_Level_4_0x44 \ rd %softint, %g3; \ or %g0, 0x10, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_5_0x45 #define My_T0_Interrupt_Level_5_0x45 \ rd %softint, %g3; \ or %g0, 0x20, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_6_0x46 #define My_T0_Interrupt_Level_6_0x46 \ rd %softint, %g3; \ or %g0, 0x40, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_7_0x47 #define My_T0_Interrupt_Level_7_0x47 \ rd %softint, %g3; \ or %g0, 0x80, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_8_0x48 #define My_T0_Interrupt_Level_8_0x48 \ rd %softint, %g3; \ or %g0, 0x100, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_9_0x49 #define My_T0_Interrupt_Level_9_0x49 \ rd %softint, %g3; \ or %g0, 0x200, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_10_0x4a #define My_T0_Interrupt_Level_10_0x4a \ rd %softint, %g3; \ or %g0, 0x400, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_11_0x4b #define My_T0_Interrupt_Level_11_0x4b \ rd %softint, %g3; \ or %g0, 0x800, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_12_0x4c #define My_T0_Interrupt_Level_12_0x4c \ rd %softint, %g3; \ sethi %hi(0x1000), %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_13_0x4d #define My_T0_Interrupt_Level_13_0x4d \ rd %softint, %g3; \ sethi %hi(0x2000), %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T0_Interrupt_Level_15_0x4f #define My_T0_Interrupt_Level_15_0x4f \ sethi %hi(0x8000), %g3; \ wr %g3, %g0, %clear_softint; \ wr %g0, %g0, %pic;\ sethi %hi(0x80040000), %g2;\ rd %pcr, %g3;\ andn %g3, %g2, %g3;\ wr %g3, %g0, %pcr;\ retry; #define H_T1_Interrupt_Level_14_0x4e #define My_T1_Interrupt_Level_14_0x4e \ rd %softint, %g3; \ sethi %hi(0x14000), %g3; \ or %g3, 0x1, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_1_0x41 #define My_T1_Interrupt_Level_1_0x41 \ rd %softint, %g3; \ or %g0, 0x2, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_2_0x42 #define My_T1_Interrupt_Level_2_0x42 \ rd %softint, %g3; \ or %g0, 0x4, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_3_0x43 #define My_T1_Interrupt_Level_3_0x43 \ rd %softint, %g3; \ or %g0, 0x8, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_4_0x44 #define My_T1_Interrupt_Level_4_0x44 \ rd %softint, %g3; \ or %g0, 0x10, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_5_0x45 #define My_T1_Interrupt_Level_5_0x45 \ rd %softint, %g3; \ or %g0, 0x20, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_6_0x46 #define My_T1_Interrupt_Level_6_0x46 \ rd %softint, %g3; \ or %g0, 0x40, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_7_0x47 #define My_T1_Interrupt_Level_7_0x47 \ rd %softint, %g3; \ or %g0, 0x80, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_8_0x48 #define My_T1_Interrupt_Level_8_0x48 \ rd %softint, %g3; \ or %g0, 0x100, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_9_0x49 #define My_T1_Interrupt_Level_9_0x49 \ rd %softint, %g3; \ or %g0, 0x200, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_10_0x4a #define My_T1_Interrupt_Level_10_0x4a \ rd %softint, %g3; \ or %g0, 0x400, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_11_0x4b #define My_T1_Interrupt_Level_11_0x4b \ rd %softint, %g3; \ or %g0, 0x800, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_12_0x4c #define My_T1_Interrupt_Level_12_0x4c \ rd %softint, %g3; \ sethi %hi(0x1000), %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_13_0x4d #define My_T1_Interrupt_Level_13_0x4d \ rd %softint, %g3; \ sethi %hi(0x2000), %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_T1_Interrupt_Level_15_0x4f #define My_T1_Interrupt_Level_15_0x4f \ sethi %hi(0x8000), %g3; \ wr %g3, %g0, %clear_softint; \ wr %g0, %g0, %pic;\ sethi %hi(0x80040000), %g2;\ rd %pcr, %g3;\ andn %g3, %g2, %g3;\ wr %g3, %g0, %pcr;\ retry; #define H_HT0_Interrupt_Level_14_0x4e #define My_HT0_Interrupt_Level_14_0x4e \ rd %softint, %g3; \ sethi %hi(0x14000), %g3; \ or %g3, 0x1, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_1_0x41 #define My_HT0_Interrupt_Level_1_0x41 \ rd %softint, %g3; \ or %g0, 0x2, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_2_0x42 #define My_HT0_Interrupt_Level_2_0x42 \ rd %softint, %g3; \ or %g0, 0x4, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_3_0x43 #define My_HT0_Interrupt_Level_3_0x43 \ rd %softint, %g3; \ or %g0, 0x8, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_4_0x44 #define My_HT0_Interrupt_Level_4_0x44 \ rd %softint, %g3; \ or %g0, 0x10, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_5_0x45 #define My_HT0_Interrupt_Level_5_0x45 \ rd %softint, %g3; \ or %g0, 0x20, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_6_0x46 #define My_HT0_Interrupt_Level_6_0x46 \ rd %softint, %g3; \ or %g0, 0x40, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_7_0x47 #define My_HT0_Interrupt_Level_7_0x47 \ rd %softint, %g3; \ or %g0, 0x80, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_8_0x48 #define My_HT0_Interrupt_Level_8_0x48 \ rd %softint, %g3; \ or %g0, 0x100, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_9_0x49 #define My_HT0_Interrupt_Level_9_0x49 \ rd %softint, %g3; \ or %g0, 0x200, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_10_0x4a #define My_HT0_Interrupt_Level_10_0x4a \ rd %softint, %g3; \ or %g0, 0x400, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_11_0x4b #define My_HT0_Interrupt_Level_11_0x4b \ rd %softint, %g3; \ or %g0, 0x800, %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_12_0x4c #define My_HT0_Interrupt_Level_12_0x4c \ rd %softint, %g3; \ sethi %hi(0x1000), %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_13_0x4d #define My_HT0_Interrupt_Level_13_0x4d \ rd %softint, %g3; \ sethi %hi(0x2000), %g3; \ wr %g3, %g0, %clear_softint; \ retry; \ nop; \ nop; \ nop; \ nop #define H_HT0_Interrupt_Level_15_0x4f #define My_HT0_Interrupt_Level_15_0x4f \ sethi %hi(0x8000), %g3; \ wr %g3, %g0, %clear_softint; \ wr %g0, %g0, %pic;\ sethi %hi(0x80040000), %g2;\ rd %pcr, %g3;\ andn %g3, %g2, %g3;\ wr %g3, %g0, %pcr;\ retry; # 710 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_intr_handlers.s" !!!!!!!!!!!!!!!!!!!!!! END of all handlers !!!!!!!!!!!!!!!!!!! # 565 "diag.j" !# Steer towards main TBA on these errors .. !# These are redefines ... #undef SUN_H_HT0_DAE_nc_page_0x16 #define SUN_H_HT0_DAE_nc_page_0x16 \ best_set_reg(0x120000, %r1, %r2);\ wrpr %r0, %r2, %tba; \ done;nop #undef SUN_H_HT0_DAE_nfo_page_0x17 #define SUN_H_HT0_DAE_nfo_page_0x17 \ best_set_reg(0x120000, %r1, %r2);\ wrpr %r0, %r2, %tba; \ done;nop #undef SUN_H_HT0_IAE_unauth_access_0x0b #define SUN_H_HT0_IAE_unauth_access_0x0b \ set resolve_bad_tte, %g3;\ jmp %g3;\ nop #undef My_HT0_IAE_privilege_violation_0x08 #define My_HT0_IAE_privilege_violation_0x08 \ set resolve_bad_tte, %g3;\ jmp %g3;\ nop #define H_HT0_Instruction_address_range_0x0d #define SUN_H_HT0_Instruction_address_range_0x0d \ rdpr %tpc, %g1;\ rdpr %tnpc, %g2;\ stw %g1, [%i7];\ stw %g2, [%i7+4];\ jmpl %r27+8, %r27;\ fdivd %f0, %f4, %f4;\ nop; #define H_HT0_Instruction_real_range_0x0e #define SUN_H_HT0_Instruction_real_range_0x0e \ rdpr %tpc, %g1;\ rdpr %tnpc, %g2;\ stw %g1, [%i7];\ stw %g2, [%i7+4];\ jmpl %r27+8, %r27;\ fdivd %f0, %f4, %f4;\ nop; #undef SUN_H_HT0_IAE_nfo_page_0x0c #define SUN_H_HT0_IAE_nfo_page_0x0c \ set resolve_bad_tte, %g3;\ jmp %g3;\ nop #define H_HT0_Instruction_Invalid_TSB_Entry_0x2a #define SUN_H_HT0_Instruction_Invalid_TSB_Entry_0x2a \ set restore_range_regs, %g3;\ jmp %g3;\ nop #define H_HT0_Data_Invalid_TSB_Entry_0x2b #define SUN_H_HT0_Data_Invalid_TSB_Entry_0x2b \ set restore_range_regs, %g3;\ jmp %g3;\ nop #undef FAST_BOOT #include "hboot.s" #ifndef MULTIPASS #define MULTIPASS 0 #endif # 637 "diag.j" #define LOMEIN_TEXT_VA [0x]mpeval(MAIN_BASE_TEXT_VA&0xffffffff,16) #define LOMEIN_DATA_VA [0x]mpeval(MAIN_BASE_DATA_VA&0xffffffff,16) changequote([, ])dnl SECTION .LOMEIN TEXT_VA=LOMEIN_TEXT_VA, DATA_VA=LOMEIN_DATA_VA attr_text { Name = .LOMEIN, VA= LOMEIN_TEXT_VA, RA= MAIN_BASE_TEXT_RA, PA= ra2pa2(MAIN_BASE_TEXT_RA, 0), part_0_ctx_nonzero_tsb_config_1, part_0_ctx_zero_tsb_config_1, TTE_G=1, TTE_Context=0x44, TTE_V=1, TTE_Size=0, TTE_NFO=0, TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0, TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=1, TTE_X=1, tsbonly } attr_data { Name = .LOMEIN, VA= LOMEIN_DATA_VA, RA= MAIN_BASE_DATA_RA, PA= ra2pa2(MAIN_BASE_DATA_RA, 0), part_0_ctx_nonzero_tsb_config_2, part_0_ctx_zero_tsb_config_2 TTE_G=1, TTE_Context=0x44, TTE_V=1, TTE_Size=0, TTE_NFO=0, TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0, TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=1, TTE_X=0, tsbonly } attr_data { Name = .LOMEIN, VA= LOMEIN_DATA_VA, RA= MAIN_BASE_DATA_RA, PA= ra2pa2(MAIN_BASE_DATA_RA, 0), part_0_ctx_nonzero_tsb_config_3, part_0_ctx_zero_tsb_config_3 TTE_G=1, TTE_Context=0x55, TTE_V=1, TTE_Size=0, TTE_NFO=0, TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0, TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=1, TTE_X=0, tsbonly } .text .align 0x100000 nop .data .word 0x0 SECTION .MAIN TEXT_VA=MAIN_BASE_TEXT_VA, DATA_VA=MAIN_BASE_DATA_VA attr_text { Name = .MAIN, VA=MAIN_BASE_TEXT_VA, RA= LOMEIN_TEXT_VA, PA= LOMEIN_TEXT_VA, part_0_ctx_nonzero_tsb_config_2, part_0_ctx_zero_tsb_config_2, TTE_G=1, TTE_Context=0x44, TTE_V=1, TTE_Size=0, TTE_NFO=0, TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0, TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=1, TTE_X=1, } attr_data { Name = .MAIN, VA=MAIN_BASE_DATA_VA RA= LOMEIN_DATA_VA, PA= LOMEIN_DATA_VA, part_0_ctx_nonzero_tsb_config_1, part_0_ctx_zero_tsb_config_1 TTE_G=1, TTE_Context=0x44, TTE_V=1, TTE_Size=0, TTE_NFO=0, TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0, TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=1, TTE_X=0, } attr_data { Name = .MAIN, VA=MAIN_BASE_DATA_VA RA= LOMEIN_DATA_VA, PA= LOMEIN_DATA_VA, part_0_ctx_nonzero_tsb_config_3, part_0_ctx_zero_tsb_config_3 TTE_G=1, TTE_Context=0x55, TTE_V=1, TTE_Size=0, TTE_NFO=0, TTE_IE=0, TTE_Soft2=0, TTE_Diag=0, TTE_Soft=0, TTE_L=0, TTE_CP=1, TTE_CV=0, TTE_E=0, TTE_P=0, TTE_W=1, TTE_X=0, tsbonly } attr_text { Name = .MAIN, VA=MAIN_BASE_TEXT_VA, hypervisor } attr_data { Name = .MAIN, VA=MAIN_BASE_DATA_VA hypervisor } changequote(`,')dnl' .text .global main main: ! Set up ld/st area per thread ta T_CHANGE_HPRIV ldxa [%g0]0x63, %o2 and %o2, 0x7, %o1 brnz %o1, init_start mov 0xff, %r10 lock_sync_thds: set sync_thr_counter4, %r23 #ifndef SPC and %o2, 0x38, %o2 add %o2,%r23,%r23 !Core's sync counter #endif st %r10, [%r23] !lock sync_thr_counter4 add %r23, 64, %r23 st %r10, [%r23] !lock sync_thr_counter5 add %r23, 64, %r23 st %r10, [%r23] !lock sync_thr_counter6 init_start: ta T_CHANGE_NONHPRIV umul %r9, 256, %r31 setx user_data_start, %r1, %r3 add %r31, %r3, %r31 wr %r0, 0x4, %asi !Initializing integer registers ldx [%r31+0], %r0 ldx [%r31+8], %r1 ldx [%r31+16], %r2 ldx [%r31+24], %r3 ldx [%r31+32], %r4 ldx [%r31+40], %r5 ldx [%r31+48], %r6 ldx [%r31+56], %r7 ldx [%r31+64], %r8 ldx [%r31+72], %r9 ldx [%r31+80], %r10 ldx [%r31+88], %r11 ldx [%r31+96], %r12 ldx [%r31+104], %r13 ldx [%r31+112], %r14 mov %r31, %r15 ldx [%r31+128], %r16 ldx [%r31+136], %r17 ldx [%r31+144], %r18 ldx [%r31+152], %r19 ldx [%r31+160], %r20 ldx [%r31+168], %r21 ldx [%r31+176], %r22 ldx [%r31+184], %r23 ldx [%r31+192], %r24 ldx [%r31+200], %r25 ldx [%r31+208], %r26 ldx [%r31+216], %r27 ldx [%r31+224], %r28 ldx [%r31+232], %r29 mov 0x35, %r14 mov 0xb3, %r30 save %r31, %r0, %r31 ldx [%r31+0], %r0 ldx [%r31+8], %r1 ldx [%r31+16], %r2 ldx [%r31+24], %r3 ldx [%r31+32], %r4 ldx [%r31+40], %r5 ldx [%r31+48], %r6 ldx [%r31+56], %r7 ldx [%r31+64], %r8 ldx [%r31+72], %r9 ldx [%r31+80], %r10 ldx [%r31+88], %r11 ldx [%r31+96], %r12 ldx [%r31+104], %r13 ldx [%r31+112], %r14 mov %r31, %r15 ldx [%r31+128], %r16 ldx [%r31+136], %r17 ldx [%r31+144], %r18 ldx [%r31+152], %r19 ldx [%r31+160], %r20 ldx [%r31+168], %r21 ldx [%r31+176], %r22 ldx [%r31+184], %r23 ldx [%r31+192], %r24 ldx [%r31+200], %r25 ldx [%r31+208], %r26 ldx [%r31+216], %r27 ldx [%r31+224], %r28 ldx [%r31+232], %r29 mov 0xb4, %r14 mov 0xb3, %r30 save %r31, %r0, %r31 ldx [%r31+0], %r0 ldx [%r31+8], %r1 ldx [%r31+16], %r2 ldx [%r31+24], %r3 ldx [%r31+32], %r4 ldx [%r31+40], %r5 ldx [%r31+48], %r6 ldx [%r31+56], %r7 ldx [%r31+64], %r8 ldx [%r31+72], %r9 ldx [%r31+80], %r10 ldx [%r31+88], %r11 ldx [%r31+96], %r12 ldx [%r31+104], %r13 ldx [%r31+112], %r14 mov %r31, %r15 ldx [%r31+128], %r16 ldx [%r31+136], %r17 ldx [%r31+144], %r18 ldx [%r31+152], %r19 ldx [%r31+160], %r20 ldx [%r31+168], %r21 ldx [%r31+176], %r22 ldx [%r31+184], %r23 ldx [%r31+192], %r24 ldx [%r31+200], %r25 ldx [%r31+208], %r26 ldx [%r31+216], %r27 ldx [%r31+224], %r28 ldx [%r31+232], %r29 mov 0x32, %r14 mov 0x34, %r30 save %r31, %r0, %r31 ldx [%r31+0], %r0 ldx [%r31+8], %r1 ldx [%r31+16], %r2 ldx [%r31+24], %r3 ldx [%r31+32], %r4 ldx [%r31+40], %r5 ldx [%r31+48], %r6 ldx [%r31+56], %r7 ldx [%r31+64], %r8 ldx [%r31+72], %r9 ldx [%r31+80], %r10 ldx [%r31+88], %r11 ldx [%r31+96], %r12 ldx [%r31+104], %r13 ldx [%r31+112], %r14 mov %r31, %r15 ldx [%r31+128], %r16 ldx [%r31+136], %r17 ldx [%r31+144], %r18 ldx [%r31+152], %r19 ldx [%r31+160], %r20 ldx [%r31+168], %r21 ldx [%r31+176], %r22 ldx [%r31+184], %r23 ldx [%r31+192], %r24 ldx [%r31+200], %r25 ldx [%r31+208], %r26 ldx [%r31+216], %r27 ldx [%r31+224], %r28 ldx [%r31+232], %r29 mov 0xb5, %r14 mov 0xb3, %r30 save %r31, %r0, %r31 ldx [%r31+0], %r0 ldx [%r31+8], %r1 ldx [%r31+16], %r2 ldx [%r31+24], %r3 ldx [%r31+32], %r4 ldx [%r31+40], %r5 ldx [%r31+48], %r6 ldx [%r31+56], %r7 ldx [%r31+64], %r8 ldx [%r31+72], %r9 ldx [%r31+80], %r10 ldx [%r31+88], %r11 ldx [%r31+96], %r12 ldx [%r31+104], %r13 ldx [%r31+112], %r14 mov %r31, %r15 ldx [%r31+128], %r16 ldx [%r31+136], %r17 ldx [%r31+144], %r18 ldx [%r31+152], %r19 ldx [%r31+160], %r20 ldx [%r31+168], %r21 ldx [%r31+176], %r22 ldx [%r31+184], %r23 ldx [%r31+192], %r24 ldx [%r31+200], %r25 ldx [%r31+208], %r26 ldx [%r31+216], %r27 ldx [%r31+224], %r28 ldx [%r31+232], %r29 mov 0xb1, %r14 mov 0x32, %r30 save %r31, %r0, %r31 ldx [%r31+0], %r0 ldx [%r31+8], %r1 ldx [%r31+16], %r2 ldx [%r31+24], %r3 ldx [%r31+32], %r4 ldx [%r31+40], %r5 ldx [%r31+48], %r6 ldx [%r31+56], %r7 ldx [%r31+64], %r8 ldx [%r31+72], %r9 ldx [%r31+80], %r10 ldx [%r31+88], %r11 ldx [%r31+96], %r12 ldx [%r31+104], %r13 ldx [%r31+112], %r14 mov %r31, %r15 ldx [%r31+128], %r16 ldx [%r31+136], %r17 ldx [%r31+144], %r18 ldx [%r31+152], %r19 ldx [%r31+160], %r20 ldx [%r31+168], %r21 ldx [%r31+176], %r22 ldx [%r31+184], %r23 ldx [%r31+192], %r24 ldx [%r31+200], %r25 ldx [%r31+208], %r26 ldx [%r31+216], %r27 ldx [%r31+224], %r28 ldx [%r31+232], %r29 mov 0xb3, %r14 mov 0x35, %r30 save %r31, %r0, %r31 ldx [%r31+0], %r0 ldx [%r31+8], %r1 ldx [%r31+16], %r2 ldx [%r31+24], %r3 ldx [%r31+32], %r4 ldx [%r31+40], %r5 ldx [%r31+48], %r6 ldx [%r31+56], %r7 ldx [%r31+64], %r8 ldx [%r31+72], %r9 ldx [%r31+80], %r10 ldx [%r31+88], %r11 ldx [%r31+96], %r12 ldx [%r31+104], %r13 ldx [%r31+112], %r14 mov %r31, %r15 ldx [%r31+128], %r16 ldx [%r31+136], %r17 ldx [%r31+144], %r18 ldx [%r31+152], %r19 ldx [%r31+160], %r20 ldx [%r31+168], %r21 ldx [%r31+176], %r22 ldx [%r31+184], %r23 ldx [%r31+192], %r24 ldx [%r31+200], %r25 ldx [%r31+208], %r26 ldx [%r31+216], %r27 ldx [%r31+224], %r28 ldx [%r31+232], %r29 mov 0xb1, %r14 mov 0x32, %r30 save %r31, %r0, %r31 restore restore restore !Initializing float registers ldd [%r31+0], %f0 ldd [%r31+16], %f2 ldd [%r31+32], %f4 ldd [%r31+48], %f6 ldd [%r31+64], %f8 ldd [%r31+80], %f10 ldd [%r31+96], %f12 ldd [%r31+112], %f14 ldd [%r31+128], %f16 ldd [%r31+144], %f18 ldd [%r31+160], %f20 ldd [%r31+176], %f22 ldd [%r31+192], %f24 ldd [%r31+208], %f26 ldd [%r31+224], %f28 ldd [%r31+240], %f30 !! Set TPC/TNPC to diag-finish in case we get to a strange TL .. ta T_CHANGE_HPRIV setx diag_finish, %r29, %r28 add %r28, 4, %r29 wrpr %g0, 1, %tl wrpr %r28, %tpc wrpr %r29, %tnpc wrpr %g0, 2, %tl wrpr %r28, %tpc wrpr %r29, %tnpc wrpr %g0, 3, %tl wrpr %r28, %tpc wrpr %r29, %tnpc wrpr %g0, 4, %tl wrpr %r28, %tpc wrpr %r29, %tnpc wrpr %g0, 5, %tl wrpr %r28, %tpc wrpr %r29, %tnpc wrpr %g0, 6, %tl wrpr %r28, %tpc wrpr %r29, %tnpc wrpr %g0, 0, %tl !Initializing Tick Cmprs mov 1, %g2 sllx %g2, 63, %g2 or %g1, %g2, %g1 wrhpr %g1, %g0, %hsys_tick_cmpr wr %g1, %g0, %tick_cmpr wr %g1, %g0, %sys_tick_cmpr #if (MULTIPASS > 0) mov 0x38, %g1 stxa %r0, [%g1]ASI_SCRATCHPAD #endif ! Set up fpr PMU traps set 0x1af0ccff, %g2 b fork_threads wr %g2, %g0, %pcr common_target: nop sub %r27, 8, %r27 and %r27, 8, %r12 mov HIGHVA_HIGHNUM, %r11 sllx %r11, 32, %r11 or %r27, %r11, %r27 brz,a %r12, .+8 lduw [%r27], %r12 ! load jmp dest into dcache - xinval jmp %r27 .word 0x9f802b92 ! 1: SIR sir 0x0b92 nop jmp %r27 nop fork_threads: rd %tick, %r17 mov 0x40, %g1 setup_hwtw_config: stxa %r17, [%g1]0x58 ta %icc, T_RD_THID ! fork: source strm = 0xffffffffffffffff; target strm = 0x1 cmp %o1, 0 setx fork_lbl_0_1, %g2, %g3 be,a .+8 jmp %g3 nop ! fork: source strm = 0xffffffffffffffff; target strm = 0x2 cmp %o1, 1 setx fork_lbl_0_2, %g2, %g3 be,a .+8 jmp %g3 nop ! fork: source strm = 0xffffffffffffffff; target strm = 0x4 cmp %o1, 2 setx fork_lbl_0_3, %g2, %g3 be,a .+8 jmp %g3 nop ! fork: source strm = 0xffffffffffffffff; target strm = 0x8 cmp %o1, 3 setx fork_lbl_0_4, %g2, %g3 be,a .+8 jmp %g3 nop ! fork: source strm = 0xffffffffffffffff; target strm = 0x10 cmp %o1, 4 setx fork_lbl_0_5, %g2, %g3 be,a .+8 jmp %g3 nop ! fork: source strm = 0xffffffffffffffff; target strm = 0x20 cmp %o1, 5 setx fork_lbl_0_6, %g2, %g3 be,a .+8 jmp %g3 nop ! fork: source strm = 0xffffffffffffffff; target strm = 0x40 cmp %o1, 6 setx fork_lbl_0_7, %g2, %g3 be,a .+8 jmp %g3 nop ! fork: source strm = 0xffffffffffffffff; target strm = 0x80 cmp %o1, 7 setx fork_lbl_0_8, %g2, %g3 be,a .+8 jmp %g3 nop .text setx join_lbl_0_0, %g1, %g2 jmp %g2 nop .text setx join_lbl_0_0, %g1, %g2 jmp %g2 nop fork_lbl_0_8: ta T_CHANGE_NONHPRIV ibp_80_1: nop .word 0xc1bfe160 ! 1: STDFA_I stda %f0, [0x0160, %r31] splash_cmpr_80_2: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 .word 0xb3800011 ! 2: WR_STICK_CMPR_REG_R wr %r0, %r17, %- mondo_80_3: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r3, [%r0+0x3c8] %asi .word 0x9d94c010 ! 3: WRPR_WSTATE_R wrpr %r19, %r16, %wstate .word 0xe19fe0e0 ! 4: LDDFA_I ldda [%r31, 0x00e0], %f16 nop ta T_CHANGE_HPRIV mov 0x80+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_80_4 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_80_4 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610090, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_80_4: ta T_CHANGE_NONHPRIV .word 0x91414000 ! 5: RDPC rd %pc, %r8 nop ta T_CHANGE_HPRIV ! macro donret_80_5: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_5-donret_80_5), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x006fc000 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xd8b, %htstate ta T_CHANGE_NONPRIV ! rand=0 (80) ldx [%r11+%r0], %g1 done donretarg_80_5: .word 0x8d903e65 ! 6: WRPR_PSTATE_I wrpr %r0, 0x1e65, %pstate .word 0xe937e1da ! 7: STQF_I - %f20, [0x01da, %r31] jmptr_80_6: nop best_set_reg(0xe0a00000, %r20, %r27) .word 0xb7c6c000 ! 8: JMPL_R jmpl %r27 + %r0, %r27 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_80_7: .word 0x39400001 ! 9: FBPUGE fbuge,a,pn %fcc0, .word 0x9f803b76 ! 10: SIR sir 0x1b76 .word 0x8d802000 ! 11: WRFPRS_I wr %r0, 0x0000, %fprs trapasi_80_8: nop mov 0x8, %r1 ! (VA for ASI 0x48) .word 0xe8884900 ! 12: LDUBA_R lduba [%r1, %r0] 0x48, %r20 .word 0xe81fe100 ! 13: LDD_I ldd [%r31 + 0x0100], %r20 .word 0x22ca0001 ! 1: BRZ brz,a,pt %r8, .word 0x8d903cc4 ! 14: WRPR_PSTATE_I wrpr %r0, 0x1cc4, %pstate nop ta T_CHANGE_HPRIV mov 0x80+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_80_10 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_80_10 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610020, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_80_10: ta T_CHANGE_NONHPRIV .word 0xa1414000 ! 15: RDPC rd %pc, %r16 brcommon2_80_11: nop setx common_target, %r12, %r27 ba,a .+12 .word 0xa5a449c6 ! 1: FDIVd fdivd %f48, %f6, %f18 ba,a .+8 jmpl %r27+0, %r27 .word 0xe1bfdb60 ! 16: STDFA_R stda %f16, [%r0, %r31] jmptr_80_12: nop best_set_reg(0xe0a00000, %r20, %r27) .word 0xb7c6c000 ! 17: JMPL_R jmpl %r27 + %r0, %r27 mondo_80_13: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r10, [%r0+0x3d0] %asi .word 0x9d940012 ! 18: WRPR_WSTATE_R wrpr %r16, %r18, %wstate mondo_80_14: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r8, [%r0+0x3c0] %asi .word 0x9d94c003 ! 19: WRPR_WSTATE_R wrpr %r19, %r3, %wstate splash_cmpr_80_15: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x80, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 20: WR_TICK_CMPR_REG_R wr %r0, %r17, %- #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_80_16) + 56, 16, 16)) -> intp(3,0,7,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_80_16)&0xffffffff) + 40, 16, 16)) -> intp(1,0,31,,,,,1) #else set 0x3b80cfc7, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_80_16: .word 0x39400001 ! 21: FBPUGE fbuge,a,pn %fcc0, .word 0x81da4011 ! 22: FLUSH_R flush %r9, %r17, %r0 .word 0x3f400001 ! 1: FBPO fbo,a,pn %fcc0, .word 0x8d903c64 ! 23: WRPR_PSTATE_I wrpr %r0, 0x1c64, %pstate .word 0x8f902001 ! 1: WRPR_TL_I wrpr %r0, 0x0001, %tl reduce_priv_lvl_80_18: ta T_CHANGE_NONHPRIV ! macro mondo_80_19: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r12, [%r0+0x3d0] %asi .word 0x9d940006 ! 25: WRPR_WSTATE_R wrpr %r16, %r6, %wstate .word 0x81510000 ! 26: RDPR_TICK rdpr %tick, %r0 .word 0x879c273e ! 27: WRHPR_HINTP_I wrhpr %r16, 0x073e, %hintp fpinit_80_20: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x87a80a44 ! 28: FCMPd fcmpd %fcc, %f0, %f4 mondo_80_21: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r20, [%r0+0x3d8] %asi .word 0x9d94c002 ! 29: WRPR_WSTATE_R wrpr %r19, %r2, %wstate splash_hpstate_80_22: .word 0x819835ef ! 30: WRHPR_HPSTATE_I wrhpr %r0, 0x15ef, %hpstate splash_tba_80_23: nop ta T_CHANGE_PRIV setx 0x00000000003a0000, %r11, %r12 .word 0x8b90000c ! 31: WRPR_TBA_R wrpr %r0, %r12, %tba trapasi_80_24: nop mov 0x8, %r1 ! (VA for ASI 0x4a) .word 0xe8d04940 ! 32: LDSHA_R ldsha [%r1, %r0] 0x4a, %r20 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_80_25: .word 0x39400001 ! 33: FBPUGE fbuge,a,pn %fcc0, nop ta T_CHANGE_HPRIV mov 0x80, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_80_26 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00061fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_80_26: ta T_CHANGE_NONHPRIV .word 0xe9e7e012 ! 34: CASA_R casa [%r31] %asi, %r18, %r20 .word 0xe89fe0d0 ! 35: LDDA_I ldda [%r31, + 0x00d0] %asi, %r20 nop ta T_CHANGE_HPRIV mov 0x80, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_80_27 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00161fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_80_27: ta T_CHANGE_NONHPRIV .word 0xe9e7e010 ! 36: CASA_R casa [%r31] %asi, %r16, %r20 nop ta T_CHANGE_HPRIV ! macro donret_80_28: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_28-donret_80_28), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x002e4c00 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 29, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (80) retry donretarg_80_28: .word 0x33400001 ! 37: FBPE fbe,a,pn %fcc0, brcommon2_80_29: nop setx common_target, %r12, %r27 ba,a .+12 .word 0xa3a00543 ! 1: FSQRTd fsqrt ba,a .+8 jmpl %r27+0, %r27 .word 0xc1bfe060 ! 38: STDFA_I stda %f0, [0x0060, %r31] .word 0x91908011 ! 39: WRPR_PIL_R wrpr %r2, %r17, %pil .word 0xd877e179 ! 40: STX_I stx %r12, [%r31 + 0x0179] nop ta T_CHANGE_HPRIV mov 0x80+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_80_31 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_80_31 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610010, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_80_31: ta T_CHANGE_NONHPRIV .word 0xa1414000 ! 41: RDPC rd %pc, %r16 .word 0xe69fe160 ! 42: LDDA_I ldda [%r31, + 0x0160] %asi, %r19 nop ta T_CHANGE_HPRIV mov 0x80, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_80_33 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_80_33: ta T_CHANGE_NONHPRIV .word 0xe7e7e014 ! 43: CASA_R casa [%r31] %asi, %r20, %r19 nop ta T_CHANGE_HPRIV ! macro donret_80_34: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_34-donret_80_34+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00a48100 | (0x8a << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1365, %htstate ta T_CHANGE_NONPRIV ! rand=0 (80) retry donretarg_80_34: .word 0xe66fe0d8 ! 44: LDSTUB_I ldstub %r19, [%r31 + 0x00d8] nop mov 0x80, %g3 .word 0x21400001 ! 1: FBPN fbn,a,pn %fcc0, stxa %g3, [%g3] 0x5f .word 0xe65fc000 ! 45: LDX_R ldx [%r31 + %r0], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_80_35)+48, 16, 16)) -> intp(mask2tid(0x80),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_80_35)&0xffffffff) + 0, 16, 16)) -> intp(mask2tid(0x80),1,3,,,,,1) xir_80_35: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_80_35: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9843c0e ! 46: WR_SET_SOFTINT_I wr %r16, 0x1c0e, %set_softint iaw_80_36: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x80, %r16 iaw_startwait80_36: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_80_36 mov (~0x80&0xf0), %r16 ld [%r23], %r16 iaw_wait80_36: brnz %r16, iaw_wait80_36 ld [%r23], %r16 ba iaw_startwait80_36 mov 0x80, %r16 continue_iaw_80_36: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_80_36: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_80_36 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_80_36: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_80_36 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit80_36: mov 0x38, %r18 iaw2_80_36: rdpr %tba, %r19 mov 0x221, %r20 sllx %r20, 5, %r20 add %r20, %r19, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0xe69fe030 ! 47: LDDA_I ldda [%r31, + 0x0030] %asi, %r19 nop ta T_CHANGE_HPRIV ! macro donret_80_37: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_37-donret_80_37+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r12, %r10, %r12 ! low VA tpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00e3c700 | (16 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1e0d, %htstate ta T_CHANGE_NONPRIV ! rand=0 (80) ldx [%r11+%r0], %g1 done .align 32 donretarg_80_37: .word 0x8d90289f ! 48: WRPR_PSTATE_I wrpr %r0, 0x089f, %pstate .word 0x89800011 ! 49: WRTICK_R wr %r0, %r17, %tick iaw_80_39: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x80, %r16 iaw_startwait80_39: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_80_39 mov (~0x80&0xf0), %r16 ld [%r23], %r16 iaw_wait80_39: brnz %r16, iaw_wait80_39 ld [%r23], %r16 ba iaw_startwait80_39 mov 0x80, %r16 continue_iaw_80_39: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_80_39: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_80_39 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_80_39: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_80_39 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit80_39: mov 0x38, %r18 iaw4_80_39: setx common_target, %r20, %r19 or %r19, 0x1, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0xc19fd960 ! 50: LDDFA_R ldda [%r31, %r0], %f0 splash_lsu_80_40: nop ta T_CHANGE_HPRIV set 0x60c3cae7, %r2 mov 0x1, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 51: FBPULE fbule,a,pn %fcc0, change_to_randtl_80_41: ta T_CHANGE_HPRIV ! macro done_change_to_randtl_80_41: .word 0x8f902002 ! 52: WRPR_TL_I wrpr %r0, 0x0002, %tl .word 0xc1bfdf20 ! 53: STDFA_R stda %f0, [%r0, %r31] .word 0x89800011 ! 54: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV ! macro donret_80_43: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_43-donret_80_43+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x005e0400 | (0x88 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x49f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (80) .word 0x24800001 ! 1: BLE ble,a done .align 32 donretarg_80_43: .word 0x8d902e4d ! 55: WRPR_PSTATE_I wrpr %r0, 0x0e4d, %pstate .word 0xe64fc000 ! 56: LDSB_R ldsb [%r31 + %r0], %r19 .word 0xe71fe198 ! 57: LDDF_I ldd [%r31, 0x0198], %f19 .word 0x8780201c ! 58: WRASI_I wr %r0, 0x001c, %asi .word 0x89800011 ! 59: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV mov 0x80+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_80_45 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_80_45 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610030, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_80_45: ta T_CHANGE_NONHPRIV .word 0x93414000 ! 60: RDPC rd %pc, %r9 mondo_80_46: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r12, [%r0+0x3d8] %asi .word 0x9d940014 ! 61: WRPR_WSTATE_R wrpr %r16, %r20, %wstate .word 0x83d020b3 ! 62: Tcc_I te icc_or_xcc, %r0 + 179 splash_lsu_80_47: nop ta T_CHANGE_HPRIV set 0xb5c0c1ed, %r2 mov 0x2, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 63: FBPULE fbule,a,pn %fcc0, ibp_80_48: nop .word 0xe19fe100 ! 64: LDDFA_I ldda [%r31, 0x0100], %f16 splash_hpstate_80_49: .word 0x81982e51 ! 65: WRHPR_HPSTATE_I wrhpr %r0, 0x0e51, %hpstate .word 0x8d903d37 ! 66: WRPR_PSTATE_I wrpr %r0, 0x1d37, %pstate rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_80_51: .word 0x39400001 ! 67: FBPUGE fbuge,a,pn %fcc0, iaw_80_52: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x80, %r16 iaw_startwait80_52: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_80_52 mov (~0x80&0xf0), %r16 ld [%r23], %r16 iaw_wait80_52: brnz %r16, iaw_wait80_52 ld [%r23], %r16 ba iaw_startwait80_52 mov 0x80, %r16 continue_iaw_80_52: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_80_52: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_80_52 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_80_52: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_80_52 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit80_52: mov 0x38, %r18 iaw2_80_52: rdpr %tba, %r19 mov 0x120, %r20 sllx %r20, 5, %r20 add %r20, %r19, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0x97a449ab ! 68: FDIVs fdivs %f17, %f11, %f11 nop ta T_CHANGE_HPRIV ! macro donret_80_53: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_53-donret_80_53+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0082b200 | (32 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x629, %htstate ta T_CHANGE_NONPRIV ! rand=0 (80) ldx [%r11+%r0], %g1 done donretarg_80_53: .word 0x3f400001 ! 69: FBPO fbo,a,pn %fcc0, set 0x110a, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0x95b487d0 ! 70: PDIST pdistn %d18, %d16, %d10 .word 0x91a00172 ! 71: FABSq dis not found ibp_80_55: nop ta T_CHANGE_NONHPRIV .word 0xc19fe020 ! 72: LDDFA_I ldda [%r31, 0x0020], %f0 nop ta T_CHANGE_HPRIV ! macro donret_80_56: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_56-donret_80_56), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00c36800 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1acd, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (80) retry .align 32 donretarg_80_56: .word 0xe4ffe00d ! 73: SWAPA_I swapa %r18, [%r31 + 0x000d] %asi brcommon3_80_57: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c00c ! 1: STQF_R - %f18, [%r12, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe43fe050 ! 74: STD_I std %r18, [%r31 + 0x0050] .word 0x91948003 ! 75: WRPR_PIL_R wrpr %r18, %r3, %pil splash_cmpr_80_59: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 ta T_CHANGE_PRIV .word 0xb3800011 ! 76: WR_STICK_CMPR_REG_R wr %r0, %r17, %- splash_cmpr_80_60: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 77: WR_TICK_CMPR_REG_R wr %r0, %r17, %- .word 0x87802036 ! 78: WRASI_I wr %r0, 0x0036, %asi brcommon3_80_61: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c013 ! 1: STQF_R - %f18, [%r19, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe49fe070 ! 79: LDDA_I ldda [%r31, + 0x0070] %asi, %r18 mondo_80_62: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r20, [%r0+0x3e8] %asi .word 0x9d918010 ! 80: WRPR_WSTATE_R wrpr %r6, %r16, %wstate nop mov 0x80, %g3 stxa %g3, [%g3] 0x5f .word 0xbfefc000 ! 1: RESTORE_R restore %r31, %r0, %r31 .word 0xe45fc000 ! 81: LDX_R ldx [%r31 + %r0], %r18 set 0x39b, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0x99b487ca ! 82: PDIST pdistn %d18, %d10, %d12 .word 0xd23fc000 ! 83: STD_R std %r9, [%r31 + %r0] .word 0x97a00172 ! 84: FABSq dis not found nop ta T_CHANGE_HPRIV mov 0x80+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_80_65 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_80_65 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610010, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_80_65: ta T_CHANGE_NONHPRIV .word 0x93414000 ! 85: RDPC rd %pc, %r9 .word 0xa7450000 ! 86: RD_SET_SOFTINT rd %set_softint, %r19 brcommon1_80_66: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0x93b7c7c8 ! 1: PDIST pdistn %d62, %d8, %d40 ba,a .+8 jmpl %r27+0, %r27 .word 0x9f803153 ! 87: SIR sir 0x1153 pmu_80_67: nop setx 0xffffffbdffffffa5, %g1, %g7 .word 0xa3800007 ! 88: WR_PERF_COUNTER_R wr %r0, %r7, %- #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_80_68)+16, 16, 16)) -> intp(mask2tid(0x80),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_80_68)&0xffffffff) + 0, 16, 16)) -> intp(mask2tid(0x80),1,3,,,,,1) xir_80_68: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_80_68: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa980e169 ! 89: WR_SET_SOFTINT_I wr %r3, 0x0169, %set_softint rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_80_69: .word 0x39400001 ! 90: FBPUGE fbuge,a,pn %fcc0, fpinit_80_70: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x89b00484 ! 91: FCMPLE32 fcmple32 %d0, %d4, %r4 mondo_80_71: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r10, [%r0+0x3e0] %asi .word 0x9d948006 ! 92: WRPR_WSTATE_R wrpr %r18, %r6, %wstate .word 0x8d902ec6 ! 93: WRPR_PSTATE_I wrpr %r0, 0x0ec6, %pstate .word 0x8d802000 ! 94: WRFPRS_I wr %r0, 0x0000, %fprs nop ta T_CHANGE_HPRIV mov 0x80, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_80_73 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_80_73: ta T_CHANGE_NONHPRIV .word 0xd1e7e014 ! 95: CASA_R casa [%r31] %asi, %r20, %r8 ibp_80_74: nop ta T_CHANGE_NONHPRIV .word 0xc3ec4034 ! 96: PREFETCHA_R prefetcha [%r17, %r20] 0x01, #one_read iaw_80_75: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x80, %r16 iaw_startwait80_75: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_80_75 mov (~0x80&0xf0), %r16 ld [%r23], %r16 iaw_wait80_75: brnz %r16, iaw_wait80_75 ld [%r23], %r16 ba iaw_startwait80_75 mov 0x80, %r16 continue_iaw_80_75: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_80_75: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_80_75 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_80_75: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_80_75 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit80_75: mov 0x38, %r18 iaw1_80_75: best_set_reg(0x00000000e0a00000, %r20, %r19) or %r19, 0x1, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0xc3ea0026 ! 97: PREFETCHA_R prefetcha [%r8, %r6] 0x01, #one_read trapasi_80_76: nop mov 0x10, %r1 ! (VA for ASI 0x5a) .word 0xd8c04b40 ! 98: LDSWA_R ldswa [%r1, %r0] 0x5a, %r12 .word 0x81460000 ! 99: RD_STICK_REG stbar jmptr_80_77: nop best_set_reg(0xe1a00000, %r20, %r27) .word 0xb7c6c000 ! 100: JMPL_R jmpl %r27 + %r0, %r27 pmu_80_78: nop ta T_CHANGE_PRIV setx 0xffffffb3ffffffa8, %g1, %g7 .word 0xa3800007 ! 101: WR_PERF_COUNTER_R wr %r0, %r7, %- memptr_80_79: set 0x60540000, %r31 .word 0x85827c75 ! 102: WRCCR_I wr %r9, 0x1c75, %ccr .word 0xd8cfe038 ! 103: LDSBA_I ldsba [%r31, + 0x0038] %asi, %r12 change_to_randtl_80_80: ta T_CHANGE_PRIV ! macro done_change_to_randtl_80_80: .word 0x8f902001 ! 104: WRPR_TL_I wrpr %r0, 0x0001, %tl pmu_80_81: nop setx 0xffffffb6ffffffa8, %g1, %g7 .word 0xa3800007 ! 105: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_lsu_80_82: nop ta T_CHANGE_HPRIV set 0xbb297278, %r2 mov 0x6, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 .word 0x2c800001 ! 1: BNEG bneg,a stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 106: FBPULE fbule,a,pn %fcc0, .word 0xd8cfe198 ! 107: LDSBA_I ldsba [%r31, + 0x0198] %asi, %r12 .word 0x9f8035de ! 108: SIR sir 0x15de .word 0xd8dfe050 ! 109: LDXA_I ldxa [%r31, + 0x0050] %asi, %r12 .word 0x87802020 ! 110: WRASI_I wr %r0, 0x0020, %asi mondo_80_83: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r8, [%r0+0x3e0] %asi .word 0x9d92c010 ! 111: WRPR_WSTATE_R wrpr %r11, %r16, %wstate .word 0x81460000 ! 112: RD_STICK_REG stbar .word 0xa7a249d0 ! 113: FDIVd fdivd %f40, %f16, %f50 nop ta T_CHANGE_HPRIV mov 0x80+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_80_85 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_80_85 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100a0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_80_85: ta T_CHANGE_NONHPRIV .word 0xa1414000 ! 114: RDPC rd %pc, %r16 #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_80_86) + 0, 16, 16)) -> intp(5,0,31,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_80_86)&0xffffffff) + 40, 16, 16)) -> intp(4,0,10,,,,,1) #else set 0xdcd00210, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_80_86: .word 0x39400001 ! 115: FBPUGE fbuge,a,pn %fcc0, pmu_80_87: nop setx 0xffffffbeffffffa6, %g1, %g7 .word 0xa3800007 ! 116: WR_PERF_COUNTER_R wr %r0, %r7, %- trapasi_80_88: nop mov 0x8, %r1 ! (VA for ASI 0x49) .word 0xd8c04920 ! 117: LDSWA_R ldswa [%r1, %r0] 0x49, %r12 .word 0x99450000 ! 118: RD_SET_SOFTINT rd %set_softint, %r12 fpinit_80_89: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e83d23 ! 119: PREFETCHA_I prefetcha [%r0, + 0xfffffd23] %asi, #one_read .word 0x9f802939 ! 120: SIR sir 0x0939 nop ta T_CHANGE_HPRIV ! macro donret_80_90: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_90-donret_80_90+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0036f000 | (0x4f << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x795, %htstate ta T_CHANGE_NONPRIV ! rand=0 (80) retry .align 32 donretarg_80_90: .word 0xe66fe0f8 ! 121: LDSTUB_I ldstub %r19, [%r31 + 0x00f8] .word 0x9f80399f ! 122: SIR sir 0x199f splash_htba_80_91: nop ta T_CHANGE_HPRIV setx 0x00000000002a0000, %r11, %r12 .word 0x8b98000c ! 123: WRHPR_HTBA_R wrhpr %r0, %r12, %htba nop ta T_CHANGE_HPRIV mov 0x80+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_80_92 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_80_92 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610020, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_80_92: ta T_CHANGE_NONHPRIV .word 0x99414000 ! 124: RDPC rd %pc, %r12 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_80_93: .word 0x39400001 ! 125: FBPUGE fbuge,a,pn %fcc0, .word 0x8d802004 ! 126: WRFPRS_I wr %r0, 0x0004, %fprs iaw_80_94: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x80, %r16 iaw_startwait80_94: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_80_94 mov (~0x80&0xf0), %r16 ld [%r23], %r16 iaw_wait80_94: brnz %r16, iaw_wait80_94 ld [%r23], %r16 ba iaw_startwait80_94 mov 0x80, %r16 continue_iaw_80_94: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_80_94: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_80_94 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_80_94: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_80_94 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit80_94: mov 0x38, %r18 iaw4_80_94: setx common_target, %r20, %r19 or %r19, 0x1, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0xa5b18493 ! 127: FCMPLE32 fcmple32 %d6, %d50, %r18 iaw_80_95: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x80, %r16 iaw_startwait80_95: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_80_95 mov (~0x80&0xf0), %r16 ld [%r23], %r16 iaw_wait80_95: brnz %r16, iaw_wait80_95 ld [%r23], %r16 ba iaw_startwait80_95 mov 0x80, %r16 continue_iaw_80_95: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_80_95: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_80_95 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_80_95: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_80_95 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit80_95: mov 0x38, %r18 iaw4_80_95: setx common_target, %r20, %r19 or %r19, 0x1, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0x87ab0a53 ! 128: FCMPd fcmpd %fcc, %f12, %f50 .word 0x95b304c1 ! 129: FCMPNE32 fcmpne32 %d12, %d32, %r10 .word 0xe88008a0 ! 130: LDUWA_R lduwa [%r0, %r0] 0x45, %r20 intveclr_80_97: nop ta T_CHANGE_HPRIV setx 0x4059fee120a27300, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 131: FBPLG fblg,a,pn %fcc0, splash_hpstate_80_98: .word 0x8198240d ! 132: WRHPR_HPSTATE_I wrhpr %r0, 0x040d, %hpstate trapasi_80_99: nop mov 0x0, %r1 ! (VA for ASI 0x72) .word 0xe8c04e40 ! 133: LDSWA_R ldswa [%r1, %r0] 0x72, %r20 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_80_100)+16, 16, 16)) -> intp(mask2tid(0x80),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_80_100)&0xffffffff) + 8, 16, 16)) -> intp(mask2tid(0x80),1,3,,,,,1) xir_80_100: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_80_100: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa982a89c ! 134: WR_SET_SOFTINT_I wr %r10, 0x089c, %set_softint intveclr_80_101: nop ta T_CHANGE_HPRIV setx 0x177556e31eb326cc, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 135: FBPLG fblg,a,pn %fcc0, intveclr_80_102: nop ta T_CHANGE_HPRIV setx 0xe3a108e3d5e744e5, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 136: FBPLG fblg,a,pn %fcc0, nop ta T_CHANGE_HPRIV ! macro donret_80_103: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_103-donret_80_103), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00b85800 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1bcf, %htstate ta T_CHANGE_NONPRIV ! rand=0 (80) ldx [%r11+%r0], %g1 done donretarg_80_103: .word 0xe86fe0b4 ! 137: LDSTUB_I ldstub %r20, [%r31 + 0x00b4] ibp_80_104: nop .word 0xe19fe0c0 ! 138: LDDFA_I ldda [%r31, 0x00c0], %f16 nop ta T_CHANGE_HPRIV mov 0x80, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_80_105 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00021fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_80_105: ta T_CHANGE_NONHPRIV .word 0xe9e7e011 ! 139: CASA_R casa [%r31] %asi, %r17, %r20 splash_cmpr_80_106: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x70, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 140: WR_STICK_CMPR_REG_R wr %r0, %r17, %- iaw_80_107: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x80, %r16 iaw_startwait80_107: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_80_107 mov (~0x80&0xf0), %r16 ld [%r23], %r16 iaw_wait80_107: brnz %r16, iaw_wait80_107 ld [%r23], %r16 ba iaw_startwait80_107 mov 0x80, %r16 continue_iaw_80_107: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_80_107: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_80_107 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_80_107: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_80_107 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit80_107: mov 0x38, %r18 iaw1_80_107: best_set_reg(0x00000000e1a00000, %r20, %r19) or %r19, 0x1, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0xe89fe1f0 ! 141: LDDA_I ldda [%r31, + 0x01f0] %asi, %r20 .word 0x91d020b2 ! 142: Tcc_I ta icc_or_xcc, %r0 + 178 splash_hpstate_80_108: ta T_CHANGE_NONHPRIV .word 0x819826de ! 143: WRHPR_HPSTATE_I wrhpr %r0, 0x06de, %hpstate dvapa_80_109: nop ta T_CHANGE_HPRIV mov 0x9c7, %r20 mov 0x1e, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0x87ad0a4c ! 144: FCMPd fcmpd %fcc, %f20, %f12 .word 0x2b400001 ! 1: FBPUG fbug,a,pn %fcc0, .word 0x8d902bc9 ! 145: WRPR_PSTATE_I wrpr %r0, 0x0bc9, %pstate memptr_80_111: set user_data_start, %r31 .word 0x8581f631 ! 146: WRCCR_I wr %r7, 0x1631, %ccr ceter_80_112: nop ta T_CHANGE_HPRIV mov 7, %r17 sllx %r17, 60, %r17 mov 0x18, %r16 stxa %r17, [%r16]0x4c ta T_CHANGE_NONHPRIV .word 0xa5410000 ! 147: RDTICK rd %tick, %r18 nop ta T_CHANGE_HPRIV ! macro donret_80_113: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_113-donret_80_113+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0052b300 | (0x8b << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x100d, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (80) ldx [%r11+%r0], %g1 done donretarg_80_113: .word 0xe6ffe14d ! 148: SWAPA_I swapa %r19, [%r31 + 0x014d] %asi splash_tba_80_114: nop ta T_CHANGE_PRIV setx 0x00000000003a0000, %r11, %r12 .word 0x8b90000c ! 149: WRPR_TBA_R wrpr %r0, %r12, %tba splash_htba_80_115: nop ta T_CHANGE_HPRIV setx 0x00000000002a0000, %r11, %r12 .word 0x8b98000c ! 150: WRHPR_HTBA_R wrhpr %r0, %r12, %htba fpinit_80_116: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x87a80a44 ! 151: FCMPd fcmpd %fcc, %f0, %f4 tagged_80_117: taddcctv %r2, 0x1911, %r18 .word 0xe607e1d5 ! 152: LDUW_I lduw [%r31 + 0x01d5], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_80_118)+56, 16, 16)) -> intp(mask2tid(0x80),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_80_118)&0xffffffff) + 48, 16, 16)) -> intp(mask2tid(0x80),1,3,,,,,1) xir_80_118: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_80_118: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984b1d5 ! 153: WR_SET_SOFTINT_I wr %r18, 0x11d5, %set_softint .word 0x89800011 ! 154: WRTICK_R wr %r0, %r17, %tick mondo_80_120: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r11, [%r0+0x3d0] %asi .word 0x9d910004 ! 155: WRPR_WSTATE_R wrpr %r4, %r4, %wstate .word 0xe737c000 ! 156: STQF_R - %f19, [%r0, %r31] .word 0x87802020 ! 157: WRASI_I wr %r0, 0x0020, %asi .word 0x9a693ace ! 158: UDIVX_I udivx %r4, 0xffffface, %r13 splash_cmpr_80_121: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x70, %r17 or %r17, %r18, %r17 .word 0xb3800011 ! 159: WR_STICK_CMPR_REG_R wr %r0, %r17, %- nop ta T_CHANGE_HPRIV ! macro donret_80_122: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_80_122-donret_80_122), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00172600 | (57 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x162f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (80) ldx [%r12+%r0], %g1 retry donretarg_80_122: .word 0x93a4c9c6 ! 160: FDIVd fdivd %f50, %f6, %f40 pmu_80_123: nop setx 0xffffffb2ffffffa5, %g1, %g7 .word 0xa3800007 ! 161: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_tba_80_124: nop ta T_CHANGE_PRIV set 0x120000, %r12 .word 0x8b90000c ! 162: WRPR_TBA_R wrpr %r0, %r12, %tba mondo_80_125: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r16, [%r0+0x3d8] %asi .word 0x9d908009 ! 163: WRPR_WSTATE_R wrpr %r2, %r9, %wstate .word 0xa1902001 ! 164: WRPR_GL_I wrpr %r0, 0x0001, %- trapasi_80_126: nop mov 0x28, %r1 ! (VA for ASI 0x5b) .word 0xda884b60 ! 165: LDUBA_R lduba [%r1, %r0] 0x5b, %r13 .word 0x8d802004 ! 166: WRFPRS_I wr %r0, 0x0004, %fprs splash_tba_80_127: nop ta T_CHANGE_PRIV setx 0x00000000003a0000, %r11, %r12 .word 0x8b90000c ! 167: WRPR_TBA_R wrpr %r0, %r12, %tba invalw mov 0x34, %r30 .word 0x83d0001e ! 168: Tcc_R te icc_or_xcc, %r0 + %r30 nop ta T_CHANGE_HPRIV mov 0x80, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_80_128 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_80_128: ta T_CHANGE_NONHPRIV .word 0xdbe7e00d ! 169: CASA_R casa [%r31] %asi, %r13, %r13 .word 0x9f8020fa ! 170: SIR sir 0x00fa .word 0x8d902431 ! 171: WRPR_PSTATE_I wrpr %r0, 0x0431, %pstate ibp_80_130: nop ta T_CHANGE_NONHPRIV .word 0xc1bfe020 ! 172: STDFA_I stda %f0, [0x0020, %r31] .word 0xa46ca955 ! 173: UDIVX_I udivx %r18, 0x0955, %r18 .word 0xa9690009 ! 174: SDIVX_R sdivx %r4, %r9, %r20 dvapa_80_131: nop ta T_CHANGE_HPRIV mov 0x95c, %r20 mov 0x7, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe0dfc02d ! 175: LDXA_R ldxa [%r31, %r13] 0x01, %r16 .word 0xa7852b4e ! 176: WR_GRAPHICS_STATUS_REG_I wr %r20, 0x0b4e, %- nop ta T_CHANGE_HPRIV mov 0x80+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_80_132 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_80_132 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610060, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_80_132: ta T_CHANGE_NONHPRIV .word 0x93414000 ! 177: RDPC rd %pc, %r9 fpinit_80_133: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x8da009a4 ! 178: FDIVs fdivs %f0, %f4, %f6 splash_lsu_80_134: nop ta T_CHANGE_HPRIV set 0x902cfae4, %r2 mov 0x6, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL ta T_CHANGE_NONHPRIV .word 0x3d400001 ! 179: FBPULE fbule,a,pn %fcc0, .word 0x87802014 ! 180: WRASI_I wr %r0, 0x0014, %asi #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_80_135)+0, 16, 16)) -> intp(mask2tid(0x80),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_80_135)&0xffffffff) + 16, 16, 16)) -> intp(mask2tid(0x80),1,3,,,,,1) xir_80_135: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_80_135: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa98423bb ! 181: WR_SET_SOFTINT_I wr %r16, 0x03bb, %set_softint trapasi_80_136: nop mov 0x8, %r1 ! (VA for ASI 0x4a) .word 0xdac84940 ! 182: LDSBA_R ldsba [%r1, %r0] 0x4a, %r13 intveclr_80_137: nop ta T_CHANGE_HPRIV setx 0xd7c95357cd5464f3, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 183: FBPLG fblg,a,pn %fcc0, tagged_80_138: tsubcctv %r0, 0x16f6, %r2 .word 0xda07e0dc ! 184: LDUW_I lduw [%r31 + 0x00dc], %r13 splash_hpstate_80_139: ta T_CHANGE_NONHPRIV .word 0x3d400001 ! 1: FBPULE fbule,a,pn %fcc0, .word 0x819837df ! 185: WRHPR_HPSTATE_I wrhpr %r0, 0x17df, %hpstate .word 0xda77c000 ! 186: STX_R stx %r13, [%r31 + %r0] brcommon3_80_140: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xdb37e070 ! 1: STQF_I - %f13, [0x0070, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0x8d902744 ! 187: WRPR_PSTATE_I wrpr %r0, 0x0744, %pstate otherw mov 0x30, %r30 .word 0x91d0001e ! 188: Tcc_R ta icc_or_xcc, %r0 + %r30 ibp_80_141: nop .word 0x87ac8a42 ! 189: FCMPd fcmpd %fcc, %f18, %f2 tagged_80_142: tsubcctv %r17, 0x107c, %r16 .word 0xd807e12e ! 190: LDUW_I lduw [%r31 + 0x012e], %r12 .word 0x87802058 ! 191: WRASI_I wr %r0, 0x0058, %asi intveclr_80_143: nop ta T_CHANGE_HPRIV setx 0xcf785d1388fd1a80, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 192: FBPLG fblg,a,pn %fcc0, #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_80_144) + 48, 16, 16)) -> intp(7,0,30,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_80_144)&0xffffffff) + 16, 16, 16)) -> intp(4,0,31,,,,,1) #else set 0x49201ca0, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_80_144: .word 0x39400001 ! 193: FBPUGE fbuge,a,pn %fcc0, .word 0x87802058 ! 194: WRASI_I wr %r0, 0x0058, %asi .word 0x89800011 ! 195: WRTICK_R wr %r0, %r17, %tick dvapa_80_146: nop ta T_CHANGE_HPRIV mov 0x80c, %r20 mov 0x16, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xc19fe000 ! 196: LDDFA_I ldda [%r31, 0x0000], %f0 splash_tba_80_147: nop ta T_CHANGE_PRIV setx 0x00000000003a0000, %r11, %r12 .word 0x8b90000c ! 197: WRPR_TBA_R wrpr %r0, %r12, %tba .word 0x9ac1e377 ! 198: ADDCcc_I addccc %r7, 0x0377, %r13 pmu_80_148: nop setx 0xffffffbaffffffa2, %g1, %g7 .word 0xa3800007 ! 199: WR_PERF_COUNTER_R wr %r0, %r7, %- ibp_80_149: nop ta T_CHANGE_NONHPRIV .word 0xc1bfd960 ! 200: STDFA_R stda %f0, [%r0, %r31] nop nop ta T_CHANGE_PRIV wrpr %g0, %g0, %gl nop nop .text setx join_lbl_0_0, %g1, %g2 jmp %g2 nop fork_lbl_0_7: ta T_CHANGE_NONHPRIV ibp_40_1: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x40, %r16 ibp_startwait40_1: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_40_1 mov (~0x40&0xf0), %r16 ld [%r23], %r16 ibp_wait40_1: brnz %r16, ibp_wait40_1 ld [%r23], %r16 ba ibp_startwait40_1 mov 0x40, %r16 continue_ibp_40_1: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_40_1: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_40_1 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_40_1: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_40_1 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit40_1: best_set_reg(0x00000050f9c000be,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi .word 0xc1bfe060 ! 1: STDFA_I stda %f0, [0x0060, %r31] splash_cmpr_40_2: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x80, %r17 or %r17, %r18, %r17 .word 0xaf800011 ! 2: WR_TICK_CMPR_REG_R wr %r0, %r17, %- mondo_40_3: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r6, [%r0+0x3c8] %asi .word 0x9d930013 ! 3: WRPR_WSTATE_R wrpr %r12, %r19, %wstate .word 0xc19fe0e0 ! 4: LDDFA_I ldda [%r31, 0x00e0], %f0 nop ta T_CHANGE_HPRIV mov 0x40+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_40_4 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_40_4 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610050, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_40_4: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 5: RDPC rd %pc, %r20 nop ta T_CHANGE_HPRIV ! macro donret_40_5: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_5-donret_40_5), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x003a6a00 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1d8f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (40) ldx [%r11+%r0], %g1 done donretarg_40_5: .word 0x8d903d59 ! 6: WRPR_PSTATE_I wrpr %r0, 0x1d59, %pstate .word 0xe937e09d ! 7: STQF_I - %f20, [0x009d, %r31] jmptr_40_6: nop best_set_reg(0xe1200000, %r20, %r27) .word 0xb7c6c000 ! 8: JMPL_R jmpl %r27 + %r0, %r27 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_40_7: .word 0x39400001 ! 9: FBPUGE fbuge,a,pn %fcc0, .word 0xa9b7c490 ! 1: FCMPLE32 fcmple32 %d62, %d16, %r20 .word 0x9f80310b ! 10: SIR sir 0x110b .word 0x8d802000 ! 11: WRFPRS_I wr %r0, 0x0000, %fprs trapasi_40_8: nop mov 0x10, %r1 ! (VA for ASI 0x48) .word 0xe8d04900 ! 12: LDSHA_R ldsha [%r1, %r0] 0x48, %r20 .word 0xe81fe1e0 ! 13: LDD_I ldd [%r31 + 0x01e0], %r20 .word 0x2ac88001 ! 1: BRNZ brnz,a,pt %r2, .word 0x8d902c3b ! 14: WRPR_PSTATE_I wrpr %r0, 0x0c3b, %pstate nop ta T_CHANGE_HPRIV mov 0x40+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_40_10 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_40_10 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610010, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_40_10: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 15: RDPC rd %pc, %r20 brcommon2_40_11: nop setx common_target, %r12, %r27 ba,a .+12 .word 0x81dfc013 ! 1: FLUSH_R flush %r31, %r19, %r0 ba,a .+8 jmpl %r27+0, %r27 .word 0xc19fc2c0 ! 16: LDDFA_R ldda [%r31, %r0], %f0 jmptr_40_12: nop best_set_reg(0xe1200000, %r20, %r27) .word 0xb7c6c000 ! 17: JMPL_R jmpl %r27 + %r0, %r27 mondo_40_13: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r7, [%r0+0x3d8] %asi .word 0x9d934003 ! 18: WRPR_WSTATE_R wrpr %r13, %r3, %wstate mondo_40_14: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r20, [%r0+0x3d0] %asi .word 0x9d90c014 ! 19: WRPR_WSTATE_R wrpr %r3, %r20, %wstate splash_cmpr_40_15: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 20: WR_TICK_CMPR_REG_R wr %r0, %r17, %- #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_40_16) + 32, 16, 16)) -> intp(7,0,26,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_40_16)&0xffffffff) + 0, 16, 16)) -> intp(6,0,27,,,,,1) #else set 0xb2b07301, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_40_16: .word 0x39400001 ! 21: FBPUGE fbuge,a,pn %fcc0, .word 0x81dd0011 ! 22: FLUSH_R flush %r20, %r17, %r0 .word 0x24ca0001 ! 1: BRLEZ brlez,a,pt %r8, .word 0x8d903395 ! 23: WRPR_PSTATE_I wrpr %r0, 0x1395, %pstate .word 0x8f902001 ! 1: WRPR_TL_I wrpr %r0, 0x0001, %tl reduce_priv_lvl_40_18: ta T_CHANGE_NONHPRIV ! macro mondo_40_19: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r3, [%r0+0x3d0] %asi .word 0x9d92c012 ! 25: WRPR_WSTATE_R wrpr %r11, %r18, %wstate .word 0x81510000 ! 26: RDPR_TICK rdpr %tick, %r0 .word 0x879ce6c3 ! 27: WRHPR_HINTP_I wrhpr %r19, 0x06c3, %hintp fpinit_40_20: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x89b00484 ! 28: FCMPLE32 fcmple32 %d0, %d4, %r4 mondo_40_21: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r16, [%r0+0x3e0] %asi .word 0x9d94c010 ! 29: WRPR_WSTATE_R wrpr %r19, %r16, %wstate splash_hpstate_40_22: .word 0x81982ff5 ! 30: WRHPR_HPSTATE_I wrhpr %r0, 0x0ff5, %hpstate splash_tba_40_23: nop ta T_CHANGE_PRIV setx 0x0000000400380000, %r11, %r12 .word 0x8b90000c ! 31: WRPR_TBA_R wrpr %r0, %r12, %tba trapasi_40_24: nop mov 0x110, %r1 ! (VA for ASI 0x4a) .word 0xe8c04940 ! 32: LDSWA_R ldswa [%r1, %r0] 0x4a, %r20 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_40_25: .word 0x39400001 ! 33: FBPUGE fbuge,a,pn %fcc0, nop ta T_CHANGE_HPRIV mov 0x40, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_40_26 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_40_26: ta T_CHANGE_NONHPRIV .word 0xe9e7e008 ! 34: CASA_R casa [%r31] %asi, %r8, %r20 .word 0xe89fe000 ! 35: LDDA_I ldda [%r31, + 0x0000] %asi, %r20 nop ta T_CHANGE_HPRIV mov 0x40, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_40_27 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_40_27: ta T_CHANGE_NONHPRIV .word 0xe9e7e014 ! 36: CASA_R casa [%r31] %asi, %r20, %r20 nop ta T_CHANGE_HPRIV ! macro donret_40_28: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_28-donret_40_28), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00704000 | (20 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1d85, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (40) retry donretarg_40_28: .word 0x21400001 ! 37: FBPN fbn,a,pn %fcc0, brcommon2_40_29: nop setx common_target, %r12, %r27 ba,a .+12 .word 0xa9a7c971 ! 1: FMULq dis not found ba,a .+8 jmpl %r27+0, %r27 .word 0xe19fe1c0 ! 38: LDDFA_I ldda [%r31, 0x01c0], %f16 .word 0x91914013 ! 39: WRPR_PIL_R wrpr %r5, %r19, %pil .word 0xd877e128 ! 40: STX_I stx %r12, [%r31 + 0x0128] nop ta T_CHANGE_HPRIV mov 0x40+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_40_31 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_40_31 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610000, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_40_31: ta T_CHANGE_NONHPRIV .word 0x93414000 ! 41: RDPC rd %pc, %r9 .word 0xe7e7e010 ! 42: CASA_R casa [%r31] %asi, %r16, %r19 nop ta T_CHANGE_HPRIV mov 0x40, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_40_33 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00121fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_40_33: ta T_CHANGE_NONHPRIV .word 0xe7e7e00b ! 43: CASA_R casa [%r31] %asi, %r11, %r19 nop ta T_CHANGE_HPRIV ! macro donret_40_34: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_34-donret_40_34+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00e28900 | (28 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1458, %htstate ta T_CHANGE_NONPRIV ! rand=0 (40) retry donretarg_40_34: .word 0xe66fe125 ! 44: LDSTUB_I ldstub %r19, [%r31 + 0x0125] nop mov 0x80, %g3 .word 0x2cc90001 ! 1: BRGZ brgz,a,pt %r4, stxa %g3, [%g3] 0x5f .word 0xe65fc000 ! 45: LDX_R ldx [%r31 + %r0], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_40_35)+24, 16, 16)) -> intp(mask2tid(0x40),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_40_35)&0xffffffff) + 40, 16, 16)) -> intp(mask2tid(0x40),1,3,,,,,1) xir_40_35: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_40_35: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984ed92 ! 46: WR_SET_SOFTINT_I wr %r19, 0x0d92, %set_softint .word 0xe71fc00b ! 47: LDDF_R ldd [%r31, %r11], %f19 nop ta T_CHANGE_HPRIV ! macro donret_40_37: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_37-donret_40_37+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r12, %r10, %r12 ! low VA tpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00385300 | (4 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1dd5, %htstate ta T_CHANGE_NONPRIV ! rand=0 (40) ldx [%r11+%r0], %g1 done .align 32 donretarg_40_37: .word 0x8d9036df ! 48: WRPR_PSTATE_I wrpr %r0, 0x16df, %pstate .word 0x89800011 ! 49: WRTICK_R wr %r0, %r17, %tick .word 0xe1bfe100 ! 50: STDFA_I stda %f16, [0x0100, %r31] splash_lsu_40_40: nop ta T_CHANGE_HPRIV set 0x426c8412, %r2 mov 0x4, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 51: FBPULE fbule,a,pn %fcc0, change_to_randtl_40_41: ta T_CHANGE_HPRIV ! macro done_change_to_randtl_40_41: .word 0x8f902000 ! 52: WRPR_TL_I wrpr %r0, 0x0000, %tl .word 0xc1bfdb60 ! 53: STDFA_R stda %f0, [%r0, %r31] .word 0x89800011 ! 54: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV ! macro donret_40_43: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_43-donret_40_43+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0063af00 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xe17, %htstate ta T_CHANGE_NONPRIV ! rand=0 (40) .word 0x2e800001 ! 1: BVS bvs,a done .align 32 donretarg_40_43: .word 0x8d902c4d ! 55: WRPR_PSTATE_I wrpr %r0, 0x0c4d, %pstate .word 0xe64fc000 ! 56: LDSB_R ldsb [%r31 + %r0], %r19 .word 0xe71fe1b8 ! 57: LDDF_I ldd [%r31, 0x01b8], %f19 .word 0x87802055 ! 58: WRASI_I wr %r0, 0x0055, %asi .word 0x89800011 ! 59: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV mov 0x40+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_40_45 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_40_45 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100e0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_40_45: ta T_CHANGE_NONHPRIV .word 0x99414000 ! 60: RDPC rd %pc, %r12 mondo_40_46: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r2, [%r0+0x3e8] %asi .word 0x9d910004 ! 61: WRPR_WSTATE_R wrpr %r4, %r4, %wstate .word 0x93d020b2 ! 62: Tcc_I tne icc_or_xcc, %r0 + 178 splash_lsu_40_47: nop ta T_CHANGE_HPRIV set 0x2da82354, %r2 mov 0x4, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 63: FBPULE fbule,a,pn %fcc0, ibp_40_48: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x40, %r16 ibp_startwait40_48: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_40_48 mov (~0x40&0xf0), %r16 ld [%r23], %r16 ibp_wait40_48: brnz %r16, ibp_wait40_48 ld [%r23], %r16 ba ibp_startwait40_48 mov 0x40, %r16 continue_ibp_40_48: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_40_48: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_40_48 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_40_48: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_40_48 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit40_48: best_set_reg(0x0000004034c0be75,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi .word 0xe19fdf20 ! 64: LDDFA_R ldda [%r31, %r0], %f16 splash_hpstate_40_49: .word 0x819826c5 ! 65: WRHPR_HPSTATE_I wrhpr %r0, 0x06c5, %hpstate .word 0x8d903571 ! 66: WRPR_PSTATE_I wrpr %r0, 0x1571, %pstate rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_40_51: .word 0x39400001 ! 67: FBPUGE fbuge,a,pn %fcc0, .word 0xa370344d ! 68: POPC_I popc 0x144d, %r17 nop ta T_CHANGE_HPRIV ! macro donret_40_53: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_53-donret_40_53+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00757b00 | (0x58 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1ecd, %htstate ta T_CHANGE_NONPRIV ! rand=0 (40) ldx [%r11+%r0], %g1 done donretarg_40_53: .word 0x3b400001 ! 69: FBPLE fble,a,pn %fcc0, set 0x4a9, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0xa1b1c7d3 ! 70: PDIST pdistn %d38, %d50, %d16 .word 0x99a00173 ! 71: FABSq dis not found ibp_40_55: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x40, %r16 ibp_startwait40_55: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_40_55 mov (~0x40&0xf0), %r16 ld [%r23], %r16 ibp_wait40_55: brnz %r16, ibp_wait40_55 ld [%r23], %r16 ba ibp_startwait40_55 mov 0x40, %r16 continue_ibp_40_55: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_40_55: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_40_55 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_40_55: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_40_55 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit40_55: best_set_reg(0x00000040d4fe75e8,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi ta T_CHANGE_NONHPRIV .word 0xe1bfe1a0 ! 72: STDFA_I stda %f16, [0x01a0, %r31] nop ta T_CHANGE_HPRIV ! macro donret_40_56: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_56-donret_40_56), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00706d00 | (54 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1f04, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (40) retry .align 32 donretarg_40_56: .word 0xe4ffe17c ! 73: SWAPA_I swapa %r18, [%r31 + 0x017c] %asi brcommon3_40_57: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c00d ! 1: STQF_R - %f18, [%r13, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe51fc013 ! 74: LDDF_R ldd [%r31, %r19], %f18 .word 0x9194400c ! 75: WRPR_PIL_R wrpr %r17, %r12, %pil splash_cmpr_40_59: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 ta T_CHANGE_PRIV .word 0xaf800011 ! 76: WR_TICK_CMPR_REG_R wr %r0, %r17, %- splash_cmpr_40_60: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 77: WR_TICK_CMPR_REG_R wr %r0, %r17, %- .word 0x8780208a ! 78: WRASI_I wr %r0, 0x008a, %asi brcommon3_40_61: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c00a ! 1: STQF_R - %f18, [%r10, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe51fc012 ! 79: LDDF_R ldd [%r31, %r18], %f18 mondo_40_62: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r9, [%r0+0x3d8] %asi .word 0x9d94c010 ! 80: WRPR_WSTATE_R wrpr %r19, %r16, %wstate nop mov 0x80, %g3 stxa %g3, [%g3] 0x5f .word 0xbfe7c000 ! 1: SAVE_R save %r31, %r0, %r31 .word 0xe45fc000 ! 81: LDX_R ldx [%r31 + %r0], %r18 set 0x4d7, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0xa3b0c7c5 ! 82: PDIST pdistn %d34, %d36, %d48 .word 0xc36fe0a4 ! 83: PREFETCH_I prefetch [%r31 + 0x00a4], #one_read .word 0x91a0016a ! 84: FABSq dis not found nop ta T_CHANGE_HPRIV mov 0x40+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_40_65 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_40_65 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610070, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_40_65: ta T_CHANGE_NONHPRIV .word 0x9b414000 ! 85: RDPC rd %pc, %r13 .word 0xa7450000 ! 86: RD_SET_SOFTINT rd %set_softint, %r19 brcommon1_40_66: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0x93b7c7cd ! 1: PDIST pdistn %d62, %d44, %d40 ba,a .+8 jmpl %r27+0, %r27 .word 0x9f80251a ! 87: SIR sir 0x051a pmu_40_67: nop setx 0xffffffb8ffffffad, %g1, %g7 .word 0xa3800007 ! 88: WR_PERF_COUNTER_R wr %r0, %r7, %- #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_40_68)+56, 16, 16)) -> intp(mask2tid(0x40),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_40_68)&0xffffffff) + 56, 16, 16)) -> intp(mask2tid(0x40),1,3,,,,,1) xir_40_68: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_40_68: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9837089 ! 89: WR_SET_SOFTINT_I wr %r13, 0x1089, %set_softint rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_40_69: .word 0x39400001 ! 90: FBPUGE fbuge,a,pn %fcc0, fpinit_40_70: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x91b00484 ! 91: FCMPLE32 fcmple32 %d0, %d4, %r8 mondo_40_71: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r2, [%r0+0x3d8] %asi .word 0x9d94c009 ! 92: WRPR_WSTATE_R wrpr %r19, %r9, %wstate .word 0x8d903962 ! 93: WRPR_PSTATE_I wrpr %r0, 0x1962, %pstate .word 0x8d802000 ! 94: WRFPRS_I wr %r0, 0x0000, %fprs nop ta T_CHANGE_HPRIV mov 0x40, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_40_73 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00161fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_40_73: ta T_CHANGE_NONHPRIV .word 0xd1e7e008 ! 95: CASA_R casa [%r31] %asi, %r8, %r8 ibp_40_74: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x40, %r16 ibp_startwait40_74: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_40_74 mov (~0x40&0xf0), %r16 ld [%r23], %r16 ibp_wait40_74: brnz %r16, ibp_wait40_74 ld [%r23], %r16 ba ibp_startwait40_74 mov 0x40, %r16 continue_ibp_40_74: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_40_74: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_40_74 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_40_74: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_40_74 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit40_74: best_set_reg(0x000000401cf5e816,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi ta T_CHANGE_NONHPRIV .word 0xc3ec0031 ! 96: PREFETCHA_R prefetcha [%r16, %r17] 0x01, #one_read .word 0xc3ec8032 ! 97: PREFETCHA_R prefetcha [%r18, %r18] 0x01, #one_read trapasi_40_76: nop mov 0x20, %r1 ! (VA for ASI 0x5a) .word 0xd8904b40 ! 98: LDUHA_R lduha [%r1, %r0] 0x5a, %r12 .word 0x81460000 ! 99: RD_STICK_REG stbar jmptr_40_77: nop best_set_reg(0xe0200000, %r20, %r27) .word 0xb7c6c000 ! 100: JMPL_R jmpl %r27 + %r0, %r27 pmu_40_78: nop ta T_CHANGE_PRIV setx 0xffffffb7ffffffa4, %g1, %g7 .word 0xa3800007 ! 101: WR_PERF_COUNTER_R wr %r0, %r7, %- memptr_40_79: set 0x60540000, %r31 .word 0x8584e677 ! 102: WRCCR_I wr %r19, 0x0677, %ccr .word 0xd8cfe160 ! 103: LDSBA_I ldsba [%r31, + 0x0160] %asi, %r12 change_to_randtl_40_80: ta T_CHANGE_PRIV ! macro done_change_to_randtl_40_80: .word 0x8f902000 ! 104: WRPR_TL_I wrpr %r0, 0x0000, %tl pmu_40_81: nop setx 0xffffffb1ffffffaa, %g1, %g7 .word 0xa3800007 ! 105: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_lsu_40_82: nop ta T_CHANGE_HPRIV set 0x6e0ff372, %r2 mov 0x1, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 .word 0x27400001 ! 1: FBPUL fbul,a,pn %fcc0, stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 106: FBPULE fbule,a,pn %fcc0, .word 0xd8cfe1d8 ! 107: LDSBA_I ldsba [%r31, + 0x01d8] %asi, %r12 .word 0xc32fc00d ! 1: STXFSR_R st-sfr %f1, [%r13, %r31] .word 0x9f803e9d ! 108: SIR sir 0x1e9d .word 0xd8dfe010 ! 109: LDXA_I ldxa [%r31, + 0x0010] %asi, %r12 .word 0x87802020 ! 110: WRASI_I wr %r0, 0x0020, %asi mondo_40_83: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r1, [%r0+0x3d0] %asi .word 0x9d914013 ! 111: WRPR_WSTATE_R wrpr %r5, %r19, %wstate .word 0x81460000 ! 112: RD_STICK_REG stbar .word 0x93703d23 ! 113: POPC_I popc 0x1d23, %r9 nop ta T_CHANGE_HPRIV mov 0x40+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_40_85 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_40_85 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610040, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_40_85: ta T_CHANGE_NONHPRIV .word 0x93414000 ! 114: RDPC rd %pc, %r9 #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_40_86) + 24, 16, 16)) -> intp(6,0,5,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_40_86)&0xffffffff) + 32, 16, 16)) -> intp(3,0,2,,,,,1) #else set 0x23b08099, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_40_86: .word 0x39400001 ! 115: FBPUGE fbuge,a,pn %fcc0, pmu_40_87: nop setx 0xffffffbeffffffa7, %g1, %g7 .word 0xa3800007 ! 116: WR_PERF_COUNTER_R wr %r0, %r7, %- trapasi_40_88: nop mov 0x8, %r1 ! (VA for ASI 0x49) .word 0xd8c04920 ! 117: LDSWA_R ldswa [%r1, %r0] 0x49, %r12 .word 0x99450000 ! 118: RD_SET_SOFTINT rd %set_softint, %r12 fpinit_40_89: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x89a009a4 ! 119: FDIVs fdivs %f0, %f4, %f4 .word 0xe63fc009 ! 1: STD_R std %r19, [%r31 + %r9] .word 0x9f802174 ! 120: SIR sir 0x0174 nop ta T_CHANGE_HPRIV ! macro donret_40_90: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_90-donret_40_90+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x006e3200 | (0x8a << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xdd, %htstate ta T_CHANGE_NONPRIV ! rand=0 (40) retry .align 32 donretarg_40_90: .word 0xe66fe002 ! 121: LDSTUB_I ldstub %r19, [%r31 + 0x0002] .word 0xe63fe070 ! 1: STD_I std %r19, [%r31 + 0x0070] .word 0x9f8020e8 ! 122: SIR sir 0x00e8 splash_htba_40_91: nop ta T_CHANGE_HPRIV setx 0x0000000200280000, %r11, %r12 .word 0x8b98000c ! 123: WRHPR_HTBA_R wrhpr %r0, %r12, %htba nop ta T_CHANGE_HPRIV mov 0x40+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_40_92 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_40_92 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100c0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_40_92: ta T_CHANGE_NONHPRIV .word 0xa1414000 ! 124: RDPC rd %pc, %r16 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_40_93: .word 0x39400001 ! 125: FBPUGE fbuge,a,pn %fcc0, .word 0x8d802000 ! 126: WRFPRS_I wr %r0, 0x0000, %fprs .word 0x95b2c7c3 ! 127: PDIST pdistn %d42, %d34, %d10 .word 0x9b7022b7 ! 128: POPC_I popc 0x02b7, %r13 .word 0x87aaca47 ! 129: FCMPd fcmpd %fcc, %f42, %f38 .word 0xe8800b80 ! 130: LDUWA_R lduwa [%r0, %r0] 0x5c, %r20 intveclr_40_97: nop ta T_CHANGE_HPRIV setx 0x9680a754307362fb, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 131: FBPLG fblg,a,pn %fcc0, splash_hpstate_40_98: .word 0x81982d8d ! 132: WRHPR_HPSTATE_I wrhpr %r0, 0x0d8d, %hpstate trapasi_40_99: nop mov 0x0, %r1 ! (VA for ASI 0x72) .word 0xe8d84e40 ! 133: LDXA_R ldxa [%r1, %r0] 0x72, %r20 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_40_100)+16, 16, 16)) -> intp(mask2tid(0x40),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_40_100)&0xffffffff) + 8, 16, 16)) -> intp(mask2tid(0x40),1,3,,,,,1) xir_40_100: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_40_100: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984ae1a ! 134: WR_SET_SOFTINT_I wr %r18, 0x0e1a, %set_softint intveclr_40_101: nop ta T_CHANGE_HPRIV setx 0xd1f7122337e86681, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 135: FBPLG fblg,a,pn %fcc0, intveclr_40_102: nop ta T_CHANGE_HPRIV setx 0xd4fdfa6546cf442b, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 136: FBPLG fblg,a,pn %fcc0, nop ta T_CHANGE_HPRIV ! macro donret_40_103: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_103-donret_40_103), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00b60900 | (0x4f << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x4d5, %htstate ta T_CHANGE_NONPRIV ! rand=0 (40) ldx [%r11+%r0], %g1 done donretarg_40_103: .word 0xe86fe023 ! 137: LDSTUB_I ldstub %r20, [%r31 + 0x0023] ibp_40_104: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x40, %r16 ibp_startwait40_104: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_40_104 mov (~0x40&0xf0), %r16 ld [%r23], %r16 ibp_wait40_104: brnz %r16, ibp_wait40_104 ld [%r23], %r16 ba ibp_startwait40_104 mov 0x40, %r16 continue_ibp_40_104: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_40_104: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_40_104 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_40_104: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_40_104 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit40_104: best_set_reg(0x00000040f9e816cd,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi .word 0xc19fda00 ! 138: LDDFA_R ldda [%r31, %r0], %f0 nop ta T_CHANGE_HPRIV mov 0x40, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_40_105 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_40_105: ta T_CHANGE_NONHPRIV .word 0xe9e7e00c ! 139: CASA_R casa [%r31] %asi, %r12, %r20 splash_cmpr_40_106: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 140: WR_STICK_CMPR_REG_R wr %r0, %r17, %- .word 0xe91fe1b0 ! 141: LDDF_I ldd [%r31, 0x01b0], %f20 .word 0x93d020b3 ! 142: Tcc_I tne icc_or_xcc, %r0 + 179 splash_hpstate_40_108: ta T_CHANGE_NONHPRIV .word 0x8198340f ! 143: WRHPR_HPSTATE_I wrhpr %r0, 0x140f, %hpstate dvapa_40_109: nop ta T_CHANGE_HPRIV mov 0xfca, %r20 mov 0x1a, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xa9a0c9c6 ! 144: FDIVd fdivd %f34, %f6, %f20 .word 0x2e800001 ! 1: BVS bvs,a .word 0x8d903e97 ! 145: WRPR_PSTATE_I wrpr %r0, 0x1e97, %pstate memptr_40_111: set user_data_start, %r31 .word 0x8584bf41 ! 146: WRCCR_I wr %r18, 0x1f41, %ccr ceter_40_112: nop ta T_CHANGE_HPRIV mov 3, %r17 sllx %r17, 60, %r17 mov 0x18, %r16 stxa %r17, [%r16]0x4c ta T_CHANGE_NONHPRIV .word 0x9b410000 ! 147: RDTICK rd %tick, %r13 nop ta T_CHANGE_HPRIV ! macro donret_40_113: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_113-donret_40_113+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x000eb400 | (0x88 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xc59, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (40) ldx [%r11+%r0], %g1 done donretarg_40_113: .word 0xe6ffe090 ! 148: SWAPA_I swapa %r19, [%r31 + 0x0090] %asi splash_tba_40_114: nop ta T_CHANGE_PRIV setx 0x0000000400380000, %r11, %r12 .word 0x8b90000c ! 149: WRPR_TBA_R wrpr %r0, %r12, %tba splash_htba_40_115: nop ta T_CHANGE_HPRIV setx 0x0000000200280000, %r11, %r12 .word 0x8b98000c ! 150: WRHPR_HTBA_R wrhpr %r0, %r12, %htba fpinit_40_116: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x87a80a44 ! 151: FCMPd fcmpd %fcc, %f0, %f4 tagged_40_117: taddcctv %r7, 0x10b4, %r20 .word 0xe607e070 ! 152: LDUW_I lduw [%r31 + 0x0070], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_40_118)+48, 16, 16)) -> intp(mask2tid(0x40),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_40_118)&0xffffffff) + 56, 16, 16)) -> intp(mask2tid(0x40),1,3,,,,,1) xir_40_118: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_40_118: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa982e738 ! 153: WR_SET_SOFTINT_I wr %r11, 0x0738, %set_softint .word 0x89800011 ! 154: WRTICK_R wr %r0, %r17, %tick mondo_40_120: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r19, [%r0+0x3c0] %asi .word 0x9d940010 ! 155: WRPR_WSTATE_R wrpr %r16, %r16, %wstate .word 0xe737c000 ! 156: STQF_R - %f19, [%r0, %r31] .word 0x87802055 ! 157: WRASI_I wr %r0, 0x0055, %asi .word 0x946d254f ! 158: UDIVX_I udivx %r20, 0x054f, %r10 splash_cmpr_40_121: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 .word 0xb3800011 ! 159: WR_STICK_CMPR_REG_R wr %r0, %r17, %- nop ta T_CHANGE_HPRIV ! macro donret_40_122: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_40_122-donret_40_122), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0006d700 | (0x58 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x555, %htstate ta T_CHANGE_NONPRIV ! rand=0 (40) ldx [%r12+%r0], %g1 retry donretarg_40_122: .word 0x9ba249c5 ! 160: FDIVd fdivd %f40, %f36, %f44 pmu_40_123: nop setx 0xffffffb6ffffffa1, %g1, %g7 .word 0xa3800007 ! 161: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_tba_40_124: nop ta T_CHANGE_PRIV set 0x120000, %r12 .word 0x8b90000c ! 162: WRPR_TBA_R wrpr %r0, %r12, %tba mondo_40_125: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r16, [%r0+0x3d8] %asi .word 0x9d924011 ! 163: WRPR_WSTATE_R wrpr %r9, %r17, %wstate .word 0xa190200b ! 164: WRPR_GL_I wrpr %r0, 0x000b, %- trapasi_40_126: nop mov 0x38, %r1 ! (VA for ASI 0x5b) .word 0xda904b60 ! 165: LDUHA_R lduha [%r1, %r0] 0x5b, %r13 .word 0x8d802004 ! 166: WRFPRS_I wr %r0, 0x0004, %fprs splash_tba_40_127: nop ta T_CHANGE_PRIV setx 0x0000000400380000, %r11, %r12 .word 0x8b90000c ! 167: WRPR_TBA_R wrpr %r0, %r12, %tba invalw mov 0xb5, %r30 .word 0x91d0001e ! 168: Tcc_R ta icc_or_xcc, %r0 + %r30 nop ta T_CHANGE_HPRIV mov 0x40, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_40_128 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00061fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_40_128: ta T_CHANGE_NONHPRIV .word 0xdbe7e010 ! 169: CASA_R casa [%r31] %asi, %r16, %r13 .word 0xdb3fc012 ! 1: STDF_R std %f13, [%r18, %r31] .word 0x9f80337a ! 170: SIR sir 0x137a .word 0x8d902452 ! 171: WRPR_PSTATE_I wrpr %r0, 0x0452, %pstate ibp_40_130: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x40, %r16 ibp_startwait40_130: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_40_130 mov (~0x40&0xf0), %r16 ld [%r23], %r16 ibp_wait40_130: brnz %r16, ibp_wait40_130 ld [%r23], %r16 ba ibp_startwait40_130 mov 0x40, %r16 continue_ibp_40_130: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_40_130: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_40_130 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_40_130: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_40_130 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit40_130: best_set_reg(0x00000040eed6cd80,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi ta T_CHANGE_NONHPRIV .word 0xc1bfd920 ! 172: STDFA_R stda %f0, [%r0, %r31] .word 0x9469fe9e ! 173: UDIVX_I udivx %r7, 0xfffffe9e, %r10 .word 0x9b6b4002 ! 174: SDIVX_R sdivx %r13, %r2, %r13 dvapa_40_131: nop ta T_CHANGE_HPRIV mov 0xea9, %r20 mov 0x10, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe0dfc032 ! 175: LDXA_R ldxa [%r31, %r18] 0x01, %r16 .word 0xa7807057 ! 176: WR_GRAPHICS_STATUS_REG_I wr %r1, 0x1057, %- nop ta T_CHANGE_HPRIV mov 0x40+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_40_132 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_40_132 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610000, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_40_132: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 177: RDPC rd %pc, %r20 fpinit_40_133: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x91a009a4 ! 178: FDIVs fdivs %f0, %f4, %f8 splash_lsu_40_134: nop ta T_CHANGE_HPRIV set 0x01ceccb9, %r2 mov 0x2, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL ta T_CHANGE_NONHPRIV .word 0x3d400001 ! 179: FBPULE fbule,a,pn %fcc0, .word 0x87802083 ! 180: WRASI_I wr %r0, 0x0083, %asi #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_40_135)+24, 16, 16)) -> intp(mask2tid(0x40),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_40_135)&0xffffffff) + 32, 16, 16)) -> intp(mask2tid(0x40),1,3,,,,,1) xir_40_135: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_40_135: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa98332cf ! 181: WR_SET_SOFTINT_I wr %r12, 0x12cf, %set_softint trapasi_40_136: nop mov 0x8, %r1 ! (VA for ASI 0x4a) .word 0xdad84940 ! 182: LDXA_R ldxa [%r1, %r0] 0x4a, %r13 intveclr_40_137: nop ta T_CHANGE_HPRIV setx 0xa372a6aac8246a6b, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 183: FBPLG fblg,a,pn %fcc0, tagged_40_138: tsubcctv %r18, 0x1f10, %r12 .word 0xda07e134 ! 184: LDUW_I lduw [%r31 + 0x0134], %r13 splash_hpstate_40_139: ta T_CHANGE_NONHPRIV .word 0x37400001 ! 1: FBPGE fbge,a,pn %fcc0, .word 0x81983595 ! 185: WRHPR_HPSTATE_I wrhpr %r0, 0x1595, %hpstate .word 0xda77c000 ! 186: STX_R stx %r13, [%r31 + %r0] brcommon3_40_140: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xdb37e160 ! 1: STQF_I - %f13, [0x0160, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0x8d903e9f ! 187: WRPR_PSTATE_I wrpr %r0, 0x1e9f, %pstate otherw mov 0xb4, %r30 .word 0x83d0001e ! 188: Tcc_R te icc_or_xcc, %r0 + %r30 ibp_40_141: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x40, %r16 ibp_startwait40_141: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_40_141 mov (~0x40&0xf0), %r16 ld [%r23], %r16 ibp_wait40_141: brnz %r16, ibp_wait40_141 ld [%r23], %r16 ba ibp_startwait40_141 mov 0x40, %r16 continue_ibp_40_141: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_40_141: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_40_141 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_40_141: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_40_141 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit40_141: best_set_reg(0x000000509ecd80ea,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi .word 0x9b702bfa ! 189: POPC_I popc 0x0bfa, %r13 tagged_40_142: tsubcctv %r12, 0x1648, %r20 .word 0xd807e15d ! 190: LDUW_I lduw [%r31 + 0x015d], %r12 .word 0x87802055 ! 191: WRASI_I wr %r0, 0x0055, %asi intveclr_40_143: nop ta T_CHANGE_HPRIV setx 0xb6d3db7d753c3a21, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 192: FBPLG fblg,a,pn %fcc0, #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_40_144) + 48, 16, 16)) -> intp(2,0,2,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_40_144)&0xffffffff) + 40, 16, 16)) -> intp(6,0,12,,,,,1) #else set 0x19c0dfb9, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_40_144: .word 0x39400001 ! 193: FBPUGE fbuge,a,pn %fcc0, .word 0x8780204f ! 194: WRASI_I wr %r0, 0x004f, %asi .word 0x89800011 ! 195: WRTICK_R wr %r0, %r17, %tick dvapa_40_146: nop ta T_CHANGE_HPRIV mov 0xcd0, %r20 mov 0x7, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe1bfd920 ! 196: STDFA_R stda %f16, [%r0, %r31] splash_tba_40_147: nop ta T_CHANGE_PRIV setx 0x0000000400380000, %r11, %r12 .word 0x8b90000c ! 197: WRPR_TBA_R wrpr %r0, %r12, %tba .word 0xa8c1b543 ! 198: ADDCcc_I addccc %r6, 0xfffff543, %r20 pmu_40_148: nop setx 0xffffffbcffffffa7, %g1, %g7 .word 0xa3800007 ! 199: WR_PERF_COUNTER_R wr %r0, %r7, %- ibp_40_149: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x40, %r16 ibp_startwait40_149: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_40_149 mov (~0x40&0xf0), %r16 ld [%r23], %r16 ibp_wait40_149: brnz %r16, ibp_wait40_149 ld [%r23], %r16 ba ibp_startwait40_149 mov 0x40, %r16 continue_ibp_40_149: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_40_149: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_40_149 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_40_149: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_40_149 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit40_149: best_set_reg(0x00000040ebc0ea16,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi ta T_CHANGE_NONHPRIV .word 0xc1bfd960 ! 200: STDFA_R stda %f0, [%r0, %r31] nop nop ta T_CHANGE_PRIV wrpr %g0, %g0, %gl nop nop .text setx join_lbl_0_0, %g1, %g2 jmp %g2 nop fork_lbl_0_6: ta T_CHANGE_NONHPRIV ibp_20_1: nop .word 0xe19fda00 ! 1: LDDFA_R ldda [%r31, %r0], %f16 splash_cmpr_20_2: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 .word 0xb3800011 ! 2: WR_STICK_CMPR_REG_R wr %r0, %r17, %- mondo_20_3: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r19, [%r0+0x3d0] %asi .word 0x9d904010 ! 3: WRPR_WSTATE_R wrpr %r1, %r16, %wstate .word 0xe19fe180 ! 4: LDDFA_I ldda [%r31, 0x0180], %f16 nop ta T_CHANGE_HPRIV mov 0x20+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_20_4 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_20_4 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610040, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_20_4: ta T_CHANGE_NONHPRIV .word 0x91414000 ! 5: RDPC rd %pc, %r8 nop ta T_CHANGE_HPRIV ! macro donret_20_5: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_5-donret_20_5), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0097c000 | (28 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1d16, %htstate ta T_CHANGE_NONPRIV ! rand=0 (20) ldx [%r11+%r0], %g1 done donretarg_20_5: .word 0x81982f01 ! 6: WRHPR_HPSTATE_I wrhpr %r0, 0x0f01, %hpstate .word 0xe937e1f2 ! 7: STQF_I - %f20, [0x01f2, %r31] jmptr_20_6: nop best_set_reg(0xe1a00000, %r20, %r27) .word 0xb7c6c000 ! 8: JMPL_R jmpl %r27 + %r0, %r27 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_20_7: .word 0x39400001 ! 9: FBPUGE fbuge,a,pn %fcc0, .word 0xa9a7c9cd ! 1: FDIVd fdivd %f62, %f44, %f20 .word 0x9f8035b4 ! 10: SIR sir 0x15b4 .word 0x8d802004 ! 11: WRFPRS_I wr %r0, 0x0004, %fprs trapasi_20_8: nop mov 0x8, %r1 ! (VA for ASI 0x48) .word 0xe8c04900 ! 12: LDSWA_R ldswa [%r1, %r0] 0x48, %r20 .word 0xe81fe0d8 ! 13: LDD_I ldd [%r31 + 0x00d8], %r20 .word 0x2ecb0001 ! 1: BRGEZ brgez,a,pt %r12, .word 0x8d903887 ! 14: WRPR_PSTATE_I wrpr %r0, 0x1887, %pstate nop ta T_CHANGE_HPRIV mov 0x20+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_20_10 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_20_10 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610030, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_20_10: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 15: RDPC rd %pc, %r20 brcommon2_20_11: nop setx common_target, %r12, %r27 ba,a .+12 .word 0x9ba109c5 ! 1: FDIVd fdivd %f4, %f36, %f44 ba,a .+8 jmpl %r27+0, %r27 .word 0xc1bfd960 ! 16: STDFA_R stda %f0, [%r0, %r31] jmptr_20_12: nop best_set_reg(0xe1a00000, %r20, %r27) .word 0xb7c6c000 ! 17: JMPL_R jmpl %r27 + %r0, %r27 mondo_20_13: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r8, [%r0+0x3c8] %asi .word 0x9d924007 ! 18: WRPR_WSTATE_R wrpr %r9, %r7, %wstate mondo_20_14: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r4, [%r0+0x3e0] %asi .word 0x9d92800d ! 19: WRPR_WSTATE_R wrpr %r10, %r13, %wstate splash_cmpr_20_15: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 20: WR_STICK_CMPR_REG_R wr %r0, %r17, %- #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_20_16) + 24, 16, 16)) -> intp(0,0,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_20_16)&0xffffffff) + 56, 16, 16)) -> intp(5,0,30,,,,,1) #else set 0x53300637, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_20_16: .word 0x39400001 ! 21: FBPUGE fbuge,a,pn %fcc0, .word 0x81db4013 ! 22: FLUSH_R flush %r13, %r19, %r0 .word 0x2c800001 ! 1: BNEG bneg,a .word 0x8d902a64 ! 23: WRPR_PSTATE_I wrpr %r0, 0x0a64, %pstate .word 0x8f902001 ! 1: WRPR_TL_I wrpr %r0, 0x0001, %tl reduce_priv_lvl_20_18: ta T_CHANGE_NONHPRIV ! macro mondo_20_19: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r19, [%r0+0x3c0] %asi .word 0x9d948011 ! 25: WRPR_WSTATE_R wrpr %r18, %r17, %wstate .word 0x81510000 ! 26: RDPR_TICK rdpr %tick, %r0 .word 0x87992af9 ! 27: WRHPR_HINTP_I wrhpr %r4, 0x0af9, %hintp fpinit_20_20: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x8da009a4 ! 28: FDIVs fdivs %f0, %f4, %f6 mondo_20_21: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r18, [%r0+0x3e0] %asi .word 0x9d934005 ! 29: WRPR_WSTATE_R wrpr %r13, %r5, %wstate splash_hpstate_20_22: .word 0x81982a45 ! 30: WRHPR_HPSTATE_I wrhpr %r0, 0x0a45, %hpstate splash_tba_20_23: nop ta T_CHANGE_PRIV setx 0x00000004003a0000, %r11, %r12 .word 0x8b90000c ! 31: WRPR_TBA_R wrpr %r0, %r12, %tba trapasi_20_24: nop mov 0x8, %r1 ! (VA for ASI 0x4a) .word 0xe8d84940 ! 32: LDXA_R ldxa [%r1, %r0] 0x4a, %r20 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_20_25: .word 0x39400001 ! 33: FBPUGE fbuge,a,pn %fcc0, nop ta T_CHANGE_HPRIV mov 0x20, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_20_26 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001a1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_20_26: ta T_CHANGE_NONHPRIV .word 0xe9e7e013 ! 34: CASA_R casa [%r31] %asi, %r19, %r20 .word 0xe89fe040 ! 35: LDDA_I ldda [%r31, + 0x0040] %asi, %r20 nop ta T_CHANGE_HPRIV mov 0x20, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_20_27 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00121fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_20_27: ta T_CHANGE_NONHPRIV .word 0xe9e7e014 ! 36: CASA_R casa [%r31] %asi, %r20, %r20 nop ta T_CHANGE_HPRIV ! macro donret_20_28: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_28-donret_20_28), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00255d00 | (28 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1eb5, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (20) retry donretarg_20_28: .word 0x33400001 ! 37: FBPE fbe,a,pn %fcc0, brcommon2_20_29: nop setx common_target, %r12, %r27 ba,a .+12 .word 0x91a00546 ! 1: FSQRTd fsqrt ba,a .+8 jmpl %r27+0, %r27 .word 0xe1bfe0e0 ! 38: STDFA_I stda %f16, [0x00e0, %r31] .word 0x91904011 ! 39: WRPR_PIL_R wrpr %r1, %r17, %pil .word 0xd877e138 ! 40: STX_I stx %r12, [%r31 + 0x0138] nop ta T_CHANGE_HPRIV mov 0x20+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_20_31 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_20_31 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100f0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_20_31: ta T_CHANGE_NONHPRIV .word 0x93414000 ! 41: RDPC rd %pc, %r9 .word 0xe69fe1e0 ! 42: LDDA_I ldda [%r31, + 0x01e0] %asi, %r19 nop ta T_CHANGE_HPRIV mov 0x20, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_20_33 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000a1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_20_33: ta T_CHANGE_NONHPRIV .word 0xe7e7e009 ! 43: CASA_R casa [%r31] %asi, %r9, %r19 nop ta T_CHANGE_HPRIV ! macro donret_20_34: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_34-donret_20_34+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00ab3100 | (0x88 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x154c, %htstate ta T_CHANGE_NONPRIV ! rand=0 (20) retry donretarg_20_34: .word 0xe66fe1fb ! 44: LDSTUB_I ldstub %r19, [%r31 + 0x01fb] nop mov 0x80, %g3 .word 0x39400001 ! 1: FBPUGE fbuge,a,pn %fcc0, stxa %g3, [%g3] 0x57 .word 0xe65fc000 ! 45: LDX_R ldx [%r31 + %r0], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_20_35)+16, 16, 16)) -> intp(mask2tid(0x20),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_20_35)&0xffffffff) + 32, 16, 16)) -> intp(mask2tid(0x20),1,3,,,,,1) xir_20_35: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_20_35: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9847dff ! 46: WR_SET_SOFTINT_I wr %r17, 0x1dff, %set_softint .word 0xc32fc011 ! 47: STXFSR_R st-sfr %f1, [%r17, %r31] nop ta T_CHANGE_HPRIV ! macro donret_20_37: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_37-donret_20_37+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r12, %r10, %r12 ! low VA tpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0034f500 | (0x4f << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xd1d, %htstate ta T_CHANGE_NONPRIV ! rand=0 (20) ldx [%r11+%r0], %g1 done .align 32 donretarg_20_37: .word 0x8d903752 ! 48: WRPR_PSTATE_I wrpr %r0, 0x1752, %pstate .word 0x89800011 ! 49: WRTICK_R wr %r0, %r17, %tick .word 0xe1bfe0a0 ! 50: STDFA_I stda %f16, [0x00a0, %r31] splash_lsu_20_40: nop ta T_CHANGE_HPRIV set 0x720913e1, %r2 mov 0x6, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 51: FBPULE fbule,a,pn %fcc0, change_to_randtl_20_41: ta T_CHANGE_HPRIV ! macro done_change_to_randtl_20_41: .word 0x8f902000 ! 52: WRPR_TL_I wrpr %r0, 0x0000, %tl .word 0xe1bfdc00 ! 53: STDFA_R stda %f16, [%r0, %r31] .word 0x89800011 ! 54: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV ! macro donret_20_43: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_43-donret_20_43+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00db6700 | (28 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xa07, %htstate ta T_CHANGE_NONPRIV ! rand=0 (20) .word 0x34800001 ! 1: BG bg,a done .align 32 donretarg_20_43: .word 0x81982c46 ! 55: WRHPR_HPSTATE_I wrhpr %r0, 0x0c46, %hpstate .word 0xe64fc000 ! 56: LDSB_R ldsb [%r31 + %r0], %r19 .word 0xe71fe128 ! 57: LDDF_I ldd [%r31, 0x0128], %f19 .word 0x87802016 ! 58: WRASI_I wr %r0, 0x0016, %asi .word 0x89800011 ! 59: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV mov 0x20+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_20_45 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_20_45 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610080, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_20_45: ta T_CHANGE_NONHPRIV .word 0x93414000 ! 60: RDPC rd %pc, %r9 mondo_20_46: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r18, [%r0+0x3c0] %asi .word 0x9d940012 ! 61: WRPR_WSTATE_R wrpr %r16, %r18, %wstate .word 0x91d020b5 ! 62: Tcc_I ta icc_or_xcc, %r0 + 181 splash_lsu_20_47: nop ta T_CHANGE_HPRIV set 0x8d16583d, %r2 mov 0x5, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 63: FBPULE fbule,a,pn %fcc0, ibp_20_48: nop .word 0xe1bfdf20 ! 64: STDFA_R stda %f16, [%r0, %r31] splash_hpstate_20_49: .word 0x819823cf ! 65: WRHPR_HPSTATE_I wrhpr %r0, 0x03cf, %hpstate .word 0x8d903cc0 ! 66: WRPR_PSTATE_I wrpr %r0, 0x1cc0, %pstate rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_20_51: .word 0x39400001 ! 67: FBPUGE fbuge,a,pn %fcc0, .word 0xa3b447d4 ! 68: PDIST pdistn %d48, %d20, %d48 nop ta T_CHANGE_HPRIV ! macro donret_20_53: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_53-donret_20_53+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00d5cc00 | (0x55 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xf0d, %htstate ta T_CHANGE_NONPRIV ! rand=0 (20) ldx [%r11+%r0], %g1 done donretarg_20_53: .word 0x24cc8001 ! 69: BRLEZ brlez,a,pt %r18, set 0x1b64, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0xa7b447c3 ! 70: PDIST pdistn %d48, %d34, %d50 .word 0xa1a00167 ! 71: FABSq dis not found ibp_20_55: nop ta T_CHANGE_NONHPRIV .word 0xc19fe1a0 ! 72: LDDFA_I ldda [%r31, 0x01a0], %f0 nop ta T_CHANGE_HPRIV ! macro donret_20_56: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_56-donret_20_56), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0095cd00 | (28 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x199f, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (20) retry .align 32 donretarg_20_56: .word 0xe4ffe0ac ! 73: SWAPA_I swapa %r18, [%r31 + 0x00ac] %asi brcommon3_20_57: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c011 ! 1: STQF_R - %f18, [%r17, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe4dfc031 ! 74: LDXA_R ldxa [%r31, %r17] 0x01, %r18 .word 0x91928010 ! 75: WRPR_PIL_R wrpr %r10, %r16, %pil splash_cmpr_20_59: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x80, %r17 or %r17, %r18, %r17 ta T_CHANGE_PRIV .word 0xaf800011 ! 76: WR_TICK_CMPR_REG_R wr %r0, %r17, %- splash_cmpr_20_60: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 77: WR_STICK_CMPR_REG_R wr %r0, %r17, %- .word 0x87802058 ! 78: WRASI_I wr %r0, 0x0058, %asi brcommon3_20_61: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c00c ! 1: STQF_R - %f18, [%r12, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe53fc010 ! 79: STDF_R std %f18, [%r16, %r31] mondo_20_62: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r5, [%r0+0x3c8] %asi .word 0x9d94c005 ! 80: WRPR_WSTATE_R wrpr %r19, %r5, %wstate nop mov 0x80, %g3 stxa %g3, [%g3] 0x5f .word 0xe45fc000 ! 81: LDX_R ldx [%r31 + %r0], %r18 set 0x10ca, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0xa7b407ca ! 82: PDIST pdistn %d16, %d10, %d50 .word 0xd3e7c020 ! 83: CASA_I casa [%r31] 0x 1, %r0, %r9 .word 0xa7a00168 ! 84: FABSq dis not found nop ta T_CHANGE_HPRIV mov 0x20+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_20_65 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_20_65 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100e0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_20_65: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 85: RDPC rd %pc, %r20 .word 0x97450000 ! 86: RD_SET_SOFTINT rd %set_softint, %r11 brcommon1_20_66: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0x93b7c7c8 ! 1: PDIST pdistn %d62, %d8, %d40 ba,a .+8 jmpl %r27+0, %r27 .word 0x97a509ab ! 87: FDIVs fdivs %f20, %f11, %f11 pmu_20_67: nop setx 0xffffffbdffffffaf, %g1, %g7 .word 0xa3800007 ! 88: WR_PERF_COUNTER_R wr %r0, %r7, %- #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_20_68)+40, 16, 16)) -> intp(mask2tid(0x20),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_20_68)&0xffffffff) + 16, 16, 16)) -> intp(mask2tid(0x20),1,3,,,,,1) xir_20_68: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_20_68: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9852c3c ! 89: WR_SET_SOFTINT_I wr %r20, 0x0c3c, %set_softint rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_20_69: .word 0x39400001 ! 90: FBPUGE fbuge,a,pn %fcc0, fpinit_20_70: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e823fe ! 91: PREFETCHA_I prefetcha [%r0, + 0x03fe] %asi, #one_read mondo_20_71: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r20, [%r0+0x3d8] %asi .word 0x9d91c010 ! 92: WRPR_WSTATE_R wrpr %r7, %r16, %wstate .word 0x8d903191 ! 93: WRPR_PSTATE_I wrpr %r0, 0x1191, %pstate .word 0x8d802004 ! 94: WRFPRS_I wr %r0, 0x0004, %fprs nop ta T_CHANGE_HPRIV mov 0x20, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_20_73 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_20_73: ta T_CHANGE_NONHPRIV .word 0xd1e7e00a ! 95: CASA_R casa [%r31] %asi, %r10, %r8 ibp_20_74: nop ta T_CHANGE_NONHPRIV .word 0x9b703925 ! 96: POPC_I popc 0x1925, %r13 .word 0xc3ec0031 ! 97: PREFETCHA_R prefetcha [%r16, %r17] 0x01, #one_read trapasi_20_76: nop mov 0x10, %r1 ! (VA for ASI 0x5a) .word 0xd8c04b40 ! 98: LDSWA_R ldswa [%r1, %r0] 0x5a, %r12 .word 0x81460000 ! 99: RD_STICK_REG stbar jmptr_20_77: nop best_set_reg(0xe0a00000, %r20, %r27) .word 0xb7c6c000 ! 100: JMPL_R jmpl %r27 + %r0, %r27 pmu_20_78: nop ta T_CHANGE_PRIV setx 0xffffffbcffffffa7, %g1, %g7 .word 0xa3800007 ! 101: WR_PERF_COUNTER_R wr %r0, %r7, %- memptr_20_79: set 0x60540000, %r31 .word 0x85853bfa ! 102: WRCCR_I wr %r20, 0x1bfa, %ccr .word 0xd8cfe018 ! 103: LDSBA_I ldsba [%r31, + 0x0018] %asi, %r12 change_to_randtl_20_80: ta T_CHANGE_PRIV ! macro done_change_to_randtl_20_80: .word 0x8f902000 ! 104: WRPR_TL_I wrpr %r0, 0x0000, %tl pmu_20_81: nop setx 0xffffffbeffffffa5, %g1, %g7 .word 0xa3800007 ! 105: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_lsu_20_82: nop ta T_CHANGE_HPRIV set 0xef760883, %r2 mov 0x5, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 .word 0x3c800001 ! 1: BPOS bpos,a stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 106: FBPULE fbule,a,pn %fcc0, .word 0xd8cfe090 ! 107: LDSBA_I ldsba [%r31, + 0x0090] %asi, %r12 .word 0xc36fe140 ! 1: PREFETCH_I prefetch [%r31 + 0x0140], #one_read .word 0x9f802ffb ! 108: SIR sir 0x0ffb .word 0xd8dfe1f8 ! 109: LDXA_I ldxa [%r31, + 0x01f8] %asi, %r12 .word 0x87802014 ! 110: WRASI_I wr %r0, 0x0014, %asi mondo_20_83: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r6, [%r0+0x3d8] %asi .word 0x9d91c011 ! 111: WRPR_WSTATE_R wrpr %r7, %r17, %wstate .word 0x81460000 ! 112: RD_STICK_REG stbar .word 0x87ab4a44 ! 113: FCMPd fcmpd %fcc, %f44, %f4 nop ta T_CHANGE_HPRIV mov 0x20+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_20_85 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_20_85 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100d0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_20_85: ta T_CHANGE_NONHPRIV .word 0xa5414000 ! 114: RDPC rd %pc, %r18 #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_20_86) + 40, 16, 16)) -> intp(5,0,0,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_20_86)&0xffffffff) + 32, 16, 16)) -> intp(3,0,20,,,,,1) #else set 0x3850ce3c, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_20_86: .word 0x39400001 ! 115: FBPUGE fbuge,a,pn %fcc0, pmu_20_87: nop setx 0xffffffb9ffffffa3, %g1, %g7 .word 0xa3800007 ! 116: WR_PERF_COUNTER_R wr %r0, %r7, %- trapasi_20_88: nop mov 0x10, %r1 ! (VA for ASI 0x49) .word 0xd8d84920 ! 117: LDXA_R ldxa [%r1, %r0] 0x49, %r12 .word 0x95450000 ! 118: RD_SET_SOFTINT rd %set_softint, %r10 fpinit_20_89: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x89a009a4 ! 119: FDIVs fdivs %f0, %f4, %f4 .word 0xc30fc00d ! 1: LDXFSR_R ld-fsr [%r31, %r13], %f1 .word 0x9f8034ef ! 120: SIR sir 0x14ef nop ta T_CHANGE_HPRIV ! macro donret_20_90: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_90-donret_20_90+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00279900 | (0x55 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x148e, %htstate ta T_CHANGE_NONPRIV ! rand=0 (20) retry .align 32 donretarg_20_90: .word 0xe66fe0d8 ! 121: LDSTUB_I ldstub %r19, [%r31 + 0x00d8] .word 0xe69fc02b ! 1: LDDA_R ldda [%r31, %r11] 0x01, %r19 .word 0x9f802611 ! 122: SIR sir 0x0611 splash_htba_20_91: nop ta T_CHANGE_HPRIV setx 0x00000002002a0000, %r11, %r12 .word 0x8b98000c ! 123: WRHPR_HTBA_R wrhpr %r0, %r12, %htba nop ta T_CHANGE_HPRIV mov 0x20+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_20_92 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_20_92 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100b0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_20_92: ta T_CHANGE_NONHPRIV .word 0xa1414000 ! 124: RDPC rd %pc, %r16 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_20_93: .word 0x39400001 ! 125: FBPUGE fbuge,a,pn %fcc0, .word 0x8d802000 ! 126: WRFPRS_I wr %r0, 0x0000, %fprs .word 0xc3e8c026 ! 127: PREFETCHA_R prefetcha [%r3, %r6] 0x01, #one_read .word 0x99702c9e ! 128: POPC_I popc 0x0c9e, %r12 .word 0x9f80321a ! 129: SIR sir 0x121a .word 0xe88008a0 ! 130: LDUWA_R lduwa [%r0, %r0] 0x45, %r20 intveclr_20_97: nop ta T_CHANGE_HPRIV setx 0xcde8ed01559011c6, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 131: FBPLG fblg,a,pn %fcc0, splash_hpstate_20_98: .word 0x81983e5f ! 132: WRHPR_HPSTATE_I wrhpr %r0, 0x1e5f, %hpstate trapasi_20_99: nop mov 0x0, %r1 ! (VA for ASI 0x72) .word 0xe8904e40 ! 133: LDUHA_R lduha [%r1, %r0] 0x72, %r20 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_20_100)+24, 16, 16)) -> intp(mask2tid(0x20),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_20_100)&0xffffffff) + 0, 16, 16)) -> intp(mask2tid(0x20),1,3,,,,,1) xir_20_100: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_20_100: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984eeb6 ! 134: WR_SET_SOFTINT_I wr %r19, 0x0eb6, %set_softint intveclr_20_101: nop ta T_CHANGE_HPRIV setx 0x36c66d0e49c23e67, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 135: FBPLG fblg,a,pn %fcc0, intveclr_20_102: nop ta T_CHANGE_HPRIV setx 0x608b555f8b1eacd8, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 136: FBPLG fblg,a,pn %fcc0, nop ta T_CHANGE_HPRIV ! macro donret_20_103: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_103-donret_20_103), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0097ce00 | (16 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1dd6, %htstate ta T_CHANGE_NONPRIV ! rand=0 (20) ldx [%r11+%r0], %g1 done donretarg_20_103: .word 0xe86fe048 ! 137: LDSTUB_I ldstub %r20, [%r31 + 0x0048] ibp_20_104: nop .word 0xc19fd920 ! 138: LDDFA_R ldda [%r31, %r0], %f0 nop ta T_CHANGE_HPRIV mov 0x20, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_20_105 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00061fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_20_105: ta T_CHANGE_NONHPRIV .word 0xe9e7e00c ! 139: CASA_R casa [%r31] %asi, %r12, %r20 splash_cmpr_20_106: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x70, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 140: WR_TICK_CMPR_REG_R wr %r0, %r17, %- .word 0xe93fc00d ! 141: STDF_R std %f20, [%r13, %r31] .word 0x91d020b4 ! 142: Tcc_I ta icc_or_xcc, %r0 + 180 splash_hpstate_20_108: ta T_CHANGE_NONHPRIV .word 0x81983f87 ! 143: WRHPR_HPSTATE_I wrhpr %r0, 0x1f87, %hpstate dvapa_20_109: nop ta T_CHANGE_HPRIV mov 0xacd, %r20 mov 0x4, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0x95703287 ! 144: POPC_I popc 0x1287, %r10 .word 0x21400001 ! 1: FBPN fbn,a,pn %fcc0, .word 0x8d902f35 ! 145: WRPR_PSTATE_I wrpr %r0, 0x0f35, %pstate memptr_20_111: set user_data_start, %r31 .word 0x8582a52e ! 146: WRCCR_I wr %r10, 0x052e, %ccr ceter_20_112: nop ta T_CHANGE_HPRIV mov 7, %r17 sllx %r17, 60, %r17 mov 0x18, %r16 stxa %r17, [%r16]0x4c ta T_CHANGE_NONHPRIV .word 0x9b410000 ! 147: RDTICK rd %tick, %r13 nop ta T_CHANGE_HPRIV ! macro donret_20_113: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_113-donret_20_113+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0xe000 | (0x80 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x13d5, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (20) ldx [%r11+%r0], %g1 done donretarg_20_113: .word 0xe6ffe018 ! 148: SWAPA_I swapa %r19, [%r31 + 0x0018] %asi splash_tba_20_114: nop ta T_CHANGE_PRIV setx 0x00000004003a0000, %r11, %r12 .word 0x8b90000c ! 149: WRPR_TBA_R wrpr %r0, %r12, %tba splash_htba_20_115: nop ta T_CHANGE_HPRIV setx 0x00000002002a0000, %r11, %r12 .word 0x8b98000c ! 150: WRHPR_HTBA_R wrhpr %r0, %r12, %htba fpinit_20_116: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x87a80a44 ! 151: FCMPd fcmpd %fcc, %f0, %f4 tagged_20_117: taddcctv %r11, 0x1090, %r17 .word 0xe607e114 ! 152: LDUW_I lduw [%r31 + 0x0114], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_20_118)+8, 16, 16)) -> intp(mask2tid(0x20),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_20_118)&0xffffffff) + 16, 16, 16)) -> intp(mask2tid(0x20),1,3,,,,,1) xir_20_118: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_20_118: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984a7a4 ! 153: WR_SET_SOFTINT_I wr %r18, 0x07a4, %set_softint .word 0x89800011 ! 154: WRTICK_R wr %r0, %r17, %tick mondo_20_120: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r17, [%r0+0x3d8] %asi .word 0x9d94c004 ! 155: WRPR_WSTATE_R wrpr %r19, %r4, %wstate .word 0xe737c000 ! 156: STQF_R - %f19, [%r0, %r31] .word 0x87802039 ! 157: WRASI_I wr %r0, 0x0039, %asi .word 0xa669667f ! 158: UDIVX_I udivx %r5, 0x067f, %r19 splash_cmpr_20_121: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 .word 0xaf800011 ! 159: WR_TICK_CMPR_REG_R wr %r0, %r17, %- nop ta T_CHANGE_HPRIV ! macro donret_20_122: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_20_122-donret_20_122), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00816b00 | (0x83 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1b1f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (20) ldx [%r12+%r0], %g1 retry donretarg_20_122: .word 0x99a449d4 ! 160: FDIVd fdivd %f48, %f20, %f12 pmu_20_123: nop setx 0xffffffb5ffffffae, %g1, %g7 .word 0xa3800007 ! 161: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_tba_20_124: nop ta T_CHANGE_PRIV set 0x120000, %r12 .word 0x8b90000c ! 162: WRPR_TBA_R wrpr %r0, %r12, %tba mondo_20_125: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r19, [%r0+0x3c0] %asi .word 0x9d91800a ! 163: WRPR_WSTATE_R wrpr %r6, %r10, %wstate .word 0xa1902002 ! 164: WRPR_GL_I wrpr %r0, 0x0002, %- trapasi_20_126: nop mov 0x0, %r1 ! (VA for ASI 0x5b) .word 0xdad84b60 ! 165: LDXA_R ldxa [%r1, %r0] 0x5b, %r13 .word 0x8d802000 ! 166: WRFPRS_I wr %r0, 0x0000, %fprs splash_tba_20_127: nop ta T_CHANGE_PRIV setx 0x00000004003a0000, %r11, %r12 .word 0x8b90000c ! 167: WRPR_TBA_R wrpr %r0, %r12, %tba invalw mov 0x33, %r30 .word 0x91d0001e ! 168: Tcc_R ta icc_or_xcc, %r0 + %r30 nop ta T_CHANGE_HPRIV mov 0x20, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_20_128 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_20_128: ta T_CHANGE_NONHPRIV .word 0xdbe7e011 ! 169: CASA_R casa [%r31] %asi, %r17, %r13 .word 0xc32fc00c ! 1: STXFSR_R st-sfr %f1, [%r12, %r31] .word 0x9f80307b ! 170: SIR sir 0x107b .word 0x8d903432 ! 171: WRPR_PSTATE_I wrpr %r0, 0x1432, %pstate ibp_20_130: nop ta T_CHANGE_NONHPRIV .word 0xc1bfe060 ! 172: STDFA_I stda %f0, [0x0060, %r31] .word 0xa46c60d1 ! 173: UDIVX_I udivx %r17, 0x00d1, %r18 .word 0xa9688004 ! 174: SDIVX_R sdivx %r2, %r4, %r20 dvapa_20_131: nop ta T_CHANGE_HPRIV mov 0xce1, %r20 mov 0x10, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe0bfc032 ! 175: STDA_R stda %r16, [%r31 + %r18] 0x01 .word 0xa7817a24 ! 176: WR_GRAPHICS_STATUS_REG_I wr %r5, 0x1a24, %- nop ta T_CHANGE_HPRIV mov 0x20+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_20_132 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_20_132 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610060, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_20_132: ta T_CHANGE_NONHPRIV .word 0xa5414000 ! 177: RDPC rd %pc, %r18 fpinit_20_133: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x89b00484 ! 178: FCMPLE32 fcmple32 %d0, %d4, %r4 splash_lsu_20_134: nop ta T_CHANGE_HPRIV set 0x3b0cd0f2, %r2 mov 0x6, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL ta T_CHANGE_NONHPRIV .word 0x3d400001 ! 179: FBPULE fbule,a,pn %fcc0, .word 0x87802083 ! 180: WRASI_I wr %r0, 0x0083, %asi #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_20_135)+32, 16, 16)) -> intp(mask2tid(0x20),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_20_135)&0xffffffff) + 24, 16, 16)) -> intp(mask2tid(0x20),1,3,,,,,1) xir_20_135: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_20_135: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa98427de ! 181: WR_SET_SOFTINT_I wr %r16, 0x07de, %set_softint trapasi_20_136: nop mov 0x110, %r1 ! (VA for ASI 0x4a) .word 0xda884940 ! 182: LDUBA_R lduba [%r1, %r0] 0x4a, %r13 intveclr_20_137: nop ta T_CHANGE_HPRIV setx 0x8a9074173e2a7d3d, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 183: FBPLG fblg,a,pn %fcc0, tagged_20_138: tsubcctv %r2, 0x1441, %r16 .word 0xda07e187 ! 184: LDUW_I lduw [%r31 + 0x0187], %r13 splash_hpstate_20_139: ta T_CHANGE_NONHPRIV .word 0x21400001 ! 1: FBPN fbn,a,pn %fcc0, .word 0x81983e4d ! 185: WRHPR_HPSTATE_I wrhpr %r0, 0x1e4d, %hpstate .word 0xda77c000 ! 186: STX_R stx %r13, [%r31 + %r0] brcommon3_20_140: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xdb37e110 ! 1: STQF_I - %f13, [0x0110, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0x81983dcd ! 187: WRHPR_HPSTATE_I wrhpr %r0, 0x1dcd, %hpstate otherw mov 0x32, %r30 .word 0x83d0001e ! 188: Tcc_R te icc_or_xcc, %r0 + %r30 ibp_20_141: nop .word 0xc3ec402d ! 189: PREFETCHA_R prefetcha [%r17, %r13] 0x01, #one_read tagged_20_142: tsubcctv %r17, 0x1019, %r3 .word 0xd807e090 ! 190: LDUW_I lduw [%r31 + 0x0090], %r12 .word 0x8780204f ! 191: WRASI_I wr %r0, 0x004f, %asi intveclr_20_143: nop ta T_CHANGE_HPRIV setx 0xe2913bfd7f96d03d, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 192: FBPLG fblg,a,pn %fcc0, #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_20_144) + 0, 16, 16)) -> intp(2,0,22,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_20_144)&0xffffffff) + 32, 16, 16)) -> intp(5,0,8,,,,,1) #else set 0x711053d9, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_20_144: .word 0x39400001 ! 193: FBPUGE fbuge,a,pn %fcc0, .word 0x87802080 ! 194: WRASI_I wr %r0, 0x0080, %asi .word 0x89800011 ! 195: WRTICK_R wr %r0, %r17, %tick dvapa_20_146: nop ta T_CHANGE_HPRIV mov 0xf47, %r20 mov 0x1d, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe19fe120 ! 196: LDDFA_I ldda [%r31, 0x0120], %f16 splash_tba_20_147: nop ta T_CHANGE_PRIV setx 0x00000004003a0000, %r11, %r12 .word 0x8b90000c ! 197: WRPR_TBA_R wrpr %r0, %r12, %tba .word 0x98c2a90d ! 198: ADDCcc_I addccc %r10, 0x090d, %r12 pmu_20_148: nop setx 0xffffffbfffffffa6, %g1, %g7 .word 0xa3800007 ! 199: WR_PERF_COUNTER_R wr %r0, %r7, %- ibp_20_149: nop ta T_CHANGE_NONHPRIV .word 0xe19fe020 ! 200: LDDFA_I ldda [%r31, 0x0020], %f16 nop nop ta T_CHANGE_PRIV wrpr %g0, %g0, %gl nop nop .text setx join_lbl_0_0, %g1, %g2 jmp %g2 nop fork_lbl_0_5: ta T_CHANGE_NONHPRIV ibp_10_1: nop .word 0xc19fdf20 ! 1: LDDFA_R ldda [%r31, %r0], %f0 splash_cmpr_10_2: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x70, %r17 or %r17, %r18, %r17 .word 0xb3800011 ! 2: WR_STICK_CMPR_REG_R wr %r0, %r17, %- mondo_10_3: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r17, [%r0+0x3c0] %asi .word 0x9d92c012 ! 3: WRPR_WSTATE_R wrpr %r11, %r18, %wstate .word 0xe19fe160 ! 4: LDDFA_I ldda [%r31, 0x0160], %f16 nop ta T_CHANGE_HPRIV mov 0x10+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_10_4 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_10_4 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100a0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_10_4: ta T_CHANGE_NONHPRIV .word 0x91414000 ! 5: RDPC rd %pc, %r8 nop ta T_CHANGE_HPRIV ! macro donret_10_5: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_5-donret_10_5), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x008cb400 | (0x82 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x6df, %htstate ta T_CHANGE_NONPRIV ! rand=0 (10) ldx [%r11+%r0], %g1 done donretarg_10_5: .word 0x8198241f ! 6: WRHPR_HPSTATE_I wrhpr %r0, 0x041f, %hpstate .word 0xe937e082 ! 7: STQF_I - %f20, [0x0082, %r31] jmptr_10_6: nop best_set_reg(0xe0200000, %r20, %r27) .word 0xb7c6c000 ! 8: JMPL_R jmpl %r27 + %r0, %r27 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_10_7: .word 0x39400001 ! 9: FBPUGE fbuge,a,pn %fcc0, .word 0xa9b7c492 ! 1: FCMPLE32 fcmple32 %d62, %d18, %r20 .word 0x9f8033af ! 10: SIR sir 0x13af .word 0x8d802004 ! 11: WRFPRS_I wr %r0, 0x0004, %fprs trapasi_10_8: nop mov 0x10, %r1 ! (VA for ASI 0x48) .word 0xe8884900 ! 12: LDUBA_R lduba [%r1, %r0] 0x48, %r20 .word 0xe81fe068 ! 13: LDD_I ldd [%r31 + 0x0068], %r20 .word 0x27400001 ! 1: FBPUL fbul,a,pn %fcc0, .word 0x8d903943 ! 14: WRPR_PSTATE_I wrpr %r0, 0x1943, %pstate nop ta T_CHANGE_HPRIV mov 0x10+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_10_10 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_10_10 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100d0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_10_10: ta T_CHANGE_NONHPRIV .word 0x97414000 ! 15: RDPC rd %pc, %r11 brcommon2_10_11: nop setx common_target, %r12, %r27 ba,a .+12 .word 0x81dfc00a ! 1: FLUSH_R flush %r31, %r10, %r0 ba,a .+8 jmpl %r27+0, %r27 .word 0xe19fc3e0 ! 16: LDDFA_R ldda [%r31, %r0], %f16 jmptr_10_12: nop best_set_reg(0xe0200000, %r20, %r27) .word 0xb7c6c000 ! 17: JMPL_R jmpl %r27 + %r0, %r27 mondo_10_13: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r3, [%r0+0x3c0] %asi .word 0x9d948001 ! 18: WRPR_WSTATE_R wrpr %r18, %r1, %wstate mondo_10_14: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r10, [%r0+0x3e0] %asi .word 0x9d94800b ! 19: WRPR_WSTATE_R wrpr %r18, %r11, %wstate splash_cmpr_10_15: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 20: WR_TICK_CMPR_REG_R wr %r0, %r17, %- #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_10_16) + 40, 16, 16)) -> intp(5,0,14,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_10_16)&0xffffffff) + 8, 16, 16)) -> intp(1,0,14,,,,,1) #else set 0x34c0305a, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_10_16: .word 0x39400001 ! 21: FBPUGE fbuge,a,pn %fcc0, .word 0x81dd0008 ! 22: FLUSH_R flush %r20, %r8, %r0 .word 0x39400001 ! 1: FBPUGE fbuge,a,pn %fcc0, .word 0x8d902d21 ! 23: WRPR_PSTATE_I wrpr %r0, 0x0d21, %pstate .word 0x8f902000 ! 1: WRPR_TL_I wrpr %r0, 0x0000, %tl reduce_priv_lvl_10_18: ta T_CHANGE_NONHPRIV ! macro mondo_10_19: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r13, [%r0+0x3c0] %asi .word 0x9d92c008 ! 25: WRPR_WSTATE_R wrpr %r11, %r8, %wstate .word 0x81510000 ! 26: RDPR_TICK rdpr %tick, %r0 .word 0x879cfcf8 ! 27: WRHPR_HINTP_I wrhpr %r19, 0x1cf8, %hintp fpinit_10_20: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e83e22 ! 28: PREFETCHA_I prefetcha [%r0, + 0xfffffe22] %asi, #one_read mondo_10_21: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r20, [%r0+0x3e8] %asi .word 0x9d930005 ! 29: WRPR_WSTATE_R wrpr %r12, %r5, %wstate splash_hpstate_10_22: .word 0x81983964 ! 30: WRHPR_HPSTATE_I wrhpr %r0, 0x1964, %hpstate splash_tba_10_23: nop ta T_CHANGE_PRIV setx 0x0000000000380000, %r11, %r12 .word 0x8b90000c ! 31: WRPR_TBA_R wrpr %r0, %r12, %tba trapasi_10_24: nop mov 0x8, %r1 ! (VA for ASI 0x4a) .word 0xe8904940 ! 32: LDUHA_R lduha [%r1, %r0] 0x4a, %r20 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_10_25: .word 0x39400001 ! 33: FBPUGE fbuge,a,pn %fcc0, nop ta T_CHANGE_HPRIV mov 0x10, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_10_26 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001a1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_10_26: ta T_CHANGE_NONHPRIV .word 0xe9e7e011 ! 34: CASA_R casa [%r31] %asi, %r17, %r20 .word 0xe89fe068 ! 35: LDDA_I ldda [%r31, + 0x0068] %asi, %r20 nop ta T_CHANGE_HPRIV mov 0x10, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_10_27 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00061fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_10_27: ta T_CHANGE_NONHPRIV .word 0xe9e7e012 ! 36: CASA_R casa [%r31] %asi, %r18, %r20 nop ta T_CHANGE_HPRIV ! macro donret_10_28: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_28-donret_10_28), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00ee8b00 | (22 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x5c3, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (10) retry donretarg_10_28: .word 0x29400001 ! 37: FBPL fbl,a,pn %fcc0, brcommon2_10_29: nop setx common_target, %r12, %r27 ba,a .+12 .word 0xa9a7c972 ! 1: FMULq dis not found ba,a .+8 jmpl %r27+0, %r27 .word 0xe19fe000 ! 38: LDDFA_I ldda [%r31, 0x0000], %f16 .word 0x91944010 ! 39: WRPR_PIL_R wrpr %r17, %r16, %pil .word 0xd877e0e0 ! 40: STX_I stx %r12, [%r31 + 0x00e0] nop ta T_CHANGE_HPRIV mov 0x10+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_10_31 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_10_31 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100e0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_10_31: ta T_CHANGE_NONHPRIV .word 0x91414000 ! 41: RDPC rd %pc, %r8 .word 0xe697c02d ! 42: LDUHA_R lduha [%r31, %r13] 0x01, %r19 nop ta T_CHANGE_HPRIV mov 0x10, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_10_33 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_10_33: ta T_CHANGE_NONHPRIV .word 0xe7e7e010 ! 43: CASA_R casa [%r31] %asi, %r16, %r19 nop ta T_CHANGE_HPRIV ! macro donret_10_34: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_34-donret_10_34+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0077cc00 | (54 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1c0b, %htstate ta T_CHANGE_NONPRIV ! rand=0 (10) retry donretarg_10_34: .word 0xe66fe1e5 ! 44: LDSTUB_I ldstub %r19, [%r31 + 0x01e5] nop mov 0x80, %g3 .word 0x22cb0001 ! 1: BRZ brz,a,pt %r12, stxa %g3, [%g3] 0x5f .word 0xe65fc000 ! 45: LDX_R ldx [%r31 + %r0], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_10_35)+40, 16, 16)) -> intp(mask2tid(0x10),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_10_35)&0xffffffff) + 0, 16, 16)) -> intp(mask2tid(0x10),1,3,,,,,1) xir_10_35: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_10_35: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa981335d ! 46: WR_SET_SOFTINT_I wr %r4, 0x135d, %set_softint .word 0xe697c032 ! 47: LDUHA_R lduha [%r31, %r18] 0x01, %r19 nop ta T_CHANGE_HPRIV ! macro donret_10_37: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_37-donret_10_37+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r12, %r10, %r12 ! low VA tpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0031fe00 | (0x4f << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xdb, %htstate ta T_CHANGE_NONPRIV ! rand=0 (10) ldx [%r11+%r0], %g1 done .align 32 donretarg_10_37: .word 0x8d902b4f ! 48: WRPR_PSTATE_I wrpr %r0, 0x0b4f, %pstate .word 0x89800011 ! 49: WRTICK_R wr %r0, %r17, %tick .word 0xc19fda00 ! 50: LDDFA_R ldda [%r31, %r0], %f0 splash_lsu_10_40: nop ta T_CHANGE_HPRIV set 0x006efe01, %r2 mov 0x5, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 51: FBPULE fbule,a,pn %fcc0, change_to_randtl_10_41: ta T_CHANGE_HPRIV ! macro done_change_to_randtl_10_41: .word 0x8f902002 ! 52: WRPR_TL_I wrpr %r0, 0x0002, %tl .word 0xe1bfd920 ! 53: STDFA_R stda %f16, [%r0, %r31] .word 0x89800011 ! 54: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV ! macro donret_10_43: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_43-donret_10_43+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0014ca00 | (16 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xa45, %htstate ta T_CHANGE_NONPRIV ! rand=0 (10) .word 0x27400001 ! 1: FBPUL fbul,a,pn %fcc0, done .align 32 donretarg_10_43: .word 0x819831d5 ! 55: WRHPR_HPSTATE_I wrhpr %r0, 0x11d5, %hpstate .word 0xe64fc000 ! 56: LDSB_R ldsb [%r31 + %r0], %r19 .word 0xe71fe1b0 ! 57: LDDF_I ldd [%r31, 0x01b0], %f19 .word 0x8780201c ! 58: WRASI_I wr %r0, 0x001c, %asi .word 0x89800011 ! 59: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV mov 0x10+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_10_45 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_10_45 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610010, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_10_45: ta T_CHANGE_NONHPRIV .word 0x97414000 ! 60: RDPC rd %pc, %r11 mondo_10_46: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r6, [%r0+0x3c0] %asi .word 0x9d92c011 ! 61: WRPR_WSTATE_R wrpr %r11, %r17, %wstate .word 0x91d020b5 ! 62: Tcc_I ta icc_or_xcc, %r0 + 181 splash_lsu_10_47: nop ta T_CHANGE_HPRIV set 0x24358e43, %r2 mov 0x6, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 63: FBPULE fbule,a,pn %fcc0, ibp_10_48: nop .word 0xc1bfda00 ! 64: STDFA_R stda %f0, [%r0, %r31] splash_hpstate_10_49: .word 0x8198229d ! 65: WRHPR_HPSTATE_I wrhpr %r0, 0x029d, %hpstate .word 0x8d903d8b ! 66: WRPR_PSTATE_I wrpr %r0, 0x1d8b, %pstate rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_10_51: .word 0x39400001 ! 67: FBPUGE fbuge,a,pn %fcc0, .word 0x91b14488 ! 68: FCMPLE32 fcmple32 %d36, %d8, %r8 nop ta T_CHANGE_HPRIV ! macro donret_10_53: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_53-donret_10_53+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x004b4700 | (4 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xa07, %htstate ta T_CHANGE_NONPRIV ! rand=0 (10) ldx [%r11+%r0], %g1 done donretarg_10_53: .word 0x35400001 ! 69: FBPUE fbue,a,pn %fcc0, set 0x3ce6, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0x97b1c7c5 ! 70: PDIST pdistn %d38, %d36, %d42 .word 0xa9a00174 ! 71: FABSq dis not found ibp_10_55: nop ta T_CHANGE_NONHPRIV .word 0xc1bfd920 ! 72: STDFA_R stda %f0, [%r0, %r31] nop ta T_CHANGE_HPRIV ! macro donret_10_56: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_56-donret_10_56), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x001b4b00 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x504, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (10) retry .align 32 donretarg_10_56: .word 0xe4ffe186 ! 73: SWAPA_I swapa %r18, [%r31 + 0x0186] %asi brcommon3_10_57: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c010 ! 1: STQF_R - %f18, [%r16, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe53fc008 ! 74: STDF_R std %f18, [%r8, %r31] .word 0x9191000b ! 75: WRPR_PIL_R wrpr %r4, %r11, %pil splash_cmpr_10_59: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 ta T_CHANGE_PRIV .word 0xaf800011 ! 76: WR_TICK_CMPR_REG_R wr %r0, %r17, %- splash_cmpr_10_60: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x80, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 77: WR_TICK_CMPR_REG_R wr %r0, %r17, %- .word 0x87802089 ! 78: WRASI_I wr %r0, 0x0089, %asi brcommon3_10_61: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c013 ! 1: STQF_R - %f18, [%r19, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe4dfc033 ! 79: LDXA_R ldxa [%r31, %r19] 0x01, %r18 mondo_10_62: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r17, [%r0+0x3d8] %asi .word 0x9d950003 ! 80: WRPR_WSTATE_R wrpr %r20, %r3, %wstate nop mov 0x80, %g3 stxa %g3, [%g3] 0x5f .word 0xbfe7c000 ! 1: SAVE_R save %r31, %r0, %r31 .word 0xe45fc000 ! 81: LDX_R ldx [%r31 + %r0], %r18 set 0x17c5, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0xa9b4c7cb ! 82: PDIST pdistn %d50, %d42, %d20 .word 0xd3e7c020 ! 83: CASA_I casa [%r31] 0x 1, %r0, %r9 .word 0xa7a00174 ! 84: FABSq dis not found nop ta T_CHANGE_HPRIV mov 0x10+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_10_65 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_10_65 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610090, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_10_65: ta T_CHANGE_NONHPRIV .word 0x93414000 ! 85: RDPC rd %pc, %r9 .word 0x91450000 ! 86: RD_SET_SOFTINT rd %set_softint, %r8 brcommon1_10_66: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0x93b7c7d4 ! 1: PDIST pdistn %d62, %d20, %d40 ba,a .+8 jmpl %r27+0, %r27 .word 0xa7b1c7d0 ! 87: PDIST pdistn %d38, %d16, %d50 pmu_10_67: nop setx 0xffffffb8ffffffa7, %g1, %g7 .word 0xa3800007 ! 88: WR_PERF_COUNTER_R wr %r0, %r7, %- #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_10_68)+8, 16, 16)) -> intp(mask2tid(0x10),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_10_68)&0xffffffff) + 16, 16, 16)) -> intp(mask2tid(0x10),1,3,,,,,1) xir_10_68: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_10_68: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa981fa3c ! 89: WR_SET_SOFTINT_I wr %r7, 0x1a3c, %set_softint rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_10_69: .word 0x39400001 ! 90: FBPUGE fbuge,a,pn %fcc0, fpinit_10_70: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e823fe ! 91: PREFETCHA_I prefetcha [%r0, + 0x03fe] %asi, #one_read mondo_10_71: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r5, [%r0+0x3d0] %asi .word 0x9d928001 ! 92: WRPR_WSTATE_R wrpr %r10, %r1, %wstate .word 0x8d9030b4 ! 93: WRPR_PSTATE_I wrpr %r0, 0x10b4, %pstate .word 0x8d802000 ! 94: WRFPRS_I wr %r0, 0x0000, %fprs nop ta T_CHANGE_HPRIV mov 0x10, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_10_73 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00021fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_10_73: ta T_CHANGE_NONHPRIV .word 0xd1e7e008 ! 95: CASA_R casa [%r31] %asi, %r8, %r8 ibp_10_74: nop ta T_CHANGE_NONHPRIV .word 0x99a409b0 ! 96: FDIVs fdivs %f16, %f16, %f12 .word 0xc3e9002c ! 97: PREFETCHA_R prefetcha [%r4, %r12] 0x01, #one_read trapasi_10_76: nop mov 0x28, %r1 ! (VA for ASI 0x5a) .word 0xd8c04b40 ! 98: LDSWA_R ldswa [%r1, %r0] 0x5a, %r12 .word 0x81460000 ! 99: RD_STICK_REG stbar jmptr_10_77: nop best_set_reg(0xe1200000, %r20, %r27) .word 0xb7c6c000 ! 100: JMPL_R jmpl %r27 + %r0, %r27 pmu_10_78: nop ta T_CHANGE_PRIV setx 0xffffffb2ffffffaf, %g1, %g7 .word 0xa3800007 ! 101: WR_PERF_COUNTER_R wr %r0, %r7, %- memptr_10_79: set 0x60140000, %r31 .word 0x8581370c ! 102: WRCCR_I wr %r4, 0x170c, %ccr .word 0xd8cfe078 ! 103: LDSBA_I ldsba [%r31, + 0x0078] %asi, %r12 change_to_randtl_10_80: ta T_CHANGE_PRIV ! macro done_change_to_randtl_10_80: .word 0x8f902000 ! 104: WRPR_TL_I wrpr %r0, 0x0000, %tl pmu_10_81: nop setx 0xffffffbaffffffac, %g1, %g7 .word 0xa3800007 ! 105: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_lsu_10_82: nop ta T_CHANGE_HPRIV set 0x9d501388, %r2 mov 0x1, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 .word 0x22cc8001 ! 1: BRZ brz,a,pt %r18, stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 106: FBPULE fbule,a,pn %fcc0, .word 0xd8cfe0d8 ! 107: LDSBA_I ldsba [%r31, + 0x00d8] %asi, %r12 .word 0xc36fe1e0 ! 1: PREFETCH_I prefetch [%r31 + 0x01e0], #one_read .word 0x9f803224 ! 108: SIR sir 0x1224 .word 0xd8dfe118 ! 109: LDXA_I ldxa [%r31, + 0x0118] %asi, %r12 .word 0x87802004 ! 110: WRASI_I wr %r0, 0x0004, %asi mondo_10_83: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r5, [%r0+0x3e8] %asi .word 0x9d910011 ! 111: WRPR_WSTATE_R wrpr %r4, %r17, %wstate .word 0x81460000 ! 112: RD_STICK_REG stbar .word 0x87a94a51 ! 113: FCMPd fcmpd %fcc, %f36, %f48 nop ta T_CHANGE_HPRIV mov 0x10+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_10_85 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_10_85 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100c0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_10_85: ta T_CHANGE_NONHPRIV .word 0xa5414000 ! 114: RDPC rd %pc, %r18 #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_10_86) + 8, 16, 16)) -> intp(7,0,5,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_10_86)&0xffffffff) + 24, 16, 16)) -> intp(2,0,9,,,,,1) #else set 0xfe0949e, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_10_86: .word 0x39400001 ! 115: FBPUGE fbuge,a,pn %fcc0, pmu_10_87: nop setx 0xffffffbbffffffac, %g1, %g7 .word 0xa3800007 ! 116: WR_PERF_COUNTER_R wr %r0, %r7, %- trapasi_10_88: nop mov 0x8, %r1 ! (VA for ASI 0x49) .word 0xd8d04920 ! 117: LDSHA_R ldsha [%r1, %r0] 0x49, %r12 .word 0x91450000 ! 118: RD_SET_SOFTINT rd %set_softint, %r8 fpinit_10_89: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x8da009c4 ! 119: FDIVd fdivd %f0, %f4, %f6 .word 0xc32fc010 ! 1: STXFSR_R st-sfr %f1, [%r16, %r31] .word 0x9f803e0a ! 120: SIR sir 0x1e0a nop ta T_CHANGE_HPRIV ! macro donret_10_90: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_90-donret_10_90+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00e0df00 | (0x8b << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1382, %htstate ta T_CHANGE_NONPRIV ! rand=0 (10) retry .align 32 donretarg_10_90: .word 0xe66fe1a1 ! 121: LDSTUB_I ldstub %r19, [%r31 + 0x01a1] .word 0xe6dfc032 ! 1: LDXA_R ldxa [%r31, %r18] 0x01, %r19 .word 0x9f8025e5 ! 122: SIR sir 0x05e5 splash_htba_10_91: nop ta T_CHANGE_HPRIV setx 0x0000000000280000, %r11, %r12 .word 0x8b98000c ! 123: WRHPR_HTBA_R wrhpr %r0, %r12, %htba nop ta T_CHANGE_HPRIV mov 0x10+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_10_92 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_10_92 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610050, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_10_92: ta T_CHANGE_NONHPRIV .word 0x97414000 ! 124: RDPC rd %pc, %r11 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_10_93: .word 0x39400001 ! 125: FBPUGE fbuge,a,pn %fcc0, .word 0x8d802000 ! 126: WRFPRS_I wr %r0, 0x0000, %fprs .word 0xa9b207c1 ! 127: PDIST pdistn %d8, %d32, %d20 .word 0x93a149a2 ! 128: FDIVs fdivs %f5, %f2, %f9 .word 0x87a88a49 ! 129: FCMPd fcmpd %fcc, %f2, %f40 .word 0xe8800ae0 ! 130: LDUWA_R lduwa [%r0, %r0] 0x57, %r20 intveclr_10_97: nop ta T_CHANGE_HPRIV setx 0xe41e1882a0a44653, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 131: FBPLG fblg,a,pn %fcc0, splash_hpstate_10_98: .word 0x81983585 ! 132: WRHPR_HPSTATE_I wrhpr %r0, 0x1585, %hpstate trapasi_10_99: nop mov 0x0, %r1 ! (VA for ASI 0x72) .word 0xe8884e40 ! 133: LDUBA_R lduba [%r1, %r0] 0x72, %r20 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_10_100)+56, 16, 16)) -> intp(mask2tid(0x10),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_10_100)&0xffffffff) + 16, 16, 16)) -> intp(mask2tid(0x10),1,3,,,,,1) xir_10_100: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_10_100: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9822959 ! 134: WR_SET_SOFTINT_I wr %r8, 0x0959, %set_softint intveclr_10_101: nop ta T_CHANGE_HPRIV setx 0xdcd59f1fadf6295c, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 135: FBPLG fblg,a,pn %fcc0, intveclr_10_102: nop ta T_CHANGE_HPRIV setx 0x9c22d1429bed53ac, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 136: FBPLG fblg,a,pn %fcc0, nop ta T_CHANGE_HPRIV ! macro donret_10_103: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_103-donret_10_103), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00649900 | (0x8a << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x15dd, %htstate ta T_CHANGE_NONPRIV ! rand=0 (10) ldx [%r11+%r0], %g1 done donretarg_10_103: .word 0xe86fe1b9 ! 137: LDSTUB_I ldstub %r20, [%r31 + 0x01b9] ibp_10_104: nop .word 0xe19fe100 ! 138: LDDFA_I ldda [%r31, 0x0100], %f16 nop ta T_CHANGE_HPRIV mov 0x10, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_10_105 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001a1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_10_105: ta T_CHANGE_NONHPRIV .word 0xe9e7e011 ! 139: CASA_R casa [%r31] %asi, %r17, %r20 splash_cmpr_10_106: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 140: WR_STICK_CMPR_REG_R wr %r0, %r17, %- .word 0xe8dfc028 ! 141: LDXA_R ldxa [%r31, %r8] 0x01, %r20 .word 0x91d020b5 ! 142: Tcc_I ta icc_or_xcc, %r0 + 181 splash_hpstate_10_108: ta T_CHANGE_NONHPRIV .word 0x819822cf ! 143: WRHPR_HPSTATE_I wrhpr %r0, 0x02cf, %hpstate dvapa_10_109: nop ta T_CHANGE_HPRIV mov 0x8cb, %r20 mov 0x5, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0x91a489b2 ! 144: FDIVs fdivs %f18, %f18, %f8 .word 0x29400001 ! 1: FBPL fbl,a,pn %fcc0, .word 0x8d903197 ! 145: WRPR_PSTATE_I wrpr %r0, 0x1197, %pstate memptr_10_111: set user_data_start, %r31 .word 0x8581e603 ! 146: WRCCR_I wr %r7, 0x0603, %ccr ceter_10_112: nop ta T_CHANGE_HPRIV mov 1, %r17 sllx %r17, 60, %r17 mov 0x18, %r16 stxa %r17, [%r16]0x4c ta T_CHANGE_NONHPRIV .word 0x99410000 ! 147: RDTICK rd %tick, %r12 nop ta T_CHANGE_HPRIV ! macro donret_10_113: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_113-donret_10_113+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00958000 | (57 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1a7c, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (10) ldx [%r11+%r0], %g1 done donretarg_10_113: .word 0xe6ffe162 ! 148: SWAPA_I swapa %r19, [%r31 + 0x0162] %asi splash_tba_10_114: nop ta T_CHANGE_PRIV setx 0x0000000000380000, %r11, %r12 .word 0x8b90000c ! 149: WRPR_TBA_R wrpr %r0, %r12, %tba splash_htba_10_115: nop ta T_CHANGE_HPRIV setx 0x0000000000280000, %r11, %r12 .word 0x8b98000c ! 150: WRHPR_HTBA_R wrhpr %r0, %r12, %htba fpinit_10_116: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x87a80a44 ! 151: FCMPd fcmpd %fcc, %f0, %f4 tagged_10_117: taddcctv %r12, 0x1e60, %r19 .word 0xe607e1d8 ! 152: LDUW_I lduw [%r31 + 0x01d8], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_10_118)+56, 16, 16)) -> intp(mask2tid(0x10),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_10_118)&0xffffffff) + 32, 16, 16)) -> intp(mask2tid(0x10),1,3,,,,,1) xir_10_118: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_10_118: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9826130 ! 153: WR_SET_SOFTINT_I wr %r9, 0x0130, %set_softint .word 0x89800011 ! 154: WRTICK_R wr %r0, %r17, %tick mondo_10_120: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r1, [%r0+0x3c8] %asi .word 0x9d904014 ! 155: WRPR_WSTATE_R wrpr %r1, %r20, %wstate .word 0xe737c000 ! 156: STQF_R - %f19, [%r0, %r31] .word 0x87802004 ! 157: WRASI_I wr %r0, 0x0004, %asi .word 0x9a6d3120 ! 158: UDIVX_I udivx %r20, 0xfffff120, %r13 splash_cmpr_10_121: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 .word 0xb3800011 ! 159: WR_STICK_CMPR_REG_R wr %r0, %r17, %- nop ta T_CHANGE_HPRIV ! macro donret_10_122: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_10_122-donret_10_122), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0019f400 | (20 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1e0f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (10) ldx [%r12+%r0], %g1 retry donretarg_10_122: .word 0xa1a409d3 ! 160: FDIVd fdivd %f16, %f50, %f16 pmu_10_123: nop setx 0xffffffbfffffffa0, %g1, %g7 .word 0xa3800007 ! 161: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_tba_10_124: nop ta T_CHANGE_PRIV set 0x120000, %r12 .word 0x8b90000c ! 162: WRPR_TBA_R wrpr %r0, %r12, %tba mondo_10_125: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r18, [%r0+0x3c8] %asi .word 0x9d928011 ! 163: WRPR_WSTATE_R wrpr %r10, %r17, %wstate .word 0xa1902002 ! 164: WRPR_GL_I wrpr %r0, 0x0002, %- trapasi_10_126: nop mov 0x0, %r1 ! (VA for ASI 0x5b) .word 0xda904b60 ! 165: LDUHA_R lduha [%r1, %r0] 0x5b, %r13 .word 0x8d802000 ! 166: WRFPRS_I wr %r0, 0x0000, %fprs splash_tba_10_127: nop ta T_CHANGE_PRIV setx 0x0000000000380000, %r11, %r12 .word 0x8b90000c ! 167: WRPR_TBA_R wrpr %r0, %r12, %tba invalw mov 0x32, %r30 .word 0x83d0001e ! 168: Tcc_R te icc_or_xcc, %r0 + %r30 nop ta T_CHANGE_HPRIV mov 0x10, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_10_128 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00021fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_10_128: ta T_CHANGE_NONHPRIV .word 0xdbe7e00a ! 169: CASA_R casa [%r31] %asi, %r10, %r13 .word 0xdb1fe1b0 ! 1: LDDF_I ldd [%r31, 0x01b0], %f13 .word 0x9f803221 ! 170: SIR sir 0x1221 .word 0x8d903819 ! 171: WRPR_PSTATE_I wrpr %r0, 0x1819, %pstate ibp_10_130: nop ta T_CHANGE_NONHPRIV .word 0xe1bfdb60 ! 172: STDFA_R stda %f16, [%r0, %r31] .word 0xa26cb9f2 ! 173: UDIVX_I udivx %r18, 0xfffff9f2, %r17 .word 0x97684005 ! 174: SDIVX_R sdivx %r1, %r5, %r11 dvapa_10_131: nop ta T_CHANGE_HPRIV mov 0xa76, %r20 mov 0x16, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe1e7e013 ! 175: CASA_R casa [%r31] %asi, %r19, %r16 .word 0xa784ed23 ! 176: WR_GRAPHICS_STATUS_REG_I wr %r19, 0x0d23, %- nop ta T_CHANGE_HPRIV mov 0x10+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_10_132 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_10_132 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100b0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_10_132: ta T_CHANGE_NONHPRIV .word 0xa1414000 ! 177: RDPC rd %pc, %r16 fpinit_10_133: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e83d17 ! 178: PREFETCHA_I prefetcha [%r0, + 0xfffffd17] %asi, #one_read splash_lsu_10_134: nop ta T_CHANGE_HPRIV set 0xa4931b64, %r2 mov 0x6, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL ta T_CHANGE_NONHPRIV .word 0x3d400001 ! 179: FBPULE fbule,a,pn %fcc0, .word 0x87802039 ! 180: WRASI_I wr %r0, 0x0039, %asi #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_10_135)+8, 16, 16)) -> intp(mask2tid(0x10),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_10_135)&0xffffffff) + 32, 16, 16)) -> intp(mask2tid(0x10),1,3,,,,,1) xir_10_135: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_10_135: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9846f8a ! 181: WR_SET_SOFTINT_I wr %r17, 0x0f8a, %set_softint trapasi_10_136: nop mov 0x110, %r1 ! (VA for ASI 0x4a) .word 0xdac84940 ! 182: LDSBA_R ldsba [%r1, %r0] 0x4a, %r13 intveclr_10_137: nop ta T_CHANGE_HPRIV setx 0xa45e1a1ec7fe11e3, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 183: FBPLG fblg,a,pn %fcc0, tagged_10_138: tsubcctv %r18, 0x1205, %r5 .word 0xda07e115 ! 184: LDUW_I lduw [%r31 + 0x0115], %r13 splash_hpstate_10_139: ta T_CHANGE_NONHPRIV .word 0x39400001 ! 1: FBPUGE fbuge,a,pn %fcc0, .word 0x8198340d ! 185: WRHPR_HPSTATE_I wrhpr %r0, 0x140d, %hpstate .word 0xda77c000 ! 186: STX_R stx %r13, [%r31 + %r0] brcommon3_10_140: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xdb37e1f0 ! 1: STQF_I - %f13, [0x01f0, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0x8d903f4f ! 187: WRPR_PSTATE_I wrpr %r0, 0x1f4f, %pstate otherw mov 0x30, %r30 .word 0x91d0001e ! 188: Tcc_R ta icc_or_xcc, %r0 + %r30 ibp_10_141: nop .word 0x87ac8a4a ! 189: FCMPd fcmpd %fcc, %f18, %f10 tagged_10_142: tsubcctv %r2, 0x19b4, %r20 .word 0xd807e09d ! 190: LDUW_I lduw [%r31 + 0x009d], %r12 .word 0x8780208a ! 191: WRASI_I wr %r0, 0x008a, %asi intveclr_10_143: nop ta T_CHANGE_HPRIV setx 0xe30d08e64350c328, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 192: FBPLG fblg,a,pn %fcc0, #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_10_144) + 40, 16, 16)) -> intp(7,0,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_10_144)&0xffffffff) + 40, 16, 16)) -> intp(2,0,5,,,,,1) #else set 0x8b08e2b, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_10_144: .word 0x39400001 ! 193: FBPUGE fbuge,a,pn %fcc0, .word 0x87802088 ! 194: WRASI_I wr %r0, 0x0088, %asi .word 0x89800011 ! 195: WRTICK_R wr %r0, %r17, %tick dvapa_10_146: nop ta T_CHANGE_HPRIV mov 0xb54, %r20 mov 0x1b, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe1bfe180 ! 196: STDFA_I stda %f16, [0x0180, %r31] splash_tba_10_147: nop ta T_CHANGE_PRIV setx 0x0000000000380000, %r11, %r12 .word 0x8b90000c ! 197: WRPR_TBA_R wrpr %r0, %r12, %tba .word 0xa6c124c5 ! 198: ADDCcc_I addccc %r4, 0x04c5, %r19 pmu_10_148: nop setx 0xffffffb6ffffffa8, %g1, %g7 .word 0xa3800007 ! 199: WR_PERF_COUNTER_R wr %r0, %r7, %- ibp_10_149: nop ta T_CHANGE_NONHPRIV .word 0xe19fdc00 ! 200: LDDFA_R ldda [%r31, %r0], %f16 nop nop ta T_CHANGE_PRIV wrpr %g0, %g0, %gl nop nop .text setx join_lbl_0_0, %g1, %g2 jmp %g2 nop fork_lbl_0_4: ta T_CHANGE_NONHPRIV vahole5_8_0: nop setx vahole_target2, %r18, %r27 jmpl %r27+0, %r27 ta T_CHANGE_PRIV ibp_8_1: nop .word 0xe1bfda00 ! 1: STDFA_R stda %f16, [%r0, %r31] splash_cmpr_8_2: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 .word 0xaf800011 ! 2: WR_TICK_CMPR_REG_R wr %r0, %r17, %- mondo_8_3: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r17, [%r0+0x3c8] %asi .word 0x9d918011 ! 3: WRPR_WSTATE_R wrpr %r6, %r17, %wstate .word 0xe19fe0a0 ! 4: LDDFA_I ldda [%r31, 0x00a0], %f16 nop ta T_CHANGE_HPRIV mov 0x8+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_8_4 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_8_4 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610000, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_8_4: ta T_CHANGE_NONHPRIV .word 0xa5414000 ! 5: RDPC rd %pc, %r18 nop ta T_CHANGE_HPRIV ! macro donret_8_5: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_5-donret_8_5), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0094f200 | (0x8a << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x709, %htstate ta T_CHANGE_NONPRIV ! rand=0 (8) ldx [%r11+%r0], %g1 done donretarg_8_5: .word 0x819825dd ! 6: WRHPR_HPSTATE_I wrhpr %r0, 0x05dd, %hpstate .word 0xe937e0f8 ! 7: STQF_I - %f20, [0x00f8, %r31] jmptr_8_6: nop best_set_reg(0xe0a00000, %r20, %r27) .word 0xb7c6c000 ! 8: JMPL_R jmpl %r27 + %r0, %r27 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_8_7: .word 0x39400001 ! 9: FBPUGE fbuge,a,pn %fcc0, .word 0x9f803883 ! 10: SIR sir 0x1883 .word 0x8d802004 ! 11: WRFPRS_I wr %r0, 0x0004, %fprs trapasi_8_8: nop mov 0x10, %r1 ! (VA for ASI 0x48) .word 0xe8d04900 ! 12: LDSHA_R ldsha [%r1, %r0] 0x48, %r20 .word 0xe81fe078 ! 13: LDD_I ldd [%r31 + 0x0078], %r20 .word 0x3c800001 ! 1: BPOS bpos,a .word 0x8d90273b ! 14: WRPR_PSTATE_I wrpr %r0, 0x073b, %pstate nop ta T_CHANGE_HPRIV mov 0x8+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_8_10 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_8_10 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100e0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_8_10: ta T_CHANGE_NONHPRIV .word 0x97414000 ! 15: RDPC rd %pc, %r11 brcommon2_8_11: nop setx common_target, %r12, %r27 ba,a .+12 .word 0x9ba509c1 ! 1: FDIVd fdivd %f20, %f32, %f44 ba,a .+8 jmpl %r27+0, %r27 .word 0xc19fe060 ! 16: LDDFA_I ldda [%r31, 0x0060], %f0 jmptr_8_12: nop best_set_reg(0xe0a00000, %r20, %r27) .word 0xb7c6c000 ! 17: JMPL_R jmpl %r27 + %r0, %r27 mondo_8_13: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r2, [%r0+0x3d0] %asi .word 0x9d94000c ! 18: WRPR_WSTATE_R wrpr %r16, %r12, %wstate mondo_8_14: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r9, [%r0+0x3c8] %asi .word 0x9d934013 ! 19: WRPR_WSTATE_R wrpr %r13, %r19, %wstate splash_cmpr_8_15: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 20: WR_TICK_CMPR_REG_R wr %r0, %r17, %- #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_8_16) + 8, 16, 16)) -> intp(0,0,27,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_8_16)&0xffffffff) + 40, 16, 16)) -> intp(5,0,9,,,,,1) #else set 0x1820b104, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_8_16: .word 0x39400001 ! 21: FBPUGE fbuge,a,pn %fcc0, .word 0x81dc000b ! 22: FLUSH_R flush %r16, %r11, %r0 .word 0x24800001 ! 1: BLE ble,a .word 0x8d902f93 ! 23: WRPR_PSTATE_I wrpr %r0, 0x0f93, %pstate .word 0x8f902000 ! 1: WRPR_TL_I wrpr %r0, 0x0000, %tl reduce_priv_lvl_8_18: ta T_CHANGE_NONHPRIV ! macro mondo_8_19: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r2, [%r0+0x3d0] %asi .word 0x9d92c00c ! 25: WRPR_WSTATE_R wrpr %r11, %r12, %wstate .word 0x81510000 ! 26: RDPR_TICK rdpr %tick, %r0 .word 0x879aed89 ! 27: WRHPR_HINTP_I wrhpr %r11, 0x0d89, %hintp fpinit_8_20: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x8db00484 ! 28: FCMPLE32 fcmple32 %d0, %d4, %r6 mondo_8_21: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r12, [%r0+0x3c0] %asi .word 0x9d904009 ! 29: WRPR_WSTATE_R wrpr %r1, %r9, %wstate splash_hpstate_8_22: .word 0x81982f54 ! 30: WRHPR_HPSTATE_I wrhpr %r0, 0x0f54, %hpstate splash_tba_8_23: nop ta T_CHANGE_PRIV setx 0x00000000003a0000, %r11, %r12 .word 0x8b90000c ! 31: WRPR_TBA_R wrpr %r0, %r12, %tba trapasi_8_24: nop mov 0x110, %r1 ! (VA for ASI 0x4a) .word 0xe8c84940 ! 32: LDSBA_R ldsba [%r1, %r0] 0x4a, %r20 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_8_25: .word 0x39400001 ! 33: FBPUGE fbuge,a,pn %fcc0, nop ta T_CHANGE_HPRIV mov 0x8, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_8_26 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_8_26: ta T_CHANGE_NONHPRIV .word 0xe9e7e014 ! 34: CASA_R casa [%r31] %asi, %r20, %r20 .word 0xe89fe100 ! 35: LDDA_I ldda [%r31, + 0x0100] %asi, %r20 nop ta T_CHANGE_HPRIV mov 0x8, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_8_27 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00121fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_8_27: ta T_CHANGE_NONHPRIV .word 0xe9e7e008 ! 36: CASA_R casa [%r31] %asi, %r8, %r20 nop ta T_CHANGE_HPRIV ! macro donret_8_28: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_28-donret_8_28), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x002b1b00 | (57 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x10d5, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (8) retry donretarg_8_28: .word 0x3d400001 ! 37: FBPULE fbule,a,pn %fcc0, brcommon2_8_29: nop setx common_target, %r12, %r27 ba,a .+12 .word 0xa1a00552 ! 1: FSQRTd fsqrt ba,a .+8 jmpl %r27+0, %r27 .word 0xe1bfe160 ! 38: STDFA_I stda %f16, [0x0160, %r31] .word 0x9192c010 ! 39: WRPR_PIL_R wrpr %r11, %r16, %pil .word 0xd877e13a ! 40: STX_I stx %r12, [%r31 + 0x013a] nop ta T_CHANGE_HPRIV mov 0x8+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_8_31 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_8_31 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100b0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_8_31: ta T_CHANGE_NONHPRIV .word 0x97414000 ! 41: RDPC rd %pc, %r11 vahole6_8_32: nop mov 1, %r27 sllx %r27, 49, %r27 jmpl %r27+0, %r27 ta T_CHANGE_NONHPRIV .word 0xe6dfc033 ! 42: LDXA_R ldxa [%r31, %r19] 0x01, %r19 nop ta T_CHANGE_HPRIV mov 0x8, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_8_33 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_8_33: ta T_CHANGE_NONHPRIV .word 0xe7e7e014 ! 43: CASA_R casa [%r31] %asi, %r20, %r19 nop ta T_CHANGE_HPRIV ! macro donret_8_34: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_34-donret_8_34+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0088e400 | (0x58 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xf3f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (8) retry donretarg_8_34: .word 0xe66fe1a8 ! 44: LDSTUB_I ldstub %r19, [%r31 + 0x01a8] nop mov 0x80, %g3 .word 0x2d400001 ! 1: FBPG fbg,a,pn %fcc0, stxa %g3, [%g3] 0x57 .word 0xe65fc000 ! 45: LDX_R ldx [%r31 + %r0], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_8_35)+56, 16, 16)) -> intp(mask2tid(0x8),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_8_35)&0xffffffff) + 16, 16, 16)) -> intp(mask2tid(0x8),1,3,,,,,1) xir_8_35: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_8_35: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9842b60 ! 46: WR_SET_SOFTINT_I wr %r16, 0x0b60, %set_softint .word 0xe69fe120 ! 47: LDDA_I ldda [%r31, + 0x0120] %asi, %r19 nop ta T_CHANGE_HPRIV ! macro donret_8_37: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_37-donret_8_37+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r12, %r10, %r12 ! low VA tpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00c37600 | (20 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x8dd, %htstate ta T_CHANGE_NONPRIV ! rand=0 (8) ldx [%r11+%r0], %g1 done .align 32 donretarg_8_37: .word 0x8d903a8e ! 48: WRPR_PSTATE_I wrpr %r0, 0x1a8e, %pstate .word 0x89800011 ! 49: WRTICK_R wr %r0, %r17, %tick .word 0xc1bfe1c0 ! 50: STDFA_I stda %f0, [0x01c0, %r31] splash_lsu_8_40: nop ta T_CHANGE_HPRIV set 0xa94c5c81, %r2 mov 0x6, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 51: FBPULE fbule,a,pn %fcc0, change_to_randtl_8_41: ta T_CHANGE_HPRIV ! macro done_change_to_randtl_8_41: .word 0x8f902000 ! 52: WRPR_TL_I wrpr %r0, 0x0000, %tl .word 0xc1bfc3e0 ! 53: STDFA_R stda %f0, [%r0, %r31] .word 0x89800011 ! 54: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV ! macro donret_8_43: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_43-donret_8_43+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00eaa800 | (0x58 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x35f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (8) .word 0x26c90001 ! 1: BRLZ brlz,a,pt %r4, done .align 32 donretarg_8_43: .word 0x81982421 ! 55: WRHPR_HPSTATE_I wrhpr %r0, 0x0421, %hpstate .word 0xe64fc000 ! 56: LDSB_R ldsb [%r31 + %r0], %r19 .word 0xe71fe080 ! 57: LDDF_I ldd [%r31, 0x0080], %f19 .word 0x87802083 ! 58: WRASI_I wr %r0, 0x0083, %asi .word 0x89800011 ! 59: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV mov 0x8+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_8_45 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_8_45 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610050, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_8_45: ta T_CHANGE_NONHPRIV .word 0x91414000 ! 60: RDPC rd %pc, %r8 mondo_8_46: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r17, [%r0+0x3d8] %asi .word 0x9d940007 ! 61: WRPR_WSTATE_R wrpr %r16, %r7, %wstate .word 0x83d02035 ! 62: Tcc_I te icc_or_xcc, %r0 + 53 splash_lsu_8_47: nop ta T_CHANGE_HPRIV set 0xf4c33a12, %r2 mov 0x5, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 63: FBPULE fbule,a,pn %fcc0, ibp_8_48: nop .word 0xc19fde00 ! 64: LDDFA_R ldda [%r31, %r0], %f0 splash_hpstate_8_49: .word 0x8198278d ! 65: WRHPR_HPSTATE_I wrhpr %r0, 0x078d, %hpstate .word 0x8d902fd5 ! 66: WRPR_PSTATE_I wrpr %r0, 0x0fd5, %pstate rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_8_51: .word 0x39400001 ! 67: FBPUGE fbuge,a,pn %fcc0, .word 0x87a8ca51 ! 68: FCMPd fcmpd %fcc, %f34, %f48 nop ta T_CHANGE_HPRIV ! macro donret_8_53: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_53-donret_8_53+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00b7a500 | (54 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x747, %htstate ta T_CHANGE_NONPRIV ! rand=0 (8) ldx [%r11+%r0], %g1 done donretarg_8_53: .word 0x2b400001 ! 69: FBPUG fbug,a,pn %fcc0, set 19, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0xa9b407c8 ! 70: PDIST pdistn %d16, %d8, %d20 .word 0xa1a00161 ! 71: FABSq dis not found ibp_8_55: nop ta T_CHANGE_NONHPRIV .word 0xe19fda00 ! 72: LDDFA_R ldda [%r31, %r0], %f16 nop ta T_CHANGE_HPRIV ! macro donret_8_56: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_56-donret_8_56), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00cd6f00 | (0x88 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1cc7, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (8) retry .align 32 donretarg_8_56: .word 0xe4ffe060 ! 73: SWAPA_I swapa %r18, [%r31 + 0x0060] %asi brcommon3_8_57: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c010 ! 1: STQF_R - %f18, [%r16, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe4bfc032 ! 74: STDA_R stda %r18, [%r31 + %r18] 0x01 .word 0x91924005 ! 75: WRPR_PIL_R wrpr %r9, %r5, %pil splash_cmpr_8_59: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 ta T_CHANGE_PRIV .word 0xaf800011 ! 76: WR_TICK_CMPR_REG_R wr %r0, %r17, %- splash_cmpr_8_60: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 77: WR_STICK_CMPR_REG_R wr %r0, %r17, %- .word 0x87802014 ! 78: WRASI_I wr %r0, 0x0014, %asi brcommon3_8_61: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c014 ! 1: STQF_R - %f18, [%r20, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe4dfc029 ! 79: LDXA_R ldxa [%r31, %r9] 0x01, %r18 mondo_8_62: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r16, [%r0+0x3e0] %asi .word 0x9d94c011 ! 80: WRPR_WSTATE_R wrpr %r19, %r17, %wstate nop mov 0x80, %g3 stxa %r14, [%r0] ASI_LSU_CONTROL stxa %g3, [%g3] 0x5f .word 0xe45fc000 ! 81: LDX_R ldx [%r31 + %r0], %r18 set 0x1f2c, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0x93b347ca ! 82: PDIST pdistn %d44, %d10, %d40 fbuge,a,pn %fcc0, skip_8_63 stxa %r13, [%r0] ASI_LSU_CONTROL .word 0xc36ceddb ! 1: PREFETCH_I prefetch [%r19 + 0x0ddb], #one_read stxa %r11, [%r0] ASI_LSU_CONTROL .align 32 skip_8_63: .word 0xd3e7c020 ! 83: CASA_I casa [%r31] 0x 1, %r0, %r9 .word 0x93a00166 ! 84: FABSq dis not found nop ta T_CHANGE_HPRIV mov 0x8+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_8_65 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_8_65 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610010, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_8_65: ta T_CHANGE_NONHPRIV .word 0x95414000 ! 85: RDPC rd %pc, %r10 .word 0xa7450000 ! 86: RD_SET_SOFTINT rd %set_softint, %r19 brcommon1_8_66: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0x93b7c7cc ! 1: PDIST pdistn %d62, %d12, %d40 ba,a .+8 jmpl %r27+0, %r27 .word 0xa1703688 ! 87: POPC_I popc 0x1688, %r16 pmu_8_67: nop setx 0xffffffb4ffffffa1, %g1, %g7 .word 0xa3800007 ! 88: WR_PERF_COUNTER_R wr %r0, %r7, %- #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_8_68)+24, 16, 16)) -> intp(mask2tid(0x8),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_8_68)&0xffffffff) + 56, 16, 16)) -> intp(mask2tid(0x8),1,3,,,,,1) xir_8_68: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_8_68: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9807534 ! 89: WR_SET_SOFTINT_I wr %r1, 0x1534, %set_softint rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_8_69: .word 0x39400001 ! 90: FBPUGE fbuge,a,pn %fcc0, fpinit_8_70: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x89b00484 ! 91: FCMPLE32 fcmple32 %d0, %d4, %r4 mondo_8_71: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r6, [%r0+0x3d8] %asi .word 0x9d92c013 ! 92: WRPR_WSTATE_R wrpr %r11, %r19, %wstate .word 0x8d903991 ! 93: WRPR_PSTATE_I wrpr %r0, 0x1991, %pstate .word 0x8d802004 ! 94: WRFPRS_I wr %r0, 0x0004, %fprs nop ta T_CHANGE_HPRIV mov 0x8, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_8_73 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00121fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_8_73: ta T_CHANGE_NONHPRIV .word 0xd1e7e009 ! 95: CASA_R casa [%r31] %asi, %r9, %r8 ibp_8_74: nop ta T_CHANGE_NONHPRIV .word 0xa5a349c2 ! 96: FDIVd fdivd %f44, %f2, %f18 .word 0xa3a249d2 ! 97: FDIVd fdivd %f40, %f18, %f48 trapasi_8_76: nop mov 0x20, %r1 ! (VA for ASI 0x5a) .word 0xd8c84b40 ! 98: LDSBA_R ldsba [%r1, %r0] 0x5a, %r12 .word 0x81460000 ! 99: RD_STICK_REG stbar jmptr_8_77: nop best_set_reg(0xe1a00000, %r20, %r27) .word 0xb7c6c000 ! 100: JMPL_R jmpl %r27 + %r0, %r27 pmu_8_78: nop ta T_CHANGE_PRIV setx 0xffffffbfffffffa8, %g1, %g7 .word 0xa3800007 ! 101: WR_PERF_COUNTER_R wr %r0, %r7, %- memptr_8_79: set 0x60140000, %r31 .word 0x8584776b ! 102: WRCCR_I wr %r17, 0x176b, %ccr .word 0xd8cfe128 ! 103: LDSBA_I ldsba [%r31, + 0x0128] %asi, %r12 change_to_randtl_8_80: ta T_CHANGE_PRIV ! macro done_change_to_randtl_8_80: .word 0x8f902000 ! 104: WRPR_TL_I wrpr %r0, 0x0000, %tl pmu_8_81: nop setx 0xffffffbaffffffa4, %g1, %g7 .word 0xa3800007 ! 105: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_lsu_8_82: nop ta T_CHANGE_HPRIV set 0xc71b9ccd, %r2 mov 0x1, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 .word 0x35400001 ! 1: FBPUE fbue,a,pn %fcc0, stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 106: FBPULE fbule,a,pn %fcc0, .word 0xd8cfe0a0 ! 107: LDSBA_I ldsba [%r31, + 0x00a0] %asi, %r12 .word 0x9f803dca ! 108: SIR sir 0x1dca .word 0xd8dfe190 ! 109: LDXA_I ldxa [%r31, + 0x0190] %asi, %r12 .word 0x87802016 ! 110: WRASI_I wr %r0, 0x0016, %asi mondo_8_83: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r20, [%r0+0x3d0] %asi .word 0x9d948013 ! 111: WRPR_WSTATE_R wrpr %r18, %r19, %wstate .word 0x81460000 ! 112: RD_STICK_REG stbar vahole1_8_84: nop ta T_CHANGE_NONHPRIV setx vahole_target1, %r18, %r27 jmpl %r27+0, %r27 .word 0xa1b507d2 ! 113: PDIST pdistn %d20, %d18, %d16 nop ta T_CHANGE_HPRIV mov 0x8+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_8_85 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_8_85 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100c0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_8_85: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 114: RDPC rd %pc, %r20 #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_8_86) + 16, 16, 16)) -> intp(2,0,15,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_8_86)&0xffffffff) + 48, 16, 16)) -> intp(5,0,19,,,,,1) #else set 0x571017e1, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_8_86: .word 0x39400001 ! 115: FBPUGE fbuge,a,pn %fcc0, pmu_8_87: nop setx 0xffffffbcffffffad, %g1, %g7 .word 0xa3800007 ! 116: WR_PERF_COUNTER_R wr %r0, %r7, %- trapasi_8_88: nop mov 0x10, %r1 ! (VA for ASI 0x49) .word 0xd8884920 ! 117: LDUBA_R lduba [%r1, %r0] 0x49, %r12 .word 0xa7450000 ! 118: RD_SET_SOFTINT rd %set_softint, %r19 fpinit_8_89: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x89a009a4 ! 119: FDIVs fdivs %f0, %f4, %f4 .word 0x9f8026dc ! 120: SIR sir 0x06dc nop ta T_CHANGE_HPRIV ! macro donret_8_90: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_90-donret_8_90+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0093a300 | (20 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1647, %htstate ta T_CHANGE_NONPRIV ! rand=0 (8) retry .align 32 donretarg_8_90: .word 0xe66fe026 ! 121: LDSTUB_I ldstub %r19, [%r31 + 0x0026] .word 0x9f8036d6 ! 122: SIR sir 0x16d6 splash_htba_8_91: nop ta T_CHANGE_HPRIV setx 0x00000000002a0000, %r11, %r12 .word 0x8b98000c ! 123: WRHPR_HTBA_R wrhpr %r0, %r12, %htba nop ta T_CHANGE_HPRIV mov 0x8+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_8_92 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_8_92 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100f0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_8_92: ta T_CHANGE_NONHPRIV .word 0xa3414000 ! 124: RDPC rd %pc, %r17 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_8_93: .word 0x39400001 ! 125: FBPUGE fbuge,a,pn %fcc0, .word 0x8d802004 ! 126: WRFPRS_I wr %r0, 0x0004, %fprs .word 0xc3e90032 ! 127: PREFETCHA_R prefetcha [%r4, %r18] 0x01, #one_read .word 0xa9b0c7cb ! 128: PDIST pdistn %d34, %d42, %d20 fblg,a,pn %fcc0, skip_8_96 brlez,a,pt %r4, skip_8_96 .align 2048 skip_8_96: .word 0x87ac8a53 ! 129: FCMPd fcmpd %fcc, %f18, %f50 .word 0xe88008a0 ! 130: LDUWA_R lduwa [%r0, %r0] 0x45, %r20 intveclr_8_97: nop ta T_CHANGE_HPRIV setx 0x253b0c7acd5feda8, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 131: FBPLG fblg,a,pn %fcc0, splash_hpstate_8_98: .word 0x81983787 ! 132: WRHPR_HPSTATE_I wrhpr %r0, 0x1787, %hpstate trapasi_8_99: nop mov 0x0, %r1 ! (VA for ASI 0x72) .word 0xe8c84e40 ! 133: LDSBA_R ldsba [%r1, %r0] 0x72, %r20 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_8_100)+8, 16, 16)) -> intp(mask2tid(0x8),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_8_100)&0xffffffff) + 32, 16, 16)) -> intp(mask2tid(0x8),1,3,,,,,1) xir_8_100: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_8_100: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9826a11 ! 134: WR_SET_SOFTINT_I wr %r9, 0x0a11, %set_softint intveclr_8_101: nop ta T_CHANGE_HPRIV setx 0x8a8b0839830a1c10, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 135: FBPLG fblg,a,pn %fcc0, intveclr_8_102: nop ta T_CHANGE_HPRIV setx 0x7ba4886c73c8be71, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 136: FBPLG fblg,a,pn %fcc0, nop ta T_CHANGE_HPRIV ! macro donret_8_103: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_103-donret_8_103), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00aa7100 | (54 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1c11, %htstate ta T_CHANGE_NONPRIV ! rand=0 (8) ldx [%r11+%r0], %g1 done donretarg_8_103: .word 0xe86fe0eb ! 137: LDSTUB_I ldstub %r20, [%r31 + 0x00eb] ibp_8_104: nop .word 0xc1bfe080 ! 138: STDFA_I stda %f0, [0x0080, %r31] nop ta T_CHANGE_HPRIV mov 0x8, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_8_105 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00161fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_8_105: ta T_CHANGE_NONHPRIV .word 0xe9e7e00c ! 139: CASA_R casa [%r31] %asi, %r12, %r20 splash_cmpr_8_106: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 140: WR_TICK_CMPR_REG_R wr %r0, %r17, %- .word 0xe83fe0c0 ! 141: STD_I std %r20, [%r31 + 0x00c0] .word 0x93d020b4 ! 142: Tcc_I tne icc_or_xcc, %r0 + 180 splash_hpstate_8_108: ta T_CHANGE_NONHPRIV .word 0x81983e67 ! 143: WRHPR_HPSTATE_I wrhpr %r0, 0x1e67, %hpstate dvapa_8_109: nop ta T_CHANGE_HPRIV mov 0x9f2, %r20 mov 0x3, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0x97702c2d ! 144: POPC_I popc 0x0c2d, %r11 .word 0x39400001 ! 1: FBPUGE fbuge,a,pn %fcc0, .word 0x8d903b83 ! 145: WRPR_PSTATE_I wrpr %r0, 0x1b83, %pstate memptr_8_111: set user_data_start, %r31 .word 0x8582f8ee ! 146: WRCCR_I wr %r11, 0x18ee, %ccr ceter_8_112: nop ta T_CHANGE_HPRIV mov 7, %r17 sllx %r17, 60, %r17 mov 0x18, %r16 stxa %r17, [%r16]0x4c ta T_CHANGE_NONHPRIV .word 0xa1410000 ! 147: RDTICK rd %tick, %r16 nop ta T_CHANGE_HPRIV ! macro donret_8_113: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_113-donret_8_113+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00cdb300 | (0x80 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1b52, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (8) ldx [%r11+%r0], %g1 done donretarg_8_113: .word 0xe6ffe029 ! 148: SWAPA_I swapa %r19, [%r31 + 0x0029] %asi splash_tba_8_114: nop ta T_CHANGE_PRIV setx 0x00000000003a0000, %r11, %r12 .word 0x8b90000c ! 149: WRPR_TBA_R wrpr %r0, %r12, %tba splash_htba_8_115: nop ta T_CHANGE_HPRIV setx 0x00000000002a0000, %r11, %r12 .word 0x8b98000c ! 150: WRHPR_HTBA_R wrhpr %r0, %r12, %htba fpinit_8_116: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x8da009c4 ! 151: FDIVd fdivd %f0, %f4, %f6 tagged_8_117: taddcctv %r19, 0x15f3, %r17 .word 0xe607e136 ! 152: LDUW_I lduw [%r31 + 0x0136], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_8_118)+48, 16, 16)) -> intp(mask2tid(0x8),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_8_118)&0xffffffff) + 48, 16, 16)) -> intp(mask2tid(0x8),1,3,,,,,1) xir_8_118: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_8_118: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa98220db ! 153: WR_SET_SOFTINT_I wr %r8, 0x00db, %set_softint .word 0x89800011 ! 154: WRTICK_R wr %r0, %r17, %tick mondo_8_120: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r1, [%r0+0x3d8] %asi .word 0x9d944012 ! 155: WRPR_WSTATE_R wrpr %r17, %r18, %wstate .word 0xe737c000 ! 156: STQF_R - %f19, [%r0, %r31] .word 0x8780204f ! 157: WRASI_I wr %r0, 0x004f, %asi .word 0xa06ab5b8 ! 158: UDIVX_I udivx %r10, 0xfffff5b8, %r16 splash_cmpr_8_121: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 .word 0xb3800011 ! 159: WR_STICK_CMPR_REG_R wr %r0, %r17, %- nop ta T_CHANGE_HPRIV ! macro donret_8_122: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_8_122-donret_8_122), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00224600 | (0x82 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1ddf, %htstate ta T_CHANGE_NONPRIV ! rand=0 (8) ldx [%r12+%r0], %g1 retry donretarg_8_122: .word 0xa5a409d4 ! 160: FDIVd fdivd %f16, %f20, %f18 pmu_8_123: nop setx 0xffffffbeffffffa8, %g1, %g7 .word 0xa3800007 ! 161: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_tba_8_124: nop ta T_CHANGE_PRIV set 0x120000, %r12 .word 0x8b90000c ! 162: WRPR_TBA_R wrpr %r0, %r12, %tba mondo_8_125: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r12, [%r0+0x3d8] %asi .word 0x9d910013 ! 163: WRPR_WSTATE_R wrpr %r4, %r19, %wstate .word 0xa190200b ! 164: WRPR_GL_I wrpr %r0, 0x000b, %- trapasi_8_126: nop mov 0x8, %r1 ! (VA for ASI 0x5b) .word 0xdad04b60 ! 165: LDSHA_R ldsha [%r1, %r0] 0x5b, %r13 .word 0x8d802004 ! 166: WRFPRS_I wr %r0, 0x0004, %fprs splash_tba_8_127: nop ta T_CHANGE_PRIV setx 0x00000000003a0000, %r11, %r12 .word 0x8b90000c ! 167: WRPR_TBA_R wrpr %r0, %r12, %tba invalw mov 0xb4, %r30 .word 0x91d0001e ! 168: Tcc_R ta icc_or_xcc, %r0 + %r30 nop ta T_CHANGE_HPRIV mov 0x8, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_8_128 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00121fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_8_128: ta T_CHANGE_NONHPRIV .word 0xdbe7e014 ! 169: CASA_R casa [%r31] %asi, %r20, %r13 .word 0x9f8022e9 ! 170: SIR sir 0x02e9 .word 0x8d9022c5 ! 171: WRPR_PSTATE_I wrpr %r0, 0x02c5, %pstate ibp_8_130: nop ta T_CHANGE_NONHPRIV .word 0xe1bfe100 ! 172: STDFA_I stda %f16, [0x0100, %r31] .word 0x926c74d4 ! 173: UDIVX_I udivx %r17, 0xfffff4d4, %r9 .word 0x956cc006 ! 174: SDIVX_R sdivx %r19, %r6, %r10 dvapa_8_131: nop ta T_CHANGE_HPRIV mov 0xbe4, %r20 mov 0x1b, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe11fc014 ! 175: LDDF_R ldd [%r31, %r20], %f16 .word 0xa782e921 ! 176: WR_GRAPHICS_STATUS_REG_I wr %r11, 0x0921, %- nop ta T_CHANGE_HPRIV mov 0x8+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_8_132 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_8_132 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610060, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_8_132: ta T_CHANGE_NONHPRIV .word 0xa5414000 ! 177: RDPC rd %pc, %r18 fpinit_8_133: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e83d17 ! 178: PREFETCHA_I prefetcha [%r0, + 0xfffffd17] %asi, #one_read splash_lsu_8_134: nop ta T_CHANGE_HPRIV set 0xe9b4ad58, %r2 mov 0x4, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL ta T_CHANGE_NONHPRIV .word 0x3d400001 ! 179: FBPULE fbule,a,pn %fcc0, .word 0x87802020 ! 180: WRASI_I wr %r0, 0x0020, %asi #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_8_135)+40, 16, 16)) -> intp(mask2tid(0x8),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_8_135)&0xffffffff) + 32, 16, 16)) -> intp(mask2tid(0x8),1,3,,,,,1) xir_8_135: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_8_135: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984fb8e ! 181: WR_SET_SOFTINT_I wr %r19, 0x1b8e, %set_softint trapasi_8_136: nop mov 0x110, %r1 ! (VA for ASI 0x4a) .word 0xdac04940 ! 182: LDSWA_R ldswa [%r1, %r0] 0x4a, %r13 intveclr_8_137: nop ta T_CHANGE_HPRIV setx 0x80bbca91f87df313, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 183: FBPLG fblg,a,pn %fcc0, tagged_8_138: tsubcctv %r19, 0x1c97, %r16 .word 0xda07e15d ! 184: LDUW_I lduw [%r31 + 0x015d], %r13 splash_hpstate_8_139: ta T_CHANGE_NONHPRIV .word 0x22cc0001 ! 1: BRZ brz,a,pt %r16, .word 0x819828df ! 185: WRHPR_HPSTATE_I wrhpr %r0, 0x08df, %hpstate .word 0xda77c000 ! 186: STX_R stx %r13, [%r31 + %r0] brcommon3_8_140: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xdb37e0a0 ! 1: STQF_I - %f13, [0x00a0, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0x81983a9d ! 187: WRHPR_HPSTATE_I wrhpr %r0, 0x1a9d, %hpstate otherw mov 0x34, %r30 .word 0x93d0001e ! 188: Tcc_R tne icc_or_xcc, %r0 + %r30 ibp_8_141: nop .word 0xa97024ad ! 189: POPC_I popc 0x04ad, %r20 tagged_8_142: tsubcctv %r0, 0x1393, %r4 .word 0xd807e0e4 ! 190: LDUW_I lduw [%r31 + 0x00e4], %r12 .word 0x8780204f ! 191: WRASI_I wr %r0, 0x004f, %asi intveclr_8_143: nop ta T_CHANGE_HPRIV setx 0x82de610cf4b33840, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 192: FBPLG fblg,a,pn %fcc0, #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_8_144) + 16, 16, 16)) -> intp(1,0,17,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_8_144)&0xffffffff) + 48, 16, 16)) -> intp(3,0,16,,,,,1) #else set 0xc840f9d9, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_8_144: .word 0x39400001 ! 193: FBPUGE fbuge,a,pn %fcc0, .word 0x8780204f ! 194: WRASI_I wr %r0, 0x004f, %asi .word 0x89800011 ! 195: WRTICK_R wr %r0, %r17, %tick dvapa_8_146: nop ta T_CHANGE_HPRIV mov 0xc1e, %r20 mov 0x8, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xc1bfe0e0 ! 196: STDFA_I stda %f0, [0x00e0, %r31] splash_tba_8_147: nop ta T_CHANGE_PRIV setx 0x00000000003a0000, %r11, %r12 .word 0x8b90000c ! 197: WRPR_TBA_R wrpr %r0, %r12, %tba .word 0xa4c42176 ! 198: ADDCcc_I addccc %r16, 0x0176, %r18 pmu_8_148: nop setx 0xffffffb6ffffffad, %g1, %g7 .word 0xa3800007 ! 199: WR_PERF_COUNTER_R wr %r0, %r7, %- ibp_8_149: nop ta T_CHANGE_NONHPRIV .word 0xe1bfe180 ! 200: STDFA_I stda %f16, [0x0180, %r31] nop nop ta T_CHANGE_PRIV wrpr %g0, %g0, %gl nop nop .text setx join_lbl_0_0, %g1, %g2 jmp %g2 nop fork_lbl_0_3: setup_tick: setx 0xabb38513bafe24bf, %r1, %r17 wrpr %g0, %r17, %tick rd %asi, %r12 #ifdef XIR_RND_CORES setup_xir_4: setx 0xc43a940b74a22bf6, %r1, %r28 mov 0x30, %r17 stxa %r28, [%r17] 0x41 #endif setup_spu_4: wr %g0, 0x40, %asi !# allocate control word queue (e.g., setup head/tail/first/last registers) set CWQ_BASE, %l6 #ifndef SPC ldxa [%g0]0x63, %o2 and %o2, 0x38, %o2 sllx %o2, 5, %o2 !(CID*256) add %l6, %o2, %l6 #endif # 878 "diag.j" !# write base addr to first, head, and tail ptr !# first store to first stxa %l6, [%g0 + ASI_SPU_CWQ_FIRST] %asi !# first store to first stxa %l6, [%g0 + ASI_SPU_CWQ_HEAD] %asi !# then to head stxa %l6, [%g0 + ASI_SPU_CWQ_TAIL] %asi !# then to tail setx CWQ_LAST, %g1, %l5 !# then end of CWQ region to LAST #ifndef SPC add %l5, %o2, %l5 #endif stxa %l5, [%g0 + ASI_SPU_CWQ_LAST] %asi !# set CWQ control word ([39:37] is strand ID ..) best_set_reg(0x20610000, %l1, %l2) !# Control Word sllx %l2, 32, %l2 !# write CWQ entry (%l6 points to CWQ) stx %l2, [%l6 + 0x0] setx msg, %g1, %l2 stx %l2, [%l6 + 0x8] !# source address stx %g0, [%l6 + 0x10] !# Authentication Key Address (40-bit) stx %g0, [%l6 + 0x18] !# Authentication IV Address (40-bit) stx %g0, [%l6 + 0x20] !# Authentication FSAS Address (40-bit) stx %g0, [%l6 + 0x28] !# Encryption Key Address (40-bit) stx %g0, [%l6 + 0x30] !# Encryption Initialization Vector Address (40-bit) setx results, %g1, %o3 stx %o3, [%l6 + 0x38] !# Destination Address (40-bit) membar #Sync ldxa [%g0 + ASI_SPU_CWQ_TAIL] %asi, %l2 add %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_TAIL] %asi !# Kick off the CWQ operation by writing to the CWQ_CSR !# Set the enabled bit and reset the other bits or %g0, 0x1, %g1 stxa %g1, [%g0 + ASI_SPU_CWQ_CSR] %asi unlock_sync_thds_4: set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o2 and %o2, 0x38, %o2 add %o2, %r23, %r23 #endif st %r0, [%r23] !unlock sync_thr_counter6 sub %r23, 64, %r23 st %r0, [%r23] !unlock sync_thr_counter5 sub %r23, 64, %r23 st %r0, [%r23] !unlock sync_thr_counter4 wr %r0, %r12, %asi ta T_CHANGE_NONHPRIV ibp_4_1: nop .word 0xc1bfe060 ! 1: STDFA_I stda %f0, [0x0060, %r31] splash_cmpr_4_2: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 .word 0xaf800011 ! 2: WR_TICK_CMPR_REG_R wr %r0, %r17, %- mondo_4_3: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r19, [%r0+0x3c8] %asi .word 0x9d950002 ! 3: WRPR_WSTATE_R wrpr %r20, %r2, %wstate .word 0xc19fe120 ! 4: LDDFA_I ldda [%r31, 0x0120], %f0 nop ta T_CHANGE_HPRIV mov 0x4+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_4_4 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_4_4 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610000, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_4_4: ta T_CHANGE_NONHPRIV .word 0xa1414000 ! 5: RDPC rd %pc, %r16 nop ta T_CHANGE_HPRIV ! macro donret_4_5: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_5-donret_4_5), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x008ca500 | (57 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1f5f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (4) ldx [%r11+%r0], %g1 done donretarg_4_5: .word 0x8d903d8d ! 6: WRPR_PSTATE_I wrpr %r0, 0x1d8d, %pstate .word 0xe937e01e ! 7: STQF_I - %f20, [0x001e, %r31] jmptr_4_6: nop best_set_reg(0xe1200000, %r20, %r27) .word 0xb7c6c000 ! 8: JMPL_R jmpl %r27 + %r0, %r27 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_4_7: .word 0x39400001 ! 9: FBPUGE fbuge,a,pn %fcc0, .word 0xa9b7c7d4 ! 1: PDIST pdistn %d62, %d20, %d20 .word 0x9f80394a ! 10: SIR sir 0x194a .word 0x8d802000 ! 11: WRFPRS_I wr %r0, 0x0000, %fprs trapasi_4_8: nop mov 0x8, %r1 ! (VA for ASI 0x48) .word 0xe8c84900 ! 12: LDSBA_R ldsba [%r1, %r0] 0x48, %r20 .word 0xe81fe168 ! 13: LDD_I ldd [%r31 + 0x0168], %r20 .word 0x28800001 ! 1: BLEU bleu,a .word 0x8d903807 ! 14: WRPR_PSTATE_I wrpr %r0, 0x1807, %pstate nop ta T_CHANGE_HPRIV mov 0x4+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_4_10 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_4_10 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610060, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_4_10: ta T_CHANGE_NONHPRIV .word 0x99414000 ! 15: RDPC rd %pc, %r12 brcommon2_4_11: nop setx common_target, %r12, %r27 ba,a .+12 .word 0x81dfc009 ! 1: FLUSH_R flush %r31, %r9, %r0 ba,a .+8 jmpl %r27+0, %r27 .word 0xe1bfe020 ! 16: STDFA_I stda %f16, [0x0020, %r31] jmptr_4_12: nop best_set_reg(0xe1200000, %r20, %r27) .word 0xb7c6c000 ! 17: JMPL_R jmpl %r27 + %r0, %r27 mondo_4_13: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r18, [%r0+0x3e8] %asi .word 0x9d948011 ! 18: WRPR_WSTATE_R wrpr %r18, %r17, %wstate mondo_4_14: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r8, [%r0+0x3e8] %asi .word 0x9d930003 ! 19: WRPR_WSTATE_R wrpr %r12, %r3, %wstate splash_cmpr_4_15: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 20: WR_STICK_CMPR_REG_R wr %r0, %r17, %- #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_4_16) + 16, 16, 16)) -> intp(6,0,30,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_4_16)&0xffffffff) + 8, 16, 16)) -> intp(1,0,24,,,,,1) #else set 0x5930db2e, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_4_16: .word 0x39400001 ! 21: FBPUGE fbuge,a,pn %fcc0, .word 0x81d8400b ! 22: FLUSH_R flush %r1, %r11, %r0 .word 0x24ca8001 ! 1: BRLEZ brlez,a,pt %r10, .word 0x8d902921 ! 23: WRPR_PSTATE_I wrpr %r0, 0x0921, %pstate .word 0x8f902001 ! 1: WRPR_TL_I wrpr %r0, 0x0001, %tl reduce_priv_lvl_4_18: ta T_CHANGE_NONHPRIV ! macro mondo_4_19: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r19, [%r0+0x3d0] %asi .word 0x9d940011 ! 25: WRPR_WSTATE_R wrpr %r16, %r17, %wstate .word 0x81510000 ! 26: RDPR_TICK rdpr %tick, %r0 .word 0x879a27bf ! 27: WRHPR_HINTP_I wrhpr %r8, 0x07bf, %hintp fpinit_4_20: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x8db00484 ! 28: FCMPLE32 fcmple32 %d0, %d4, %r6 mondo_4_21: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r17, [%r0+0x3c8] %asi .word 0x9d910008 ! 29: WRPR_WSTATE_R wrpr %r4, %r8, %wstate splash_hpstate_4_22: .word 0x81982687 ! 30: WRHPR_HPSTATE_I wrhpr %r0, 0x0687, %hpstate splash_tba_4_23: nop ta T_CHANGE_PRIV setx 0x0000000400380000, %r11, %r12 .word 0x8b90000c ! 31: WRPR_TBA_R wrpr %r0, %r12, %tba trapasi_4_24: nop mov 0x110, %r1 ! (VA for ASI 0x4a) .word 0xe8c84940 ! 32: LDSBA_R ldsba [%r1, %r0] 0x4a, %r20 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_4_25: .word 0x39400001 ! 33: FBPUGE fbuge,a,pn %fcc0, nop ta T_CHANGE_HPRIV mov 0x4, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_4_26 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00161fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_4_26: ta T_CHANGE_NONHPRIV .word 0xe9e7e014 ! 34: CASA_R casa [%r31] %asi, %r20, %r20 .word 0xe89fe1a8 ! 35: LDDA_I ldda [%r31, + 0x01a8] %asi, %r20 nop ta T_CHANGE_HPRIV mov 0x4, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_4_27 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_4_27: ta T_CHANGE_NONHPRIV .word 0xe9e7e013 ! 36: CASA_R casa [%r31] %asi, %r19, %r20 nop ta T_CHANGE_HPRIV ! macro donret_4_28: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_28-donret_4_28), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00500f00 | (16 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xcd6, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (4) retry donretarg_4_28: .word 0x27400001 ! 37: FBPUL fbul,a,pn %fcc0, brcommon2_4_29: nop setx common_target, %r12, %r27 ba,a .+12 .word 0xa9a7c969 ! 1: FMULq dis not found ba,a .+8 jmpl %r27+0, %r27 .word 0xc19fe180 ! 38: LDDFA_I ldda [%r31, 0x0180], %f0 cmp_4_30: nop ta T_CHANGE_HPRIV rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 mov 0xff, %r9 xor %r9, 0x4, %r9 sllx %r9, %r8, %r9 ! My core mask #else mov 0, %r8 mov 0xff, %r9 xor %r9, 0x4, %r9 ! My core mask #endif mov 0x4, %r10 cmp_startwait4_30: cas [%r23],%g0,%r10 !lock brz,a %r10, continue_cmp_4_30 ldxa [0x50]%asi, %r13 !Running_rw ld [%r23], %r10 cmp_wait4_30: brnz,a %r10, cmp_wait4_30 ld [%r23], %r10 ba cmp_startwait4_30 mov 0x4, %r10 continue_cmp_4_30: ldxa [0x58]%asi, %r14 !Running_status xnor %r14, %r13, %r14 !Bits equal brz,a %r8, cmp_multi_core_4_30 mov 0xfb, %r17 best_set_reg(0x3fdceff047d129fa, %r16, %r17) cmp_multi_core_4_30: and %r14, %r17, %r14 !Apply set/clear mask to bits equal and %r14, %r9, %r14 !Apply core-mask stxa %r14, [0x60]%asi st %g0, [%r23] !clear lock wr %g0, %r12, %asi ta T_CHANGE_NONHPRIV .word 0x91948007 ! 39: WRPR_PIL_R wrpr %r18, %r7, %pil .word 0xd877e198 ! 40: STX_I stx %r12, [%r31 + 0x0198] nop ta T_CHANGE_HPRIV mov 0x4+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_4_31 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_4_31 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610050, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_4_31: ta T_CHANGE_NONHPRIV .word 0x99414000 ! 41: RDPC rd %pc, %r12 .word 0xe69fe1f0 ! 42: LDDA_I ldda [%r31, + 0x01f0] %asi, %r19 nop ta T_CHANGE_HPRIV mov 0x4, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_4_33 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00021fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_4_33: ta T_CHANGE_NONHPRIV .word 0xe7e7e00b ! 43: CASA_R casa [%r31] %asi, %r11, %r19 nop ta T_CHANGE_HPRIV ! macro donret_4_34: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_34-donret_4_34+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00d61500 | (0x82 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x149f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (4) retry donretarg_4_34: .word 0xe66fe0b9 ! 44: LDSTUB_I ldstub %r19, [%r31 + 0x00b9] nop mov 0x80, %g3 .word 0x38800001 ! 1: BGU bgu,a stxa %g3, [%g3] 0x57 .word 0xe65fc000 ! 45: LDX_R ldx [%r31 + %r0], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_4_35)+48, 16, 16)) -> intp(mask2tid(0x4),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_4_35)&0xffffffff) + 8, 16, 16)) -> intp(mask2tid(0x4),1,3,,,,,1) xir_4_35: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_4_35: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa98326e9 ! 46: WR_SET_SOFTINT_I wr %r12, 0x06e9, %set_softint iaw_4_36: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x4, %r16 iaw_startwait4_36: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_4_36 mov (~0x4&0xf), %r16 ld [%r23], %r16 iaw_wait4_36: brnz %r16, iaw_wait4_36 ld [%r23], %r16 ba iaw_startwait4_36 mov 0x4, %r16 continue_iaw_4_36: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_4_36: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_4_36 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_4_36: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_4_36 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit4_36: mov 0x38, %r18 iaw2_4_36: rdpr %tba, %r19 mov 0x11, %r20 sllx %r20, 5, %r20 add %r20, %r19, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0xe697c02d ! 47: LDUHA_R lduha [%r31, %r13] 0x01, %r19 nop ta T_CHANGE_HPRIV ! macro donret_4_37: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_37-donret_4_37+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r12, %r10, %r12 ! low VA tpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0004f900 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1007, %htstate ta T_CHANGE_NONPRIV ! rand=0 (4) ldx [%r11+%r0], %g1 done .align 32 donretarg_4_37: .word 0x8d902445 ! 48: WRPR_PSTATE_I wrpr %r0, 0x0445, %pstate splash_tick_4_38: nop ta T_CHANGE_HPRIV best_set_reg(0x9fed72b4cd9d631c, %r16, %r17) .word 0x89800011 ! 49: WRTICK_R wr %r0, %r17, %tick iaw_4_39: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x4, %r16 iaw_startwait4_39: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_4_39 mov (~0x4&0xf), %r16 ld [%r23], %r16 iaw_wait4_39: brnz %r16, iaw_wait4_39 ld [%r23], %r16 ba iaw_startwait4_39 mov 0x4, %r16 continue_iaw_4_39: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_4_39: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_4_39 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_4_39: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_4_39 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit4_39: mov 0x38, %r18 iaw4_4_39: setx common_target, %r20, %r19 or %r19, 0x1, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0xc1bfe100 ! 50: STDFA_I stda %f0, [0x0100, %r31] splash_lsu_4_40: nop ta T_CHANGE_HPRIV set 0xb8e55709, %r2 mov 0x3, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 51: FBPULE fbule,a,pn %fcc0, change_to_randtl_4_41: ta T_CHANGE_HPRIV ! macro done_change_to_randtl_4_41: .word 0x8f902000 ! 52: WRPR_TL_I wrpr %r0, 0x0000, %tl .word 0xe1bfdf20 ! 53: STDFA_R stda %f16, [%r0, %r31] splash_tick_4_42: nop ta T_CHANGE_HPRIV best_set_reg(0xd4ebe61593823e85, %r16, %r17) .word 0x89800011 ! 54: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV ! macro donret_4_43: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_43-donret_4_43+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00692e00 | (32 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1f5d, %htstate ta T_CHANGE_NONPRIV ! rand=0 (4) .word 0x3a800001 ! 1: BCC bcc,a done .align 32 donretarg_4_43: .word 0x819836d5 ! 55: WRHPR_HPSTATE_I wrhpr %r0, 0x16d5, %hpstate .word 0xe64fc000 ! 56: LDSB_R ldsb [%r31 + %r0], %r19 .word 0xe71fe0c0 ! 57: LDDF_I ldd [%r31, 0x00c0], %f19 .word 0x87802039 ! 58: WRASI_I wr %r0, 0x0039, %asi splash_tick_4_44: nop ta T_CHANGE_HPRIV best_set_reg(0xa885e9545cf09b02, %r16, %r17) .word 0x89800011 ! 59: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV mov 0x4+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_4_45 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_4_45 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100e0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_4_45: ta T_CHANGE_NONHPRIV .word 0xa5414000 ! 60: RDPC rd %pc, %r18 mondo_4_46: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r12, [%r0+0x3d0] %asi .word 0x9d944005 ! 61: WRPR_WSTATE_R wrpr %r17, %r5, %wstate .word 0x93d02035 ! 62: Tcc_I tne icc_or_xcc, %r0 + 53 splash_lsu_4_47: nop ta T_CHANGE_HPRIV set 0xcb7db2fd, %r2 mov 0x7, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 63: FBPULE fbule,a,pn %fcc0, ibp_4_48: nop .word 0xc1bfdf20 ! 64: STDFA_R stda %f0, [%r0, %r31] splash_hpstate_4_49: .word 0x819824c7 ! 65: WRHPR_HPSTATE_I wrhpr %r0, 0x04c7, %hpstate .word 0x8d903f47 ! 66: WRPR_PSTATE_I wrpr %r0, 0x1f47, %pstate rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_4_51: .word 0x39400001 ! 67: FBPUGE fbuge,a,pn %fcc0, iaw_4_52: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x4, %r16 iaw_startwait4_52: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_4_52 mov (~0x4&0xf), %r16 ld [%r23], %r16 iaw_wait4_52: brnz %r16, iaw_wait4_52 ld [%r23], %r16 ba iaw_startwait4_52 mov 0x4, %r16 continue_iaw_4_52: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_4_52: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_4_52 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_4_52: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_4_52 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit4_52: mov 0x38, %r18 iaw2_4_52: rdpr %tba, %r19 mov 0x320, %r20 sllx %r20, 5, %r20 add %r20, %r19, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0x9ba409d4 ! 68: FDIVd fdivd %f16, %f20, %f44 nop ta T_CHANGE_HPRIV ! macro donret_4_53: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_53-donret_4_53+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00a51300 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xf0d, %htstate ta T_CHANGE_NONPRIV ! rand=0 (4) ldx [%r11+%r0], %g1 done donretarg_4_53: .word 0x3d400001 ! 69: FBPULE fbule,a,pn %fcc0, set 0x1847, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0x93b487c5 ! 70: PDIST pdistn %d18, %d36, %d40 cmp_4_54: nop ta T_CHANGE_HPRIV rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 mov 0xff, %r9 xor %r9, 0x4, %r9 sllx %r9, %r8, %r9 ! My core mask #else mov 0, %r8 mov 0xff, %r9 xor %r9, 0x4, %r9 ! My core mask #endif mov 0x4, %r10 cmp_startwait4_54: cas [%r23],%g0,%r10 !lock brz,a %r10, continue_cmp_4_54 ldxa [0x50]%asi, %r13 !Running_rw ld [%r23], %r10 cmp_wait4_54: brnz,a %r10, cmp_wait4_54 ld [%r23], %r10 ba cmp_startwait4_54 mov 0x4, %r10 continue_cmp_4_54: ldxa [0x58]%asi, %r14 !Running_status xnor %r14, %r13, %r14 !Bits equal brz,a %r8, cmp_multi_core_4_54 mov 0x58, %r17 best_set_reg(0x6c959f8949390f22, %r16, %r17) cmp_multi_core_4_54: and %r14, %r17, %r14 !Apply set/clear mask to bits equal and %r14, %r9, %r14 !Apply core-mask stxa %r14, [0x60]%asi st %g0, [%r23] !clear lock wr %g0, %r12, %asi .word 0xa3a0016a ! 71: FABSq dis not found ibp_4_55: nop ta T_CHANGE_NONHPRIV .word 0xc19fc2c0 ! 72: LDDFA_R ldda [%r31, %r0], %f0 nop ta T_CHANGE_HPRIV ! macro donret_4_56: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_56-donret_4_56), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x000b2800 | (0x8a << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x89d, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (4) retry .align 32 donretarg_4_56: .word 0xe4ffe1d6 ! 73: SWAPA_I swapa %r18, [%r31 + 0x01d6] %asi brcommon3_4_57: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c009 ! 1: STQF_R - %f18, [%r9, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe51fe1a0 ! 74: LDDF_I ldd [%r31, 0x01a0], %f18 cmp_4_58: nop ta T_CHANGE_HPRIV rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 mov 0xff, %r9 xor %r9, 0x4, %r9 sllx %r9, %r8, %r9 ! My core mask #else mov 0, %r8 mov 0xff, %r9 xor %r9, 0x4, %r9 ! My core mask #endif mov 0x4, %r10 cmp_startwait4_58: cas [%r23],%g0,%r10 !lock brz,a %r10, continue_cmp_4_58 ldxa [0x50]%asi, %r13 !Running_rw ld [%r23], %r10 cmp_wait4_58: brnz,a %r10, cmp_wait4_58 ld [%r23], %r10 ba cmp_startwait4_58 mov 0x4, %r10 continue_cmp_4_58: ldxa [0x58]%asi, %r14 !Running_status xnor %r14, %r13, %r14 !Bits equal brz,a %r8, cmp_multi_core_4_58 mov 0xb0, %r17 best_set_reg(0xa3b47c302883b518, %r16, %r17) cmp_multi_core_4_58: and %r14, %r17, %r14 !Apply set/clear mask to bits equal and %r14, %r9, %r14 !Apply core-mask stxa %r14, [0x60]%asi st %g0, [%r23] !clear lock wr %g0, %r12, %asi ta T_CHANGE_NONHPRIV .word 0x91940006 ! 75: WRPR_PIL_R wrpr %r16, %r6, %pil splash_cmpr_4_59: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 ta T_CHANGE_PRIV .word 0xb3800011 ! 76: WR_STICK_CMPR_REG_R wr %r0, %r17, %- splash_cmpr_4_60: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 77: WR_STICK_CMPR_REG_R wr %r0, %r17, %- .word 0x8780208b ! 78: WRASI_I wr %r0, 0x008b, %asi brcommon3_4_61: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c009 ! 1: STQF_R - %f18, [%r9, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe51fe1c0 ! 79: LDDF_I ldd [%r31, 0x01c0], %f18 mondo_4_62: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r4, [%r0+0x3e0] %asi .word 0x9d91c011 ! 80: WRPR_WSTATE_R wrpr %r7, %r17, %wstate nop mov 0x80, %g3 stxa %g3, [%g3] 0x5f .word 0xbfe7c000 ! 1: SAVE_R save %r31, %r0, %r31 .word 0xe45fc000 ! 81: LDX_R ldx [%r31 + %r0], %r18 set 0x2d4, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0xa3b147d0 ! 82: PDIST pdistn %d36, %d16, %d48 .word 0xd3e7c020 ! 83: CASA_I casa [%r31] 0x 1, %r0, %r9 cmp_4_64: nop ta T_CHANGE_HPRIV rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 mov 0xff, %r9 xor %r9, 0x4, %r9 sllx %r9, %r8, %r9 ! My core mask #else mov 0, %r8 mov 0xff, %r9 xor %r9, 0x4, %r9 ! My core mask #endif mov 0x4, %r10 cmp_startwait4_64: cas [%r23],%g0,%r10 !lock brz,a %r10, continue_cmp_4_64 ldxa [0x50]%asi, %r13 !Running_rw ld [%r23], %r10 cmp_wait4_64: brnz,a %r10, cmp_wait4_64 ld [%r23], %r10 ba cmp_startwait4_64 mov 0x4, %r10 continue_cmp_4_64: ldxa [0x58]%asi, %r14 !Running_status xnor %r14, %r13, %r14 !Bits equal brz,a %r8, cmp_multi_core_4_64 mov 0xce, %r17 best_set_reg(0x0c57dc5baceaba1e, %r16, %r17) cmp_multi_core_4_64: and %r14, %r17, %r14 !Apply set/clear mask to bits equal and %r14, %r9, %r14 !Apply core-mask stxa %r14, [0x60]%asi st %g0, [%r23] !clear lock wr %g0, %r12, %asi .word 0x91a0016a ! 84: FABSq dis not found nop ta T_CHANGE_HPRIV mov 0x4+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_4_65 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_4_65 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100a0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_4_65: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 85: RDPC rd %pc, %r20 .word 0x99450000 ! 86: RD_SET_SOFTINT rd %set_softint, %r12 brcommon1_4_66: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0x93b7c7c8 ! 1: PDIST pdistn %d62, %d8, %d40 ba,a .+8 jmpl %r27+0, %r27 .word 0xa1702a80 ! 87: POPC_I popc 0x0a80, %r16 pmu_4_67: nop setx 0xffffffb0ffffffaa, %g1, %g7 .word 0xa3800007 ! 88: WR_PERF_COUNTER_R wr %r0, %r7, %- #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_4_68)+16, 16, 16)) -> intp(mask2tid(0x4),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_4_68)&0xffffffff) + 56, 16, 16)) -> intp(mask2tid(0x4),1,3,,,,,1) xir_4_68: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_4_68: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa98271f4 ! 89: WR_SET_SOFTINT_I wr %r9, 0x11f4, %set_softint rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_4_69: .word 0x39400001 ! 90: FBPUGE fbuge,a,pn %fcc0, fpinit_4_70: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e823fe ! 91: PREFETCHA_I prefetcha [%r0, + 0x03fe] %asi, #one_read mondo_4_71: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r16, [%r0+0x3d0] %asi .word 0x9d948010 ! 92: WRPR_WSTATE_R wrpr %r18, %r16, %wstate .word 0x8d903da3 ! 93: WRPR_PSTATE_I wrpr %r0, 0x1da3, %pstate .word 0x8d802000 ! 94: WRFPRS_I wr %r0, 0x0000, %fprs nop ta T_CHANGE_HPRIV mov 0x4, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_4_73 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000a1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_4_73: ta T_CHANGE_NONHPRIV .word 0xd1e7e011 ! 95: CASA_R casa [%r31] %asi, %r17, %r8 ibp_4_74: nop ta T_CHANGE_NONHPRIV .word 0xa97022a3 ! 96: POPC_I popc 0x02a3, %r20 iaw_4_75: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x4, %r16 iaw_startwait4_75: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_4_75 mov (~0x4&0xf), %r16 ld [%r23], %r16 iaw_wait4_75: brnz %r16, iaw_wait4_75 ld [%r23], %r16 ba iaw_startwait4_75 mov 0x4, %r16 continue_iaw_4_75: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_4_75: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_4_75 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_4_75: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_4_75 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit4_75: mov 0x38, %r18 iaw1_4_75: best_set_reg(0x00000000e1200000, %r20, %r19) or %r19, 0x1, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0xa9702e6c ! 97: POPC_I popc 0x0e6c, %r20 trapasi_4_76: nop mov 0x8, %r1 ! (VA for ASI 0x5a) .word 0xd8c04b40 ! 98: LDSWA_R ldswa [%r1, %r0] 0x5a, %r12 .word 0x81460000 ! 99: RD_STICK_REG stbar jmptr_4_77: nop best_set_reg(0xe0200000, %r20, %r27) .word 0xb7c6c000 ! 100: JMPL_R jmpl %r27 + %r0, %r27 pmu_4_78: nop ta T_CHANGE_PRIV setx 0xffffffb2ffffffaa, %g1, %g7 .word 0xa3800007 ! 101: WR_PERF_COUNTER_R wr %r0, %r7, %- memptr_4_79: set 0x60540000, %r31 .word 0x85823969 ! 102: WRCCR_I wr %r8, 0x1969, %ccr .word 0xd8cfe058 ! 103: LDSBA_I ldsba [%r31, + 0x0058] %asi, %r12 change_to_randtl_4_80: ta T_CHANGE_PRIV ! macro done_change_to_randtl_4_80: .word 0x8f902000 ! 104: WRPR_TL_I wrpr %r0, 0x0000, %tl pmu_4_81: nop setx 0xffffffb5ffffffa1, %g1, %g7 .word 0xa3800007 ! 105: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_lsu_4_82: nop ta T_CHANGE_HPRIV set 0x64371a1f, %r2 mov 0x1, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 .word 0x2eca0001 ! 1: BRGEZ brgez,a,pt %r8, stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 106: FBPULE fbule,a,pn %fcc0, .word 0xd8cfe1d8 ! 107: LDSBA_I ldsba [%r31, + 0x01d8] %asi, %r12 .word 0xd9e7c031 ! 1: CASA_I casa [%r31] 0x 1, %r17, %r12 .word 0x9f803ce4 ! 108: SIR sir 0x1ce4 .word 0xd8dfe060 ! 109: LDXA_I ldxa [%r31, + 0x0060] %asi, %r12 .word 0x87802088 ! 110: WRASI_I wr %r0, 0x0088, %asi mondo_4_83: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r19, [%r0+0x3c8] %asi .word 0x9d950001 ! 111: WRPR_WSTATE_R wrpr %r20, %r1, %wstate .word 0x81460000 ! 112: RD_STICK_REG stbar .word 0xa3a489d3 ! 113: FDIVd fdivd %f18, %f50, %f48 nop ta T_CHANGE_HPRIV mov 0x4+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_4_85 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_4_85 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610040, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_4_85: ta T_CHANGE_NONHPRIV .word 0x91414000 ! 114: RDPC rd %pc, %r8 #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_4_86) + 0, 16, 16)) -> intp(2,0,11,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_4_86)&0xffffffff) + 24, 16, 16)) -> intp(5,0,3,,,,,1) #else set 0xc50c659, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_4_86: .word 0x39400001 ! 115: FBPUGE fbuge,a,pn %fcc0, pmu_4_87: nop setx 0xffffffb2ffffffa4, %g1, %g7 .word 0xa3800007 ! 116: WR_PERF_COUNTER_R wr %r0, %r7, %- trapasi_4_88: nop mov 0x10, %r1 ! (VA for ASI 0x49) .word 0xd8904920 ! 117: LDUHA_R lduha [%r1, %r0] 0x49, %r12 .word 0x99450000 ! 118: RD_SET_SOFTINT rd %set_softint, %r12 fpinit_4_89: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x91a009a4 ! 119: FDIVs fdivs %f0, %f4, %f8 .word 0xe63fc008 ! 1: STD_R std %r19, [%r31 + %r8] .word 0x9f803bc3 ! 120: SIR sir 0x1bc3 nop ta T_CHANGE_HPRIV ! macro donret_4_90: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_90-donret_4_90+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00cb4b00 | (0x8a << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1f5f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (4) retry .align 32 donretarg_4_90: .word 0xe66fe044 ! 121: LDSTUB_I ldstub %r19, [%r31 + 0x0044] .word 0xe6bfc031 ! 1: STDA_R stda %r19, [%r31 + %r17] 0x01 .word 0x9f803c2a ! 122: SIR sir 0x1c2a splash_htba_4_91: nop ta T_CHANGE_HPRIV setx 0x0000000200280000, %r11, %r12 .word 0x8b98000c ! 123: WRHPR_HTBA_R wrhpr %r0, %r12, %htba nop ta T_CHANGE_HPRIV mov 0x4+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_4_92 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_4_92 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100f0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_4_92: ta T_CHANGE_NONHPRIV .word 0xa3414000 ! 124: RDPC rd %pc, %r17 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_4_93: .word 0x39400001 ! 125: FBPUGE fbuge,a,pn %fcc0, .word 0x8d802004 ! 126: WRFPRS_I wr %r0, 0x0004, %fprs iaw_4_94: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x4, %r16 iaw_startwait4_94: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_4_94 mov (~0x4&0xf), %r16 ld [%r23], %r16 iaw_wait4_94: brnz %r16, iaw_wait4_94 ld [%r23], %r16 ba iaw_startwait4_94 mov 0x4, %r16 continue_iaw_4_94: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_4_94: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_4_94 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_4_94: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_4_94 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit4_94: mov 0x38, %r18 iaw4_4_94: setx common_target, %r20, %r19 or %r19, 0x1, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0x93a089d4 ! 127: FDIVd fdivd %f2, %f20, %f40 iaw_4_95: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x4, %r16 iaw_startwait4_95: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_4_95 mov (~0x4&0xf), %r16 ld [%r23], %r16 iaw_wait4_95: brnz %r16, iaw_wait4_95 ld [%r23], %r16 ba iaw_startwait4_95 mov 0x4, %r16 continue_iaw_4_95: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_4_95: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_4_95 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_4_95: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_4_95 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit4_95: mov 0x38, %r18 iaw4_4_95: setx common_target, %r20, %r19 or %r19, 0x1, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0xa1b187d2 ! 128: PDIST pdistn %d6, %d18, %d16 .word 0x39400001 ! 129: FBPUGE fbuge,a,pn %fcc0, .word 0xe8800aa0 ! 130: LDUWA_R lduwa [%r0, %r0] 0x55, %r20 intveclr_4_97: nop ta T_CHANGE_HPRIV setx 0xcef9267a533d8af2, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 131: FBPLG fblg,a,pn %fcc0, splash_hpstate_4_98: .word 0x81983057 ! 132: WRHPR_HPSTATE_I wrhpr %r0, 0x1057, %hpstate trapasi_4_99: nop mov 0x0, %r1 ! (VA for ASI 0x72) .word 0xe8c04e40 ! 133: LDSWA_R ldswa [%r1, %r0] 0x72, %r20 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_4_100)+16, 16, 16)) -> intp(mask2tid(0x4),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_4_100)&0xffffffff) + 0, 16, 16)) -> intp(mask2tid(0x4),1,3,,,,,1) xir_4_100: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_4_100: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa98074a9 ! 134: WR_SET_SOFTINT_I wr %r1, 0x14a9, %set_softint intveclr_4_101: nop ta T_CHANGE_HPRIV setx 0x0ba80e8e0983000a, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 135: FBPLG fblg,a,pn %fcc0, intveclr_4_102: nop ta T_CHANGE_HPRIV setx 0x271fb286bc7b7d8c, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 136: FBPLG fblg,a,pn %fcc0, nop ta T_CHANGE_HPRIV ! macro donret_4_103: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_103-donret_4_103), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x007dd700 | (0x80 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xb64, %htstate ta T_CHANGE_NONPRIV ! rand=0 (4) ldx [%r11+%r0], %g1 done donretarg_4_103: .word 0xe86fe190 ! 137: LDSTUB_I ldstub %r20, [%r31 + 0x0190] ibp_4_104: nop .word 0xc1bfe180 ! 138: STDFA_I stda %f0, [0x0180, %r31] nop ta T_CHANGE_HPRIV mov 0x4, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_4_105 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_4_105: ta T_CHANGE_NONHPRIV .word 0xe9e7e011 ! 139: CASA_R casa [%r31] %asi, %r17, %r20 splash_cmpr_4_106: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 140: WR_STICK_CMPR_REG_R wr %r0, %r17, %- iaw_4_107: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x4, %r16 iaw_startwait4_107: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_iaw_4_107 mov (~0x4&0xf), %r16 ld [%r23], %r16 iaw_wait4_107: brnz %r16, iaw_wait4_107 ld [%r23], %r16 ba iaw_startwait4_107 mov 0x4, %r16 continue_iaw_4_107: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_4_107: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_4_107 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_iaw_4_107: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_iaw_4_107 ldxa [0x50]%asi, %r14 !Running_rw iaw_doit4_107: mov 0x38, %r18 iaw1_4_107: best_set_reg(0x00000000e0200000, %r20, %r19) or %r19, 0x1, %r19 stxa %r19, [%r18]0x50 stxa %r16, [0x60] %asi ! Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi ! restore %asi ta T_CHANGE_NONHPRIV .word 0xe93fc010 ! 141: STDF_R std %f20, [%r16, %r31] .word 0x91d020b4 ! 142: Tcc_I ta icc_or_xcc, %r0 + 180 splash_hpstate_4_108: ta T_CHANGE_NONHPRIV .word 0x8198210d ! 143: WRHPR_HPSTATE_I wrhpr %r0, 0x010d, %hpstate dvapa_4_109: nop ta T_CHANGE_HPRIV mov 0xd56, %r20 mov 0x1f, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0x99a4c9d1 ! 144: FDIVd fdivd %f50, %f48, %f12 .word 0x32800001 ! 1: BNE bne,a .word 0x8d902109 ! 145: WRPR_PSTATE_I wrpr %r0, 0x0109, %pstate memptr_4_111: set user_data_start, %r31 .word 0x85827ceb ! 146: WRCCR_I wr %r9, 0x1ceb, %ccr ceter_4_112: nop ta T_CHANGE_HPRIV mov 2, %r17 sllx %r17, 60, %r17 mov 0x18, %r16 stxa %r17, [%r16]0x4c ta T_CHANGE_NONHPRIV .word 0xa5410000 ! 147: RDTICK rd %tick, %r18 nop ta T_CHANGE_HPRIV ! macro donret_4_113: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_113-donret_4_113+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00217100 | (0x83 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x69c, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (4) ldx [%r11+%r0], %g1 done donretarg_4_113: .word 0xe6ffe095 ! 148: SWAPA_I swapa %r19, [%r31 + 0x0095] %asi splash_tba_4_114: nop ta T_CHANGE_PRIV setx 0x0000000400380000, %r11, %r12 .word 0x8b90000c ! 149: WRPR_TBA_R wrpr %r0, %r12, %tba splash_htba_4_115: nop ta T_CHANGE_HPRIV setx 0x0000000200280000, %r11, %r12 .word 0x8b98000c ! 150: WRHPR_HTBA_R wrhpr %r0, %r12, %htba fpinit_4_116: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x91a009c4 ! 151: FDIVd fdivd %f0, %f4, %f8 tagged_4_117: taddcctv %r12, 0x1875, %r18 .word 0xe607e02d ! 152: LDUW_I lduw [%r31 + 0x002d], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_4_118)+0, 16, 16)) -> intp(mask2tid(0x4),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_4_118)&0xffffffff) + 32, 16, 16)) -> intp(mask2tid(0x4),1,3,,,,,1) xir_4_118: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_4_118: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9842223 ! 153: WR_SET_SOFTINT_I wr %r16, 0x0223, %set_softint splash_tick_4_119: nop ta T_CHANGE_HPRIV best_set_reg(0x858df4752dbd296e, %r16, %r17) .word 0x89800011 ! 154: WRTICK_R wr %r0, %r17, %tick mondo_4_120: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r19, [%r0+0x3c0] %asi .word 0x9d92c010 ! 155: WRPR_WSTATE_R wrpr %r11, %r16, %wstate .word 0xe737c000 ! 156: STQF_R - %f19, [%r0, %r31] .word 0x8780204f ! 157: WRASI_I wr %r0, 0x004f, %asi .word 0xa06cb4d2 ! 158: UDIVX_I udivx %r18, 0xfffff4d2, %r16 splash_cmpr_4_121: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 .word 0xb3800011 ! 159: WR_STICK_CMPR_REG_R wr %r0, %r17, %- nop ta T_CHANGE_HPRIV ! macro donret_4_122: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_4_122-donret_4_122), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x001c4c00 | (0x82 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1c05, %htstate ta T_CHANGE_NONPRIV ! rand=0 (4) ldx [%r12+%r0], %g1 retry donretarg_4_122: .word 0x9ba4c9c7 ! 160: FDIVd fdivd %f50, %f38, %f44 pmu_4_123: nop setx 0xffffffbdffffffae, %g1, %g7 .word 0xa3800007 ! 161: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_tba_4_124: nop ta T_CHANGE_PRIV set 0x120000, %r12 .word 0x8b90000c ! 162: WRPR_TBA_R wrpr %r0, %r12, %tba mondo_4_125: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r8, [%r0+0x3e8] %asi .word 0x9d94c013 ! 163: WRPR_WSTATE_R wrpr %r19, %r19, %wstate .word 0xa190200e ! 164: WRPR_GL_I wrpr %r0, 0x000e, %- trapasi_4_126: nop mov 0x30, %r1 ! (VA for ASI 0x5b) .word 0xdac04b60 ! 165: LDSWA_R ldswa [%r1, %r0] 0x5b, %r13 .word 0x8d802000 ! 166: WRFPRS_I wr %r0, 0x0000, %fprs splash_tba_4_127: nop ta T_CHANGE_PRIV setx 0x0000000400380000, %r11, %r12 .word 0x8b90000c ! 167: WRPR_TBA_R wrpr %r0, %r12, %tba invalw mov 0xb0, %r30 .word 0x83d0001e ! 168: Tcc_R te icc_or_xcc, %r0 + %r30 nop ta T_CHANGE_HPRIV mov 0x4, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_4_128 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_4_128: ta T_CHANGE_NONHPRIV .word 0xdbe7e00c ! 169: CASA_R casa [%r31] %asi, %r12, %r13 .word 0xda97c032 ! 1: LDUHA_R lduha [%r31, %r18] 0x01, %r13 .word 0x9f802a99 ! 170: SIR sir 0x0a99 .word 0x8d902eff ! 171: WRPR_PSTATE_I wrpr %r0, 0x0eff, %pstate ibp_4_130: nop ta T_CHANGE_NONHPRIV .word 0xe19fc3e0 ! 172: LDDFA_R ldda [%r31, %r0], %f16 .word 0x966a209c ! 173: UDIVX_I udivx %r8, 0x009c, %r11 .word 0xa36b0011 ! 174: SDIVX_R sdivx %r12, %r17, %r17 dvapa_4_131: nop ta T_CHANGE_HPRIV mov 0xce5, %r20 mov 0x8, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xc32fc00c ! 175: STXFSR_R st-sfr %f1, [%r12, %r31] .word 0xa784a181 ! 176: WR_GRAPHICS_STATUS_REG_I wr %r18, 0x0181, %- nop ta T_CHANGE_HPRIV mov 0x4+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_4_132 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_4_132 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100a0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_4_132: ta T_CHANGE_NONHPRIV .word 0xa3414000 ! 177: RDPC rd %pc, %r17 fpinit_4_133: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e83d17 ! 178: PREFETCHA_I prefetcha [%r0, + 0xfffffd17] %asi, #one_read splash_lsu_4_134: nop ta T_CHANGE_HPRIV set 0x134b0685, %r2 mov 0x5, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL ta T_CHANGE_NONHPRIV .word 0x3d400001 ! 179: FBPULE fbule,a,pn %fcc0, .word 0x87802010 ! 180: WRASI_I wr %r0, 0x0010, %asi #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_4_135)+40, 16, 16)) -> intp(mask2tid(0x4),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_4_135)&0xffffffff) + 48, 16, 16)) -> intp(mask2tid(0x4),1,3,,,,,1) xir_4_135: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_4_135: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa98321f4 ! 181: WR_SET_SOFTINT_I wr %r12, 0x01f4, %set_softint trapasi_4_136: nop mov 0x8, %r1 ! (VA for ASI 0x4a) .word 0xdad84940 ! 182: LDXA_R ldxa [%r1, %r0] 0x4a, %r13 intveclr_4_137: nop ta T_CHANGE_HPRIV setx 0xf93f90a02f8226ef, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 183: FBPLG fblg,a,pn %fcc0, tagged_4_138: tsubcctv %r12, 0x1628, %r4 .word 0xda07e17c ! 184: LDUW_I lduw [%r31 + 0x017c], %r13 splash_hpstate_4_139: ta T_CHANGE_NONHPRIV .word 0x38800001 ! 1: BGU bgu,a .word 0x8198220f ! 185: WRHPR_HPSTATE_I wrhpr %r0, 0x020f, %hpstate .word 0xda77c000 ! 186: STX_R stx %r13, [%r31 + %r0] brcommon3_4_140: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xdb37e100 ! 1: STQF_I - %f13, [0x0100, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0x81983fcd ! 187: WRHPR_HPSTATE_I wrhpr %r0, 0x1fcd, %hpstate otherw mov 0x30, %r30 .word 0x93d0001e ! 188: Tcc_R tne icc_or_xcc, %r0 + %r30 ibp_4_141: nop .word 0x87ac8a48 ! 189: FCMPd fcmpd %fcc, %f18, %f8 tagged_4_142: tsubcctv %r19, 0x1890, %r4 .word 0xd807e10d ! 190: LDUW_I lduw [%r31 + 0x010d], %r12 .word 0x87802036 ! 191: WRASI_I wr %r0, 0x0036, %asi intveclr_4_143: nop ta T_CHANGE_HPRIV setx 0x1e8b1ab5ee3cb020, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 192: FBPLG fblg,a,pn %fcc0, #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_4_144) + 0, 16, 16)) -> intp(6,0,20,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_4_144)&0xffffffff) + 8, 16, 16)) -> intp(2,0,21,,,,,1) #else set 0x33b082f0, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_4_144: .word 0x39400001 ! 193: FBPUGE fbuge,a,pn %fcc0, .word 0x87802082 ! 194: WRASI_I wr %r0, 0x0082, %asi splash_tick_4_145: nop ta T_CHANGE_HPRIV best_set_reg(0xc0801f37deafa8c2, %r16, %r17) .word 0x89800011 ! 195: WRTICK_R wr %r0, %r17, %tick dvapa_4_146: nop ta T_CHANGE_HPRIV mov 0x94f, %r20 mov 0x17, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe1bfd920 ! 196: STDFA_R stda %f16, [%r0, %r31] splash_tba_4_147: nop ta T_CHANGE_PRIV setx 0x0000000400380000, %r11, %r12 .word 0x8b90000c ! 197: WRPR_TBA_R wrpr %r0, %r12, %tba .word 0xa4c23124 ! 198: ADDCcc_I addccc %r8, 0xfffff124, %r18 pmu_4_148: nop setx 0xffffffb6ffffffa8, %g1, %g7 .word 0xa3800007 ! 199: WR_PERF_COUNTER_R wr %r0, %r7, %- ibp_4_149: nop ta T_CHANGE_NONHPRIV .word 0xc19fe060 ! 200: LDDFA_I ldda [%r31, 0x0060], %f0 # 952 "diag.j" cmpenall_4_150: nop nop ta T_CHANGE_HPRIV rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 mov 0xff, %r9 sllx %r9, %r8, %r9 ! My core mask #else mov 0xff, %r9 ! My core mask #endif cmpenall_startwait4_150: mov 0x4, %r10 cas [%r23],%g0,%r10 !lock brz,a %r10, continue_cmpenall_4_150 nop cmpenall_wait4_150: ld [%r23], %r10 brnz %r10, cmpenall_wait4_150 nop ba,a cmpenall_startwait4_150 continue_cmpenall_4_150: ldxa [0x58]%asi, %r14 !Running_status wait_for_cmpstat_4_150: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r14 bne,a %xcc, wait_for_cmpstat_4_150 ldxa [0x58]%asi, %r14 !Running_status ldxa [0x10]%asi, %r14 !Get enabled threads and %r14, %r9, %r14 !My core mask stxa %r14, [0x60]%asi !W1S ldxa [0x58]%asi, %r16 !Running_status wait_for_cmpstat2_4_150: and %r16, %r9, %r16 !My core mask cmp %r14, %r16 bne,a %xcc, wait_for_cmpstat2_4_150 ldxa [0x58]%asi, %r16 !Running_status st %g0, [%r23] !clear lock #if (MULTIPASS > 0) multipass_check_mt: rd %asi, %r12 wr %g0, ASI_SCRATCHPAD, %asi ldxa [0x38]%asi, %r10 cmp %r10, MULTIPASS inc %r10 stxa %r10, [0x38]%asi be finish_diag wr %g0, %r12, %asi lock_sync_thds_again: mov 0xff, %r10 set sync_thr_counter4, %r23 #ifndef SPC add %o2,%r9,%r23 !Core's sync counter #endif st %r10, [%r23] !lock sync_thr_counter4 add %r23, 64, %r23 st %r10, [%r23] !lock sync_thr_counter5 add %r23, 64, %r23 st %r10, [%r23] !lock sync_thr_counter6 ba fork_threads wrpr %g0, %g0, %gl #endif nop nop ta T_CHANGE_PRIV wrpr %g0, %g0, %gl nop nop .text setx join_lbl_0_0, %g1, %g2 jmp %g2 nop fork_lbl_0_2: ta T_CHANGE_NONHPRIV vahole5_2_0: nop setx vahole_target2, %r18, %r27 jmpl %r27+0, %r27 ta T_CHANGE_PRIV ibp_2_1: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x2, %r16 ibp_startwait2_1: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_2_1 mov (~0x2&0xf), %r16 ld [%r23], %r16 ibp_wait2_1: brnz %r16, ibp_wait2_1 ld [%r23], %r16 ba ibp_startwait2_1 mov 0x2, %r16 continue_ibp_2_1: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_2_1: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_2_1 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_2_1: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_2_1 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit2_1: best_set_reg(0x00000040c4c00be7,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi .word 0xc19fe000 ! 1: LDDFA_I ldda [%r31, 0x0000], %f0 splash_cmpr_2_2: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x70, %r17 or %r17, %r18, %r17 .word 0xaf800011 ! 2: WR_TICK_CMPR_REG_R wr %r0, %r17, %- mondo_2_3: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r10, [%r0+0x3d0] %asi .word 0x9d940003 ! 3: WRPR_WSTATE_R wrpr %r16, %r3, %wstate .word 0xe19fe120 ! 4: LDDFA_I ldda [%r31, 0x0120], %f16 nop ta T_CHANGE_HPRIV mov 0x2+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_2_4 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_2_4 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610060, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_2_4: ta T_CHANGE_NONHPRIV .word 0xa1414000 ! 5: RDPC rd %pc, %r16 nop ta T_CHANGE_HPRIV ! macro donret_2_5: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_5-donret_2_5), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00ffc900 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xd5f, %htstate ta T_CHANGE_NONPRIV ! rand=0 (2) ldx [%r11+%r0], %g1 done donretarg_2_5: .word 0x81982852 ! 6: WRHPR_HPSTATE_I wrhpr %r0, 0x0852, %hpstate .word 0xe937e118 ! 7: STQF_I - %f20, [0x0118, %r31] jmptr_2_6: nop best_set_reg(0xe1a00000, %r20, %r27) .word 0xb7c6c000 ! 8: JMPL_R jmpl %r27 + %r0, %r27 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_2_7: .word 0x39400001 ! 9: FBPUGE fbuge,a,pn %fcc0, .word 0xa97021b0 ! 1: POPC_I popc 0x01b0, %r20 .word 0x9f802601 ! 10: SIR sir 0x0601 .word 0x8d802004 ! 11: WRFPRS_I wr %r0, 0x0004, %fprs trapasi_2_8: nop mov 0x10, %r1 ! (VA for ASI 0x48) .word 0xe8d84900 ! 12: LDXA_R ldxa [%r1, %r0] 0x48, %r20 .word 0xe81fe088 ! 13: LDD_I ldd [%r31 + 0x0088], %r20 .word 0x32800001 ! 1: BNE bne,a .word 0x8d902533 ! 14: WRPR_PSTATE_I wrpr %r0, 0x0533, %pstate nop ta T_CHANGE_HPRIV mov 0x2+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_2_10 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_2_10 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610060, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_2_10: ta T_CHANGE_NONHPRIV .word 0x99414000 ! 15: RDPC rd %pc, %r12 brcommon2_2_11: nop setx common_target, %r12, %r27 ba,a .+12 .word 0xa9a209d2 ! 1: FDIVd fdivd %f8, %f18, %f20 ba,a .+8 jmpl %r27+0, %r27 .word 0xe1bfe140 ! 16: STDFA_I stda %f16, [0x0140, %r31] jmptr_2_12: nop best_set_reg(0xe1a00000, %r20, %r27) .word 0xb7c6c000 ! 17: JMPL_R jmpl %r27 + %r0, %r27 mondo_2_13: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r17, [%r0+0x3d8] %asi .word 0x9d944012 ! 18: WRPR_WSTATE_R wrpr %r17, %r18, %wstate mondo_2_14: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r10, [%r0+0x3c8] %asi .word 0x9d948011 ! 19: WRPR_WSTATE_R wrpr %r18, %r17, %wstate splash_cmpr_2_15: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 20: WR_STICK_CMPR_REG_R wr %r0, %r17, %- #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_2_16) + 40, 16, 16)) -> intp(1,0,2,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_2_16)&0xffffffff) + 48, 16, 16)) -> intp(4,0,0,,,,,1) #else set 0x19a0b56e, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_2_16: .word 0x39400001 ! 21: FBPUGE fbuge,a,pn %fcc0, .word 0x81dcc007 ! 22: FLUSH_R flush %r19, %r7, %r0 .word 0x2f400001 ! 1: FBPU fbu,a,pn %fcc0, .word 0x8d903001 ! 23: WRPR_PSTATE_I wrpr %r0, 0x1001, %pstate .word 0x8f902000 ! 1: WRPR_TL_I wrpr %r0, 0x0000, %tl reduce_priv_lvl_2_18: ta T_CHANGE_NONHPRIV ! macro mondo_2_19: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r19, [%r0+0x3d8] %asi .word 0x9d920014 ! 25: WRPR_WSTATE_R wrpr %r8, %r20, %wstate .word 0x81510000 ! 26: RDPR_TICK rdpr %tick, %r0 .word 0x8799e0a9 ! 27: WRHPR_HINTP_I wrhpr %r7, 0x00a9, %hintp fpinit_2_20: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x91b00484 ! 28: FCMPLE32 fcmple32 %d0, %d4, %r8 mondo_2_21: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r13, [%r0+0x3c8] %asi .word 0x9d940013 ! 29: WRPR_WSTATE_R wrpr %r16, %r19, %wstate splash_hpstate_2_22: .word 0x81983694 ! 30: WRHPR_HPSTATE_I wrhpr %r0, 0x1694, %hpstate splash_tba_2_23: nop ta T_CHANGE_PRIV setx 0x00000004003a0000, %r11, %r12 .word 0x8b90000c ! 31: WRPR_TBA_R wrpr %r0, %r12, %tba trapasi_2_24: nop mov 0x110, %r1 ! (VA for ASI 0x4a) .word 0xe8d84940 ! 32: LDXA_R ldxa [%r1, %r0] 0x4a, %r20 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_2_25: .word 0x39400001 ! 33: FBPUGE fbuge,a,pn %fcc0, nop ta T_CHANGE_HPRIV mov 0x2, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_2_26 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000a1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_2_26: ta T_CHANGE_NONHPRIV .word 0xe9e7e012 ! 34: CASA_R casa [%r31] %asi, %r18, %r20 .word 0xe89fe090 ! 35: LDDA_I ldda [%r31, + 0x0090] %asi, %r20 nop ta T_CHANGE_HPRIV mov 0x2, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_2_27 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_2_27: ta T_CHANGE_NONHPRIV .word 0xe9e7e00b ! 36: CASA_R casa [%r31] %asi, %r11, %r20 nop ta T_CHANGE_HPRIV ! macro donret_2_28: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_28-donret_2_28), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00e06a00 | (16 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1515, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (2) retry donretarg_2_28: .word 0x3e800001 ! 37: BVC bvc,a brcommon2_2_29: nop setx common_target, %r12, %r27 ba,a .+12 .word 0x99a0054b ! 1: FSQRTd fsqrt ba,a .+8 jmpl %r27+0, %r27 .word 0xe1bfe100 ! 38: STDFA_I stda %f16, [0x0100, %r31] .word 0x91950013 ! 39: WRPR_PIL_R wrpr %r20, %r19, %pil .word 0xd877e0ad ! 40: STX_I stx %r12, [%r31 + 0x00ad] nop ta T_CHANGE_HPRIV mov 0x2+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_2_31 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_2_31 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610020, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_2_31: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 41: RDPC rd %pc, %r20 vahole6_2_32: nop mov 1, %r27 sllx %r27, 49, %r27 jmpl %r27+0, %r27 ta T_CHANGE_NONHPRIV .word 0xe697c02d ! 42: LDUHA_R lduha [%r31, %r13] 0x01, %r19 nop ta T_CHANGE_HPRIV mov 0x2, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_2_33 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_2_33: ta T_CHANGE_NONHPRIV .word 0xe7e7e011 ! 43: CASA_R casa [%r31] %asi, %r17, %r19 nop ta T_CHANGE_HPRIV ! macro donret_2_34: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_34-donret_2_34+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x000cb800 | (4 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xf17, %htstate ta T_CHANGE_NONPRIV ! rand=0 (2) retry donretarg_2_34: .word 0xe66fe185 ! 44: LDSTUB_I ldstub %r19, [%r31 + 0x0185] nop mov 0x80, %g3 .word 0x2f400001 ! 1: FBPU fbu,a,pn %fcc0, stxa %g3, [%g3] 0x5f .word 0xe65fc000 ! 45: LDX_R ldx [%r31 + %r0], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_2_35)+40, 16, 16)) -> intp(mask2tid(0x2),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_2_35)&0xffffffff) + 8, 16, 16)) -> intp(mask2tid(0x2),1,3,,,,,1) xir_2_35: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_2_35: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9833238 ! 46: WR_SET_SOFTINT_I wr %r12, 0x1238, %set_softint .word 0xe6dfc033 ! 47: LDXA_R ldxa [%r31, %r19] 0x01, %r19 nop ta T_CHANGE_HPRIV ! macro donret_2_37: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_37-donret_2_37+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r12, %r10, %r12 ! low VA tpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00a25700 | (54 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xcd1, %htstate ta T_CHANGE_NONPRIV ! rand=0 (2) ldx [%r11+%r0], %g1 done .align 32 donretarg_2_37: .word 0x819824dd ! 48: WRHPR_HPSTATE_I wrhpr %r0, 0x04dd, %hpstate .word 0x89800011 ! 49: WRTICK_R wr %r0, %r17, %tick .word 0xe1bfe0c0 ! 50: STDFA_I stda %f16, [0x00c0, %r31] splash_lsu_2_40: nop ta T_CHANGE_HPRIV set 0x0251b571, %r2 mov 0x7, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 51: FBPULE fbule,a,pn %fcc0, change_to_randtl_2_41: ta T_CHANGE_HPRIV ! macro done_change_to_randtl_2_41: .word 0x8f902000 ! 52: WRPR_TL_I wrpr %r0, 0x0000, %tl .word 0xc1bfc3e0 ! 53: STDFA_R stda %f0, [%r0, %r31] .word 0x89800011 ! 54: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV ! macro donret_2_43: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_43-donret_2_43+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00e4ec00 | (0x83 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x58d, %htstate ta T_CHANGE_NONPRIV ! rand=0 (2) .word 0x32800001 ! 1: BNE bne,a done .align 32 donretarg_2_43: .word 0x819834dd ! 55: WRHPR_HPSTATE_I wrhpr %r0, 0x14dd, %hpstate .word 0xe64fc000 ! 56: LDSB_R ldsb [%r31 + %r0], %r19 .word 0xe71fe190 ! 57: LDDF_I ldd [%r31, 0x0190], %f19 .word 0x87802010 ! 58: WRASI_I wr %r0, 0x0010, %asi .word 0x89800011 ! 59: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV mov 0x2+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_2_45 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_2_45 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610000, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_2_45: ta T_CHANGE_NONHPRIV .word 0x91414000 ! 60: RDPC rd %pc, %r8 mondo_2_46: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r19, [%r0+0x3e0] %asi .word 0x9d914001 ! 61: WRPR_WSTATE_R wrpr %r5, %r1, %wstate .word 0x91d02035 ! 62: Tcc_I ta icc_or_xcc, %r0 + 53 splash_lsu_2_47: nop ta T_CHANGE_HPRIV set 0xf007d4f1, %r2 mov 0x5, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 63: FBPULE fbule,a,pn %fcc0, ibp_2_48: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x2, %r16 ibp_startwait2_48: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_2_48 mov (~0x2&0xf), %r16 ld [%r23], %r16 ibp_wait2_48: brnz %r16, ibp_wait2_48 ld [%r23], %r16 ba ibp_startwait2_48 mov 0x2, %r16 continue_ibp_2_48: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_2_48: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_2_48 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_2_48: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_2_48 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit2_48: best_set_reg(0x00000040a1cbe75e,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi .word 0xe1bfd960 ! 64: STDFA_R stda %f16, [%r0, %r31] splash_hpstate_2_49: .word 0x819828d5 ! 65: WRHPR_HPSTATE_I wrhpr %r0, 0x08d5, %hpstate .word 0x8d9027b5 ! 66: WRPR_PSTATE_I wrpr %r0, 0x07b5, %pstate rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_2_51: .word 0x39400001 ! 67: FBPUGE fbuge,a,pn %fcc0, .word 0x95a049cd ! 68: FDIVd fdivd %f32, %f44, %f10 nop ta T_CHANGE_HPRIV ! macro donret_2_53: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_53-donret_2_53+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x001b0900 | (57 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x17a4, %htstate ta T_CHANGE_NONPRIV ! rand=0 (2) ldx [%r11+%r0], %g1 done donretarg_2_53: .word 0x33400001 ! 69: FBPE fbe,a,pn %fcc0, set 0x109e, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0xa3b0c7d1 ! 70: PDIST pdistn %d34, %d48, %d48 .word 0xa7a0016b ! 71: FABSq dis not found ibp_2_55: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x2, %r16 ibp_startwait2_55: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_2_55 mov (~0x2&0xf), %r16 ld [%r23], %r16 ibp_wait2_55: brnz %r16, ibp_wait2_55 ld [%r23], %r16 ba ibp_startwait2_55 mov 0x2, %r16 continue_ibp_2_55: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_2_55: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_2_55 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_2_55: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_2_55 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit2_55: best_set_reg(0x000000402ee75e81,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi ta T_CHANGE_NONHPRIV .word 0xe1bfe120 ! 72: STDFA_I stda %f16, [0x0120, %r31] nop ta T_CHANGE_HPRIV ! macro donret_2_56: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_56-donret_2_56), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x005b3000 | (0x8b << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1ddd, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (2) retry .align 32 donretarg_2_56: .word 0xe4ffe130 ! 73: SWAPA_I swapa %r18, [%r31 + 0x0130] %asi brcommon3_2_57: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c010 ! 1: STQF_R - %f18, [%r16, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe4dfc030 ! 74: LDXA_R ldxa [%r31, %r16] 0x01, %r18 .word 0x91944002 ! 75: WRPR_PIL_R wrpr %r17, %r2, %pil splash_cmpr_2_59: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x70, %r17 or %r17, %r18, %r17 ta T_CHANGE_PRIV .word 0xaf800011 ! 76: WR_TICK_CMPR_REG_R wr %r0, %r17, %- splash_cmpr_2_60: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x80, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 77: WR_TICK_CMPR_REG_R wr %r0, %r17, %- .word 0x87802058 ! 78: WRASI_I wr %r0, 0x0058, %asi brcommon3_2_61: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c008 ! 1: STQF_R - %f18, [%r8, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe53fc011 ! 79: STDF_R std %f18, [%r17, %r31] mondo_2_62: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r5, [%r0+0x3e0] %asi .word 0x9d92c009 ! 80: WRPR_WSTATE_R wrpr %r11, %r9, %wstate nop mov 0x80, %g3 stxa %r7, [%r0] ASI_LSU_CONTROL stxa %g3, [%g3] 0x57 .word 0xe45fc000 ! 81: LDX_R ldx [%r31 + %r0], %r18 set 0x1341, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0x9bb187d4 ! 82: PDIST pdistn %d6, %d20, %d44 brz,pt %r19, skip_2_63 stxa %r14, [%r0] ASI_LSU_CONTROL .word 0xc36cf617 ! 1: PREFETCH_I prefetch [%r19 + 0xfffff617], #one_read stxa %r14, [%r0] ASI_LSU_CONTROL .align 32 skip_2_63: .word 0xd23fc000 ! 83: STD_R std %r9, [%r31 + %r0] .word 0x9ba00170 ! 84: FABSq dis not found nop ta T_CHANGE_HPRIV mov 0x2+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_2_65 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_2_65 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610040, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_2_65: ta T_CHANGE_NONHPRIV .word 0x99414000 ! 85: RDPC rd %pc, %r12 .word 0x95450000 ! 86: RD_SET_SOFTINT rd %set_softint, %r10 brcommon1_2_66: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0x93b7c7c8 ! 1: PDIST pdistn %d62, %d8, %d40 ba,a .+8 jmpl %r27+0, %r27 .word 0x9f8038b2 ! 87: SIR sir 0x18b2 pmu_2_67: nop setx 0xffffffbcffffffa5, %g1, %g7 .word 0xa3800007 ! 88: WR_PERF_COUNTER_R wr %r0, %r7, %- #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_2_68)+8, 16, 16)) -> intp(mask2tid(0x2),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_2_68)&0xffffffff) + 48, 16, 16)) -> intp(mask2tid(0x2),1,3,,,,,1) xir_2_68: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_2_68: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984a03f ! 89: WR_SET_SOFTINT_I wr %r18, 0x003f, %set_softint rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_2_69: .word 0x39400001 ! 90: FBPUGE fbuge,a,pn %fcc0, fpinit_2_70: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x87a80a44 ! 91: FCMPd fcmpd %fcc, %f0, %f4 mondo_2_71: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r16, [%r0+0x3d8] %asi .word 0x9d94400c ! 92: WRPR_WSTATE_R wrpr %r17, %r12, %wstate .word 0x8d902aef ! 93: WRPR_PSTATE_I wrpr %r0, 0x0aef, %pstate .word 0x8d802000 ! 94: WRFPRS_I wr %r0, 0x0000, %fprs nop ta T_CHANGE_HPRIV mov 0x2, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_2_73 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000a1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_2_73: ta T_CHANGE_NONHPRIV .word 0xd1e7e00d ! 95: CASA_R casa [%r31] %asi, %r13, %r8 ibp_2_74: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x2, %r16 ibp_startwait2_74: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_2_74 mov (~0x2&0xf), %r16 ld [%r23], %r16 ibp_wait2_74: brnz %r16, ibp_wait2_74 ld [%r23], %r16 ba ibp_startwait2_74 mov 0x2, %r16 continue_ibp_2_74: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_2_74: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_2_74 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_2_74: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_2_74 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit2_74: best_set_reg(0x00000040b6de816c,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi ta T_CHANGE_NONHPRIV .word 0x95b447d1 ! 96: PDIST pdistn %d48, %d48, %d10 .word 0xa9b0448d ! 97: FCMPLE32 fcmple32 %d32, %d44, %r20 trapasi_2_76: nop mov 0x20, %r1 ! (VA for ASI 0x5a) .word 0xd8884b40 ! 98: LDUBA_R lduba [%r1, %r0] 0x5a, %r12 .word 0x81460000 ! 99: RD_STICK_REG stbar jmptr_2_77: nop best_set_reg(0xe0a00000, %r20, %r27) .word 0xb7c6c000 ! 100: JMPL_R jmpl %r27 + %r0, %r27 pmu_2_78: nop ta T_CHANGE_PRIV setx 0xffffffb6ffffffab, %g1, %g7 .word 0xa3800007 ! 101: WR_PERF_COUNTER_R wr %r0, %r7, %- memptr_2_79: set 0x60540000, %r31 .word 0x8584be6c ! 102: WRCCR_I wr %r18, 0x1e6c, %ccr .word 0xd8cfe1f8 ! 103: LDSBA_I ldsba [%r31, + 0x01f8] %asi, %r12 change_to_randtl_2_80: ta T_CHANGE_PRIV ! macro done_change_to_randtl_2_80: .word 0x8f902000 ! 104: WRPR_TL_I wrpr %r0, 0x0000, %tl pmu_2_81: nop setx 0xffffffbcffffffa7, %g1, %g7 .word 0xa3800007 ! 105: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_lsu_2_82: nop ta T_CHANGE_HPRIV set 0x918c3bf2, %r2 mov 0x1, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 .word 0x21400001 ! 1: FBPN fbn,a,pn %fcc0, stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 106: FBPULE fbule,a,pn %fcc0, .word 0xd8cfe048 ! 107: LDSBA_I ldsba [%r31, + 0x0048] %asi, %r12 .word 0xc30fc011 ! 1: LDXFSR_R ld-fsr [%r31, %r17], %f1 .word 0x9f8033ba ! 108: SIR sir 0x13ba .word 0xd8dfe1e8 ! 109: LDXA_I ldxa [%r31, + 0x01e8] %asi, %r12 .word 0x87802055 ! 110: WRASI_I wr %r0, 0x0055, %asi mondo_2_83: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r18, [%r0+0x3e8] %asi .word 0x9d910013 ! 111: WRPR_WSTATE_R wrpr %r4, %r19, %wstate .word 0x81460000 ! 112: RD_STICK_REG stbar vahole1_2_84: nop ta T_CHANGE_NONHPRIV setx vahole_target1, %r18, %r27 jmpl %r27+0, %r27 .word 0x9bb50488 ! 113: FCMPLE32 fcmple32 %d20, %d8, %r13 nop ta T_CHANGE_HPRIV mov 0x2+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_2_85 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_2_85 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100b0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_2_85: ta T_CHANGE_NONHPRIV .word 0xa5414000 ! 114: RDPC rd %pc, %r18 #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_2_86) + 0, 16, 16)) -> intp(2,0,25,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_2_86)&0xffffffff) + 0, 16, 16)) -> intp(3,0,25,,,,,1) #else set 0xfc50219b, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_2_86: .word 0x39400001 ! 115: FBPUGE fbuge,a,pn %fcc0, pmu_2_87: nop setx 0xffffffbaffffffad, %g1, %g7 .word 0xa3800007 ! 116: WR_PERF_COUNTER_R wr %r0, %r7, %- trapasi_2_88: nop mov 0x10, %r1 ! (VA for ASI 0x49) .word 0xd8c84920 ! 117: LDSBA_R ldsba [%r1, %r0] 0x49, %r12 .word 0x99450000 ! 118: RD_SET_SOFTINT rd %set_softint, %r12 fpinit_2_89: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e83d23 ! 119: PREFETCHA_I prefetcha [%r0, + 0xfffffd23] %asi, #one_read .word 0xe63fc012 ! 1: STD_R std %r19, [%r31 + %r18] .word 0x9f802c49 ! 120: SIR sir 0x0c49 nop ta T_CHANGE_HPRIV ! macro donret_2_90: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_90-donret_2_90+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00ec0000 | (0x4f << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x459, %htstate ta T_CHANGE_NONPRIV ! rand=0 (2) retry .align 32 donretarg_2_90: .word 0xe66fe19d ! 121: LDSTUB_I ldstub %r19, [%r31 + 0x019d] .word 0xe73fc00b ! 1: STDF_R std %f19, [%r11, %r31] .word 0x9f80226b ! 122: SIR sir 0x026b splash_htba_2_91: nop ta T_CHANGE_HPRIV setx 0x00000002002a0000, %r11, %r12 .word 0x8b98000c ! 123: WRHPR_HTBA_R wrhpr %r0, %r12, %htba nop ta T_CHANGE_HPRIV mov 0x2+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_2_92 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_2_92 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100e0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_2_92: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 124: RDPC rd %pc, %r20 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_2_93: .word 0x39400001 ! 125: FBPUGE fbuge,a,pn %fcc0, .word 0x8d802000 ! 126: WRFPRS_I wr %r0, 0x0000, %fprs .word 0x91a4c9b0 ! 127: FDIVs fdivs %f19, %f16, %f8 .word 0x95a089c4 ! 128: FDIVd fdivd %f2, %f4, %f10 fbg,a,pn %fcc0, skip_2_96 bne,a skip_2_96 .align 2048 skip_2_96: .word 0xa9a349d2 ! 129: FDIVd fdivd %f44, %f18, %f20 .word 0xe8800b40 ! 130: LDUWA_R lduwa [%r0, %r0] 0x5a, %r20 intveclr_2_97: nop ta T_CHANGE_HPRIV setx 0xe5ce675ea8bf42c9, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 131: FBPLG fblg,a,pn %fcc0, splash_hpstate_2_98: .word 0x81982fdf ! 132: WRHPR_HPSTATE_I wrhpr %r0, 0x0fdf, %hpstate trapasi_2_99: nop mov 0x0, %r1 ! (VA for ASI 0x72) .word 0xe8c04e40 ! 133: LDSWA_R ldswa [%r1, %r0] 0x72, %r20 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_2_100)+24, 16, 16)) -> intp(mask2tid(0x2),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_2_100)&0xffffffff) + 40, 16, 16)) -> intp(mask2tid(0x2),1,3,,,,,1) xir_2_100: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_2_100: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9823edf ! 134: WR_SET_SOFTINT_I wr %r8, 0x1edf, %set_softint intveclr_2_101: nop ta T_CHANGE_HPRIV setx 0xdb7d0fcc18ef3cd6, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 135: FBPLG fblg,a,pn %fcc0, intveclr_2_102: nop ta T_CHANGE_HPRIV setx 0xc1129efd709f7b9b, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 136: FBPLG fblg,a,pn %fcc0, nop ta T_CHANGE_HPRIV ! macro donret_2_103: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_103-donret_2_103), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00caf500 | (0x58 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x118d, %htstate ta T_CHANGE_NONPRIV ! rand=0 (2) ldx [%r11+%r0], %g1 done donretarg_2_103: .word 0xe86fe051 ! 137: LDSTUB_I ldstub %r20, [%r31 + 0x0051] ibp_2_104: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x2, %r16 ibp_startwait2_104: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_2_104 mov (~0x2&0xf), %r16 ld [%r23], %r16 ibp_wait2_104: brnz %r16, ibp_wait2_104 ld [%r23], %r16 ba ibp_startwait2_104 mov 0x2, %r16 continue_ibp_2_104: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_2_104: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_2_104 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_2_104: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_2_104 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit2_104: best_set_reg(0x00000040a6c16cd8,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi .word 0xe19fdb60 ! 138: LDDFA_R ldda [%r31, %r0], %f16 nop ta T_CHANGE_HPRIV mov 0x2, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_2_105 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001a1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_2_105: ta T_CHANGE_NONHPRIV .word 0xe9e7e00a ! 139: CASA_R casa [%r31] %asi, %r10, %r20 splash_cmpr_2_106: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 140: WR_STICK_CMPR_REG_R wr %r0, %r17, %- .word 0xe9e7e00a ! 141: CASA_R casa [%r31] %asi, %r10, %r20 .word 0x93d020b2 ! 142: Tcc_I tne icc_or_xcc, %r0 + 178 splash_hpstate_2_108: ta T_CHANGE_NONHPRIV .word 0x81983f1d ! 143: WRHPR_HPSTATE_I wrhpr %r0, 0x1f1d, %hpstate dvapa_2_109: nop ta T_CHANGE_HPRIV mov 0xe47, %r20 mov 0x12, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0x87a88a50 ! 144: FCMPd fcmpd %fcc, %f2, %f16 .word 0x3a800001 ! 1: BCC bcc,a .word 0x8d903a97 ! 145: WRPR_PSTATE_I wrpr %r0, 0x1a97, %pstate memptr_2_111: set user_data_start, %r31 .word 0x85823267 ! 146: WRCCR_I wr %r8, 0x1267, %ccr ceter_2_112: nop ta T_CHANGE_HPRIV mov 6, %r17 sllx %r17, 60, %r17 mov 0x18, %r16 stxa %r17, [%r16]0x4c ta T_CHANGE_NONHPRIV .word 0xa3410000 ! 147: RDTICK rd %tick, %r17 nop ta T_CHANGE_HPRIV ! macro donret_2_113: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_113-donret_2_113+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00874400 | (0x58 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xd94, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (2) ldx [%r11+%r0], %g1 done donretarg_2_113: .word 0xe6ffe05c ! 148: SWAPA_I swapa %r19, [%r31 + 0x005c] %asi splash_tba_2_114: nop ta T_CHANGE_PRIV setx 0x00000004003a0000, %r11, %r12 .word 0x8b90000c ! 149: WRPR_TBA_R wrpr %r0, %r12, %tba splash_htba_2_115: nop ta T_CHANGE_HPRIV setx 0x00000002002a0000, %r11, %r12 .word 0x8b98000c ! 150: WRHPR_HTBA_R wrhpr %r0, %r12, %htba fpinit_2_116: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x91a009c4 ! 151: FDIVd fdivd %f0, %f4, %f8 tagged_2_117: taddcctv %r18, 0x15da, %r18 .word 0xe607e0e7 ! 152: LDUW_I lduw [%r31 + 0x00e7], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_2_118)+24, 16, 16)) -> intp(mask2tid(0x2),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_2_118)&0xffffffff) + 40, 16, 16)) -> intp(mask2tid(0x2),1,3,,,,,1) xir_2_118: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_2_118: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa9817e7d ! 153: WR_SET_SOFTINT_I wr %r5, 0x1e7d, %set_softint .word 0x89800011 ! 154: WRTICK_R wr %r0, %r17, %tick mondo_2_120: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r3, [%r0+0x3c0] %asi .word 0x9d904006 ! 155: WRPR_WSTATE_R wrpr %r1, %r6, %wstate .word 0xe737c000 ! 156: STQF_R - %f19, [%r0, %r31] .word 0x87802016 ! 157: WRASI_I wr %r0, 0x0016, %asi .word 0x9a68e29e ! 158: UDIVX_I udivx %r3, 0x029e, %r13 splash_cmpr_2_121: mov 1, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 .word 0xb3800011 ! 159: WR_STICK_CMPR_REG_R wr %r0, %r17, %- nop ta T_CHANGE_HPRIV ! macro donret_2_122: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_2_122-donret_2_122), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x002b0000 | (0x88 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x517, %htstate ta T_CHANGE_NONPRIV ! rand=0 (2) ldx [%r12+%r0], %g1 retry donretarg_2_122: .word 0x93a4c9d3 ! 160: FDIVd fdivd %f50, %f50, %f40 pmu_2_123: nop setx 0xffffffbbffffffae, %g1, %g7 .word 0xa3800007 ! 161: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_tba_2_124: nop ta T_CHANGE_PRIV set 0x120000, %r12 .word 0x8b90000c ! 162: WRPR_TBA_R wrpr %r0, %r12, %tba mondo_2_125: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r11, [%r0+0x3e8] %asi .word 0x9d914011 ! 163: WRPR_WSTATE_R wrpr %r5, %r17, %wstate .word 0xa190200c ! 164: WRPR_GL_I wrpr %r0, 0x000c, %- trapasi_2_126: nop mov 0x8, %r1 ! (VA for ASI 0x5b) .word 0xdac04b60 ! 165: LDSWA_R ldswa [%r1, %r0] 0x5b, %r13 .word 0x8d802000 ! 166: WRFPRS_I wr %r0, 0x0000, %fprs splash_tba_2_127: nop ta T_CHANGE_PRIV setx 0x00000004003a0000, %r11, %r12 .word 0x8b90000c ! 167: WRPR_TBA_R wrpr %r0, %r12, %tba invalw mov 0x30, %r30 .word 0x91d0001e ! 168: Tcc_R ta icc_or_xcc, %r0 + %r30 nop ta T_CHANGE_HPRIV mov 0x2, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_2_128 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x000a1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_2_128: ta T_CHANGE_NONHPRIV .word 0xdbe7e00d ! 169: CASA_R casa [%r31] %asi, %r13, %r13 .word 0xdadfc032 ! 1: LDXA_R ldxa [%r31, %r18] 0x01, %r13 .word 0x9f803c4d ! 170: SIR sir 0x1c4d .word 0x8d902160 ! 171: WRPR_PSTATE_I wrpr %r0, 0x0160, %pstate ibp_2_130: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x2, %r16 ibp_startwait2_130: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_2_130 mov (~0x2&0xf), %r16 ld [%r23], %r16 ibp_wait2_130: brnz %r16, ibp_wait2_130 ld [%r23], %r16 ba ibp_startwait2_130 mov 0x2, %r16 continue_ibp_2_130: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_2_130: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_2_130 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_2_130: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_2_130 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit2_130: best_set_reg(0x000000400fecd80e,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi ta T_CHANGE_NONHPRIV .word 0xc19fdc00 ! 172: LDDFA_R ldda [%r31, %r0], %f0 .word 0xa269feaf ! 173: UDIVX_I udivx %r7, 0xfffffeaf, %r17 .word 0x996c8012 ! 174: SDIVX_R sdivx %r18, %r18, %r12 dvapa_2_131: nop ta T_CHANGE_HPRIV mov 0xdf8, %r20 mov 0x1, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe03fe180 ! 175: STD_I std %r16, [%r31 + 0x0180] .word 0xa784e36e ! 176: WR_GRAPHICS_STATUS_REG_I wr %r19, 0x036e, %- nop ta T_CHANGE_HPRIV mov 0x2+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_2_132 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_2_132 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610080, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_2_132: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 177: RDPC rd %pc, %r20 fpinit_2_133: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x89a009a4 ! 178: FDIVs fdivs %f0, %f4, %f4 splash_lsu_2_134: nop ta T_CHANGE_HPRIV set 0x6449b979, %r2 mov 0x4, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL ta T_CHANGE_NONHPRIV .word 0x3d400001 ! 179: FBPULE fbule,a,pn %fcc0, .word 0x87802058 ! 180: WRASI_I wr %r0, 0x0058, %asi #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_2_135)+32, 16, 16)) -> intp(mask2tid(0x2),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_2_135)&0xffffffff) + 32, 16, 16)) -> intp(mask2tid(0x2),1,3,,,,,1) xir_2_135: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_2_135: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa98377c8 ! 181: WR_SET_SOFTINT_I wr %r13, 0x17c8, %set_softint trapasi_2_136: nop mov 0x8, %r1 ! (VA for ASI 0x4a) .word 0xda904940 ! 182: LDUHA_R lduha [%r1, %r0] 0x4a, %r13 intveclr_2_137: nop ta T_CHANGE_HPRIV setx 0xcf0a20ff2c7bffc8, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 183: FBPLG fblg,a,pn %fcc0, tagged_2_138: tsubcctv %r16, 0x10d6, %r2 .word 0xda07e061 ! 184: LDUW_I lduw [%r31 + 0x0061], %r13 splash_hpstate_2_139: ta T_CHANGE_NONHPRIV .word 0x26c90001 ! 1: BRLZ brlz,a,pt %r4, .word 0x81982edb ! 185: WRHPR_HPSTATE_I wrhpr %r0, 0x0edb, %hpstate .word 0xda77c000 ! 186: STX_R stx %r13, [%r31 + %r0] brcommon3_2_140: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xdb37e0a0 ! 1: STQF_I - %f13, [0x00a0, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0x8d903ddd ! 187: WRPR_PSTATE_I wrpr %r0, 0x1ddd, %pstate otherw mov 0x34, %r30 .word 0x91d0001e ! 188: Tcc_R ta icc_or_xcc, %r0 + %r30 ibp_2_141: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x2, %r16 ibp_startwait2_141: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_2_141 mov (~0x2&0xf), %r16 ld [%r23], %r16 ibp_wait2_141: brnz %r16, ibp_wait2_141 ld [%r23], %r16 ba ibp_startwait2_141 mov 0x2, %r16 continue_ibp_2_141: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_2_141: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_2_141 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_2_141: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_2_141 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit2_141: best_set_reg(0x0000005089d80ea1,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi .word 0x97b4c7d2 ! 189: PDIST pdistn %d50, %d18, %d42 tagged_2_142: tsubcctv %r2, 0x181e, %r19 .word 0xd807e1f4 ! 190: LDUW_I lduw [%r31 + 0x01f4], %r12 .word 0x87802016 ! 191: WRASI_I wr %r0, 0x0016, %asi intveclr_2_143: nop ta T_CHANGE_HPRIV setx 0xe0b2f8c496b07ae6, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 192: FBPLG fblg,a,pn %fcc0, #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_2_144) + 24, 16, 16)) -> intp(6,0,23,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_2_144)&0xffffffff) + 8, 16, 16)) -> intp(7,0,13,,,,,1) #else set 0xfb00d263, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_2_144: .word 0x39400001 ! 193: FBPUGE fbuge,a,pn %fcc0, .word 0x87802030 ! 194: WRASI_I wr %r0, 0x0030, %asi .word 0x89800011 ! 195: WRTICK_R wr %r0, %r17, %tick dvapa_2_146: nop ta T_CHANGE_HPRIV mov 0xb1e, %r20 mov 0x1c, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe1bfe140 ! 196: STDFA_I stda %f16, [0x0140, %r31] splash_tba_2_147: nop ta T_CHANGE_PRIV setx 0x00000004003a0000, %r11, %r12 .word 0x8b90000c ! 197: WRPR_TBA_R wrpr %r0, %r12, %tba .word 0xa0c46479 ! 198: ADDCcc_I addccc %r17, 0x0479, %r16 pmu_2_148: nop setx 0xffffffbfffffffa5, %g1, %g7 .word 0xa3800007 ! 199: WR_PERF_COUNTER_R wr %r0, %r7, %- ibp_2_149: nop ta T_CHANGE_HPRIV mov 8, %r18 rd %asi, %r12 wr %r0, 0x41, %asi set sync_thr_counter4, %r23 #ifndef SPC ldxa [%g0]0x63, %r8 and %r8, 0x38, %r8 ! Core ID add %r8, %r23, %r23 #else mov 0, %r8 #endif mov 0x2, %r16 ibp_startwait2_149: cas [%r23],%g0,%r16 !lock brz,a %r16, continue_ibp_2_149 mov (~0x2&0xf), %r16 ld [%r23], %r16 ibp_wait2_149: brnz %r16, ibp_wait2_149 ld [%r23], %r16 ba ibp_startwait2_149 mov 0x2, %r16 continue_ibp_2_149: sllx %r16, %r8, %r16 !Mask for my core only ldxa [0x58]%asi, %r17 !Running_status wait_for_stat_2_149: ldxa [0x50]%asi, %r13 !Running_rw cmp %r13, %r17 bne,a %xcc, wait_for_stat_2_149 ldxa [0x58]%asi, %r17 !Running_status stxa %r16, [0x68]%asi !Park (W1C) ldxa [0x50]%asi, %r14 !Running_rw wait_for_ibp_2_149: ldxa [0x58]%asi, %r17 !Running_status cmp %r14, %r17 bne,a %xcc, wait_for_ibp_2_149 ldxa [0x50]%asi, %r14 !Running_rw ibp_doit2_149: best_set_reg(0x00000040adcea16c,%r19, %r20) stxa %r20, [%r18]0x42 stxa %r16, [0x60] %asi !Unpark (W1S) st %g0, [%r23] !clear lock wr %r0, %r12, %asi !restore %asi ta T_CHANGE_NONHPRIV .word 0xc19fc2c0 ! 200: LDDFA_R ldda [%r31, %r0], %f0 nop nop ta T_CHANGE_PRIV wrpr %g0, %g0, %gl nop nop .text setx join_lbl_0_0, %g1, %g2 jmp %g2 nop fork_lbl_0_1: ta T_CHANGE_NONHPRIV vahole5_1_0: nop setx vahole_target2, %r18, %r27 jmpl %r27+0, %r27 ta T_CHANGE_PRIV ibp_1_1: nop .word 0xe19fe1c0 ! 1: LDDFA_I ldda [%r31, 0x01c0], %f16 splash_cmpr_1_2: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x50, %r17 or %r17, %r18, %r17 .word 0xaf800011 ! 2: WR_TICK_CMPR_REG_R wr %r0, %r17, %- mondo_1_3: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r3, [%r0+0x3e0] %asi .word 0x9d940014 ! 3: WRPR_WSTATE_R wrpr %r16, %r20, %wstate .word 0xc19fe020 ! 4: LDDFA_I ldda [%r31, 0x0020], %f0 nop ta T_CHANGE_HPRIV mov 0x1+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_1_4 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_1_4 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610080, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_1_4: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 5: RDPC rd %pc, %r20 nop ta T_CHANGE_HPRIV ! macro donret_1_5: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_5-donret_1_5), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00f66f00 | (0x58 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1f17, %htstate ta T_CHANGE_NONPRIV ! rand=0 (1) ldx [%r11+%r0], %g1 done donretarg_1_5: .word 0x8d90279d ! 6: WRPR_PSTATE_I wrpr %r0, 0x079d, %pstate .word 0xe937e0dc ! 7: STQF_I - %f20, [0x00dc, %r31] jmptr_1_6: nop best_set_reg(0xe0200000, %r20, %r27) .word 0xb7c6c000 ! 8: JMPL_R jmpl %r27 + %r0, %r27 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_1_7: .word 0x39400001 ! 9: FBPUGE fbuge,a,pn %fcc0, .word 0x9f802841 ! 10: SIR sir 0x0841 .word 0x8d802004 ! 11: WRFPRS_I wr %r0, 0x0004, %fprs trapasi_1_8: nop mov 0x8, %r1 ! (VA for ASI 0x48) .word 0xe8c84900 ! 12: LDSBA_R ldsba [%r1, %r0] 0x48, %r20 .word 0xe81fe1c0 ! 13: LDD_I ldd [%r31 + 0x01c0], %r20 .word 0x24800001 ! 1: BLE ble,a .word 0x8d902b8f ! 14: WRPR_PSTATE_I wrpr %r0, 0x0b8f, %pstate nop ta T_CHANGE_HPRIV mov 0x1+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_1_10 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_1_10 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100d0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_1_10: ta T_CHANGE_NONHPRIV .word 0xa1414000 ! 15: RDPC rd %pc, %r16 brcommon2_1_11: nop setx common_target, %r12, %r27 ba,a .+12 .word 0x81dfc00c ! 1: FLUSH_R flush %r31, %r12, %r0 ba,a .+8 jmpl %r27+0, %r27 .word 0xe19fe0e0 ! 16: LDDFA_I ldda [%r31, 0x00e0], %f16 jmptr_1_12: nop best_set_reg(0xe0200000, %r20, %r27) .word 0xb7c6c000 ! 17: JMPL_R jmpl %r27 + %r0, %r27 mondo_1_13: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r11, [%r0+0x3d8] %asi .word 0x9d910013 ! 18: WRPR_WSTATE_R wrpr %r4, %r19, %wstate mondo_1_14: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r4, [%r0+0x3d8] %asi .word 0x9d920010 ! 19: WRPR_WSTATE_R wrpr %r8, %r16, %wstate splash_cmpr_1_15: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x80, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 20: WR_TICK_CMPR_REG_R wr %r0, %r17, %- #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_1_16) + 32, 16, 16)) -> intp(2,0,15,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_1_16)&0xffffffff) + 16, 16, 16)) -> intp(3,0,0,,,,,1) #else set 0xba30cd16, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_1_16: .word 0x39400001 ! 21: FBPUGE fbuge,a,pn %fcc0, .word 0x81d9c010 ! 22: FLUSH_R flush %r7, %r16, %r0 .word 0x36800001 ! 1: BGE bge,a .word 0x8d903b07 ! 23: WRPR_PSTATE_I wrpr %r0, 0x1b07, %pstate .word 0x8f902001 ! 1: WRPR_TL_I wrpr %r0, 0x0001, %tl reduce_priv_lvl_1_18: ta T_CHANGE_NONHPRIV ! macro mondo_1_19: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r2, [%r0+0x3d0] %asi .word 0x9d944003 ! 25: WRPR_WSTATE_R wrpr %r17, %r3, %wstate .word 0x81510000 ! 26: RDPR_TICK rdpr %tick, %r0 .word 0x879cbe22 ! 27: WRHPR_HINTP_I wrhpr %r18, 0x1e22, %hintp fpinit_1_20: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x87a80a44 ! 28: FCMPd fcmpd %fcc, %f0, %f4 mondo_1_21: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r4, [%r0+0x3e8] %asi .word 0x9d920014 ! 29: WRPR_WSTATE_R wrpr %r8, %r20, %wstate splash_hpstate_1_22: .word 0x8198288d ! 30: WRHPR_HPSTATE_I wrhpr %r0, 0x088d, %hpstate splash_tba_1_23: nop ta T_CHANGE_PRIV setx 0x0000000000380000, %r11, %r12 .word 0x8b90000c ! 31: WRPR_TBA_R wrpr %r0, %r12, %tba trapasi_1_24: nop mov 0x8, %r1 ! (VA for ASI 0x4a) .word 0xe8884940 ! 32: LDUBA_R lduba [%r1, %r0] 0x4a, %r20 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_1_25: .word 0x39400001 ! 33: FBPUGE fbuge,a,pn %fcc0, nop ta T_CHANGE_HPRIV mov 0x1, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_1_26 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00061fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_1_26: ta T_CHANGE_NONHPRIV .word 0xe9e7e013 ! 34: CASA_R casa [%r31] %asi, %r19, %r20 .word 0xe89fe1f8 ! 35: LDDA_I ldda [%r31, + 0x01f8] %asi, %r20 nop ta T_CHANGE_HPRIV mov 0x1, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_1_27 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00161fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_1_27: ta T_CHANGE_NONHPRIV .word 0xe9e7e011 ! 36: CASA_R casa [%r31] %asi, %r17, %r20 nop ta T_CHANGE_HPRIV ! macro donret_1_28: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_28-donret_1_28), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00b10a00 | (57 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x16cf, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (1) retry donretarg_1_28: .word 0x2c800001 ! 37: BNEG bneg,a brcommon2_1_29: nop setx common_target, %r12, %r27 ba,a .+12 .word 0xa9a7c973 ! 1: FMULq dis not found ba,a .+8 jmpl %r27+0, %r27 .word 0xc19fda00 ! 38: LDDFA_R ldda [%r31, %r0], %f0 .word 0x91930007 ! 39: WRPR_PIL_R wrpr %r12, %r7, %pil .word 0xd877e1c3 ! 40: STX_I stx %r12, [%r31 + 0x01c3] nop ta T_CHANGE_HPRIV mov 0x1+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_1_31 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_1_31 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610000, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_1_31: ta T_CHANGE_NONHPRIV .word 0xa7414000 ! 41: RDPC rd %pc, %r19 vahole6_1_32: nop mov 1, %r27 sllx %r27, 49, %r27 jmpl %r27+0, %r27 ta T_CHANGE_NONHPRIV .word 0xe71fe000 ! 42: LDDF_I ldd [%r31, 0x0000], %f19 nop ta T_CHANGE_HPRIV mov 0x1, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_1_33 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00161fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_1_33: ta T_CHANGE_NONHPRIV .word 0xe7e7e009 ! 43: CASA_R casa [%r31] %asi, %r9, %r19 nop ta T_CHANGE_HPRIV ! macro donret_1_34: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_34-donret_1_34+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x005ee800 | (0x55 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xc55, %htstate ta T_CHANGE_NONPRIV ! rand=0 (1) retry donretarg_1_34: .word 0xe66fe129 ! 44: LDSTUB_I ldstub %r19, [%r31 + 0x0129] nop mov 0x80, %g3 .word 0x26800001 ! 1: BL bl,a stxa %g3, [%g3] 0x5f .word 0xe65fc000 ! 45: LDX_R ldx [%r31 + %r0], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_1_35)+32, 16, 16)) -> intp(mask2tid(0x1),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_1_35)&0xffffffff) + 0, 16, 16)) -> intp(mask2tid(0x1),1,3,,,,,1) xir_1_35: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_1_35: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984738d ! 46: WR_SET_SOFTINT_I wr %r17, 0x138d, %set_softint .word 0xe63fe080 ! 47: STD_I std %r19, [%r31 + 0x0080] nop ta T_CHANGE_HPRIV ! macro donret_1_37: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_37-donret_1_37+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r12, %r10, %r12 ! low VA tpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00320500 | (0x88 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x19d, %htstate ta T_CHANGE_NONPRIV ! rand=0 (1) ldx [%r11+%r0], %g1 done .align 32 donretarg_1_37: .word 0x81983e1f ! 48: WRHPR_HPSTATE_I wrhpr %r0, 0x1e1f, %hpstate .word 0x89800011 ! 49: WRTICK_R wr %r0, %r17, %tick .word 0xc1bfe0a0 ! 50: STDFA_I stda %f0, [0x00a0, %r31] splash_lsu_1_40: nop ta T_CHANGE_HPRIV set 0xa386b8c6, %r2 mov 0x5, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 51: FBPULE fbule,a,pn %fcc0, change_to_randtl_1_41: ta T_CHANGE_HPRIV ! macro done_change_to_randtl_1_41: .word 0x8f902002 ! 52: WRPR_TL_I wrpr %r0, 0x0002, %tl .word 0xe1bfde00 ! 53: STDFA_R stda %f16, [%r0, %r31] .word 0x89800011 ! 54: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV ! macro donret_1_43: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_43-donret_1_43+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x006b1500 | (28 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1f15, %htstate ta T_CHANGE_NONPRIV ! rand=0 (1) .word 0x24800001 ! 1: BLE ble,a done .align 32 donretarg_1_43: .word 0x8d9025dd ! 55: WRPR_PSTATE_I wrpr %r0, 0x05dd, %pstate .word 0xe64fc000 ! 56: LDSB_R ldsb [%r31 + %r0], %r19 .word 0xe71fe050 ! 57: LDDF_I ldd [%r31, 0x0050], %f19 .word 0x87802082 ! 58: WRASI_I wr %r0, 0x0082, %asi .word 0x89800011 ! 59: WRTICK_R wr %r0, %r17, %tick nop ta T_CHANGE_HPRIV mov 0x1+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_1_45 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_1_45 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100c0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_1_45: ta T_CHANGE_NONHPRIV .word 0xa9414000 ! 60: RDPC rd %pc, %r20 mondo_1_46: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r11, [%r0+0x3c8] %asi .word 0x9d94800b ! 61: WRPR_WSTATE_R wrpr %r18, %r11, %wstate .word 0x93d02035 ! 62: Tcc_I tne icc_or_xcc, %r0 + 53 splash_lsu_1_47: nop ta T_CHANGE_HPRIV set 0x495caa28, %r2 mov 0x3, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 63: FBPULE fbule,a,pn %fcc0, ibp_1_48: nop .word 0xe19fe040 ! 64: LDDFA_I ldda [%r31, 0x0040], %f16 splash_hpstate_1_49: .word 0x819837c2 ! 65: WRHPR_HPSTATE_I wrhpr %r0, 0x17c2, %hpstate .word 0x8d903aeb ! 66: WRPR_PSTATE_I wrpr %r0, 0x1aeb, %pstate rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_1_51: .word 0x39400001 ! 67: FBPUGE fbuge,a,pn %fcc0, .word 0x91a209c9 ! 68: FDIVd fdivd %f8, %f40, %f8 nop ta T_CHANGE_HPRIV ! macro donret_1_53: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_53-donret_1_53+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00c0b200 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x1254, %htstate ta T_CHANGE_NONPRIV ! rand=0 (1) ldx [%r11+%r0], %g1 done donretarg_1_53: .word 0x27400001 ! 69: FBPUL fbul,a,pn %fcc0, set 0x2d9e, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0xa9b507c5 ! 70: PDIST pdistn %d20, %d36, %d20 .word 0xa5a00169 ! 71: FABSq dis not found ibp_1_55: nop ta T_CHANGE_NONHPRIV .word 0xe1bfe080 ! 72: STDFA_I stda %f16, [0x0080, %r31] nop ta T_CHANGE_HPRIV ! macro donret_1_56: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_56-donret_1_56), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00315800 | (0x82 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xac9, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (1) retry .align 32 donretarg_1_56: .word 0xe4ffe05a ! 73: SWAPA_I swapa %r18, [%r31 + 0x005a] %asi brcommon3_1_57: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c013 ! 1: STQF_R - %f18, [%r19, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe51fc014 ! 74: LDDF_R ldd [%r31, %r20], %f18 .word 0x9190c011 ! 75: WRPR_PIL_R wrpr %r3, %r17, %pil splash_cmpr_1_59: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x60, %r17 or %r17, %r18, %r17 ta T_CHANGE_PRIV .word 0xaf800011 ! 76: WR_TICK_CMPR_REG_R wr %r0, %r17, %- splash_cmpr_1_60: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xb3800011 ! 77: WR_STICK_CMPR_REG_R wr %r0, %r17, %- .word 0x87802004 ! 78: WRASI_I wr %r0, 0x0004, %asi brcommon3_1_61: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xe537c008 ! 1: STQF_R - %f18, [%r8, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0xe5e7e008 ! 79: CASA_R casa [%r31] %asi, %r8, %r18 mondo_1_62: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r20, [%r0+0x3c8] %asi .word 0x9d950011 ! 80: WRPR_WSTATE_R wrpr %r20, %r17, %wstate nop mov 0x80, %g3 stxa %r11, [%r0] ASI_LSU_CONTROL stxa %g3, [%g3] 0x5f .word 0xbfefc000 ! 1: RESTORE_R restore %r31, %r0, %r31 .word 0xe45fc000 ! 81: LDX_R ldx [%r31 + %r0], %r18 set 0x2acf, %l3 stxa %l3, [%g0] ASI_SPARC_PWR_MGMT .word 0x93b047cb ! 82: PDIST pdistn %d32, %d42, %d40 fbug skip_1_63 stxa %r18, [%r0] ASI_LSU_CONTROL .word 0x99a4c9c7 ! 1: FDIVd fdivd %f50, %f38, %f12 stxa %r9, [%r0] ASI_LSU_CONTROL .align 32 skip_1_63: .word 0xd3e7c020 ! 83: CASA_I casa [%r31] 0x 1, %r0, %r9 .word 0x91a0016b ! 84: FABSq dis not found nop ta T_CHANGE_HPRIV mov 0x1+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_1_65 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_1_65 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610020, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_1_65: ta T_CHANGE_NONHPRIV .word 0x93414000 ! 85: RDPC rd %pc, %r9 .word 0x93450000 ! 86: RD_SET_SOFTINT rd %set_softint, %r9 brcommon1_1_66: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0x93b7c7cd ! 1: PDIST pdistn %d62, %d44, %d40 ba,a .+8 jmpl %r27+0, %r27 .word 0x91a409b4 ! 87: FDIVs fdivs %f16, %f20, %f8 pmu_1_67: nop setx 0xffffffb1ffffffac, %g1, %g7 .word 0xa3800007 ! 88: WR_PERF_COUNTER_R wr %r0, %r7, %- #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_1_68)+48, 16, 16)) -> intp(mask2tid(0x1),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_1_68)&0xffffffff) + 0, 16, 16)) -> intp(mask2tid(0x1),1,3,,,,,1) xir_1_68: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_1_68: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa98523fe ! 89: WR_SET_SOFTINT_I wr %r20, 0x03fe, %set_softint rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_1_69: .word 0x39400001 ! 90: FBPUGE fbuge,a,pn %fcc0, fpinit_1_70: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e823fe ! 91: PREFETCHA_I prefetcha [%r0, + 0x03fe] %asi, #one_read mondo_1_71: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r11, [%r0+0x3d0] %asi .word 0x9d914007 ! 92: WRPR_WSTATE_R wrpr %r5, %r7, %wstate .word 0x8d90330d ! 93: WRPR_PSTATE_I wrpr %r0, 0x130d, %pstate .word 0x8d802000 ! 94: WRFPRS_I wr %r0, 0x0000, %fprs nop ta T_CHANGE_HPRIV mov 0x1, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_1_73 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00161fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_1_73: ta T_CHANGE_NONHPRIV .word 0xd1e7e00c ! 95: CASA_R casa [%r31] %asi, %r12, %r8 ibp_1_74: nop ta T_CHANGE_NONHPRIV .word 0x87acca53 ! 96: FCMPd fcmpd %fcc, %f50, %f50 .word 0x99b447d1 ! 97: PDIST pdistn %d48, %d48, %d12 trapasi_1_76: nop mov 0x30, %r1 ! (VA for ASI 0x5a) .word 0xd8884b40 ! 98: LDUBA_R lduba [%r1, %r0] 0x5a, %r12 .word 0x81460000 ! 99: RD_STICK_REG stbar jmptr_1_77: nop best_set_reg(0xe1200000, %r20, %r27) .word 0xb7c6c000 ! 100: JMPL_R jmpl %r27 + %r0, %r27 pmu_1_78: nop ta T_CHANGE_PRIV setx 0xffffffbbffffffa1, %g1, %g7 .word 0xa3800007 ! 101: WR_PERF_COUNTER_R wr %r0, %r7, %- memptr_1_79: set 0x60340000, %r31 .word 0x85813d80 ! 102: WRCCR_I wr %r4, 0x1d80, %ccr .word 0xd8cfe030 ! 103: LDSBA_I ldsba [%r31, + 0x0030] %asi, %r12 change_to_randtl_1_80: ta T_CHANGE_PRIV ! macro done_change_to_randtl_1_80: .word 0x8f902000 ! 104: WRPR_TL_I wrpr %r0, 0x0000, %tl pmu_1_81: nop setx 0xffffffb9ffffffae, %g1, %g7 .word 0xa3800007 ! 105: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_lsu_1_82: nop ta T_CHANGE_HPRIV set 0x8f0cc1ec, %r2 mov 0x5, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 .word 0x2acd0001 ! 1: BRNZ brnz,a,pt %r20, stxa %r2, [%r0] ASI_LSU_CONTROL .word 0x3d400001 ! 106: FBPULE fbule,a,pn %fcc0, .word 0xd8cfe050 ! 107: LDSBA_I ldsba [%r31, + 0x0050] %asi, %r12 .word 0x9f803f16 ! 108: SIR sir 0x1f16 .word 0xd8dfe058 ! 109: LDXA_I ldxa [%r31, + 0x0058] %asi, %r12 .word 0x87802016 ! 110: WRASI_I wr %r0, 0x0016, %asi mondo_1_83: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r6, [%r0+0x3e0] %asi .word 0x9d944013 ! 111: WRPR_WSTATE_R wrpr %r17, %r19, %wstate .word 0x81460000 ! 112: RD_STICK_REG stbar vahole1_1_84: nop ta T_CHANGE_NONHPRIV setx vahole_target1, %r18, %r27 jmpl %r27+0, %r27 .word 0x87ac0a54 ! 113: FCMPd fcmpd %fcc, %f16, %f20 nop ta T_CHANGE_HPRIV mov 0x1+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_1_85 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_1_85 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610020, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_1_85: ta T_CHANGE_NONHPRIV .word 0x99414000 ! 114: RDPC rd %pc, %r12 #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_1_86) + 0, 16, 16)) -> intp(3,0,22,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_1_86)&0xffffffff) + 48, 16, 16)) -> intp(6,0,28,,,,,1) #else set 0x3860cbd1, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_1_86: .word 0x39400001 ! 115: FBPUGE fbuge,a,pn %fcc0, pmu_1_87: nop setx 0xffffffb1ffffffa8, %g1, %g7 .word 0xa3800007 ! 116: WR_PERF_COUNTER_R wr %r0, %r7, %- trapasi_1_88: nop mov 0x10, %r1 ! (VA for ASI 0x49) .word 0xd8c04920 ! 117: LDSWA_R ldswa [%r1, %r0] 0x49, %r12 .word 0xa7450000 ! 118: RD_SET_SOFTINT rd %set_softint, %r19 fpinit_1_89: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x8da009c4 ! 119: FDIVd fdivd %f0, %f4, %f6 .word 0x9f802dd2 ! 120: SIR sir 0x0dd2 nop ta T_CHANGE_HPRIV ! macro donret_1_90: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_90-donret_1_90+4), %r12 add %r12, 0x4, %r11 ! seq tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00a12700 | (0x82 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x11fd, %htstate ta T_CHANGE_NONPRIV ! rand=0 (1) retry .align 32 donretarg_1_90: .word 0xe66fe075 ! 121: LDSTUB_I ldstub %r19, [%r31 + 0x0075] .word 0x9f8029e9 ! 122: SIR sir 0x09e9 splash_htba_1_91: nop ta T_CHANGE_HPRIV setx 0x0000000000280000, %r11, %r12 .word 0x8b98000c ! 123: WRHPR_HTBA_R wrhpr %r0, %r12, %htba nop ta T_CHANGE_HPRIV mov 0x1+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_1_92 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_1_92 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x206100a0, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_1_92: ta T_CHANGE_NONHPRIV .word 0xa5414000 ! 124: RDPC rd %pc, %r18 rd %tick, %r28 #if (MAX_THREADS == 8) sethi %hi(0x33800), %r27 #else sethi %hi(0x30000), %r27 #endif andn %r28, %r27, %r28 ta T_CHANGE_HPRIV stxa %r28, [%g0] 0x73 intvec_1_93: .word 0x39400001 ! 125: FBPUGE fbuge,a,pn %fcc0, .word 0x8d802000 ! 126: WRFPRS_I wr %r0, 0x0000, %fprs .word 0x87ab0a4c ! 127: FCMPd fcmpd %fcc, %f12, %f12 .word 0x91a4c9ac ! 128: FDIVs fdivs %f19, %f12, %f8 fbl skip_1_96 fbge,a,pn %fcc0, skip_1_96 .align 2048 skip_1_96: .word 0x87ac0a46 ! 129: FCMPd fcmpd %fcc, %f16, %f6 .word 0xe8800ae0 ! 130: LDUWA_R lduwa [%r0, %r0] 0x57, %r20 intveclr_1_97: nop ta T_CHANGE_HPRIV setx 0xe97e2d6c20966a6b, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 131: FBPLG fblg,a,pn %fcc0, splash_hpstate_1_98: .word 0x81983689 ! 132: WRHPR_HPSTATE_I wrhpr %r0, 0x1689, %hpstate trapasi_1_99: nop mov 0x0, %r1 ! (VA for ASI 0x72) .word 0xe8d84e40 ! 133: LDXA_R ldxa [%r1, %r0] 0x72, %r20 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_1_100)+40, 16, 16)) -> intp(mask2tid(0x1),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_1_100)&0xffffffff) + 48, 16, 16)) -> intp(mask2tid(0x1),1,3,,,,,1) xir_1_100: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_1_100: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984b598 ! 134: WR_SET_SOFTINT_I wr %r18, 0x1598, %set_softint intveclr_1_101: nop ta T_CHANGE_HPRIV setx 0x7082ff115dff282e, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 135: FBPLG fblg,a,pn %fcc0, intveclr_1_102: nop ta T_CHANGE_HPRIV setx 0x8165e96a11b2d99c, %r1, %r28 stxa %r28, [%g0] 0x72 .word 0x25400001 ! 136: FBPLG fblg,a,pn %fcc0, nop ta T_CHANGE_HPRIV ! macro donret_1_103: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_103-donret_1_103), %r12 add %r12, 0x8, %r11 ! nonseq tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0093c400 | (28 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xc1d, %htstate ta T_CHANGE_NONPRIV ! rand=0 (1) ldx [%r11+%r0], %g1 done donretarg_1_103: .word 0xe86fe18e ! 137: LDSTUB_I ldstub %r20, [%r31 + 0x018e] ibp_1_104: nop .word 0xe1bfe120 ! 138: STDFA_I stda %f16, [0x0120, %r31] nop ta T_CHANGE_HPRIV mov 0x1, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_1_105 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x00061fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_1_105: ta T_CHANGE_NONHPRIV .word 0xe9e7e013 ! 139: CASA_R casa [%r31] %asi, %r19, %r20 splash_cmpr_1_106: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 ta T_CHANGE_HPRIV wrhpr %r17, %g0, %hsys_tick_cmpr .word 0xaf800011 ! 140: WR_TICK_CMPR_REG_R wr %r0, %r17, %- .word 0xe8bfc029 ! 141: STDA_R stda %r20, [%r31 + %r9] 0x01 .word 0x91d02032 ! 142: Tcc_I ta icc_or_xcc, %r0 + 50 splash_hpstate_1_108: ta T_CHANGE_NONHPRIV .word 0x8198349e ! 143: WRHPR_HPSTATE_I wrhpr %r0, 0x149e, %hpstate dvapa_1_109: nop ta T_CHANGE_HPRIV mov 0x8b3, %r20 mov 0x1a, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0x87ac0a48 ! 144: FCMPd fcmpd %fcc, %f16, %f8 .word 0x2e800001 ! 1: BVS bvs,a .word 0x8d903187 ! 145: WRPR_PSTATE_I wrpr %r0, 0x1187, %pstate memptr_1_111: set user_data_start, %r31 .word 0x8580f5d0 ! 146: WRCCR_I wr %r3, 0x15d0, %ccr ceter_1_112: nop ta T_CHANGE_HPRIV mov 7, %r17 sllx %r17, 60, %r17 mov 0x18, %r16 stxa %r17, [%r16]0x4c ta T_CHANGE_NONHPRIV .word 0xa7410000 ! 147: RDTICK rd %tick, %r19 nop ta T_CHANGE_HPRIV ! macro donret_1_113: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_113-donret_1_113+4), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x2, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x00569700 | (0x89 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0x194e, %htstate ta T_CHANGE_NONHPRIV ! rand=1 (1) ldx [%r11+%r0], %g1 done donretarg_1_113: .word 0xe6ffe1da ! 148: SWAPA_I swapa %r19, [%r31 + 0x01da] %asi splash_tba_1_114: nop ta T_CHANGE_PRIV setx 0x0000000000380000, %r11, %r12 .word 0x8b90000c ! 149: WRPR_TBA_R wrpr %r0, %r12, %tba splash_htba_1_115: nop ta T_CHANGE_HPRIV setx 0x0000000000280000, %r11, %r12 .word 0x8b98000c ! 150: WRHPR_HTBA_R wrhpr %r0, %r12, %htba fpinit_1_116: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0xc3e835d0 ! 151: PREFETCHA_I prefetcha [%r0, + 0xfffff5d0] %asi, #one_read tagged_1_117: taddcctv %r5, 0x1b0c, %r18 .word 0xe607e1dd ! 152: LDUW_I lduw [%r31 + 0x01dd], %r19 #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_1_118)+0, 16, 16)) -> intp(mask2tid(0x1),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_1_118)&0xffffffff) + 24, 16, 16)) -> intp(mask2tid(0x1),1,3,,,,,1) xir_1_118: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_1_118: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984bed8 ! 153: WR_SET_SOFTINT_I wr %r18, 0x1ed8, %set_softint .word 0x89800011 ! 154: WRTICK_R wr %r0, %r17, %tick mondo_1_120: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi stxa %r20, [%r0+0x3d0] %asi .word 0x9d948011 ! 155: WRPR_WSTATE_R wrpr %r18, %r17, %wstate .word 0xe737c000 ! 156: STQF_R - %f19, [%r0, %r31] .word 0x87802039 ! 157: WRASI_I wr %r0, 0x0039, %asi .word 0xa868fbcd ! 158: UDIVX_I udivx %r3, 0xfffffbcd, %r20 splash_cmpr_1_121: mov 0, %r18 sllx %r18, 63, %r18 rd %tick, %r17 add %r17, 0x100, %r17 or %r17, %r18, %r17 .word 0xaf800011 ! 159: WR_TICK_CMPR_REG_R wr %r0, %r17, %- nop ta T_CHANGE_HPRIV ! macro donret_1_122: rd %pc, %r12 mov HIGHVA_HIGHNUM, %r10 sllx %r10, 32, %r10 or %r12, %r10, %r12 add %r12, (donretarg_1_122-donret_1_122), %r12 add %r12, 0x4, %r11 ! seq tnpc andn %r11, %r10, %r11 ! low VA tnpc wrpr %g0, 0x1, %tl wrpr %g0, %r12, %tpc wrpr %g0, %r11, %tnpc set (0x0090ce00 | (0x55 << 24)), %r13 and %r12, 0xfff, %r14 sllx %r14, 30, %r14 or %r13, %r14, %r20 wrpr %r20, %g0, %tstate wrhpr %g0, 0xd07, %htstate ta T_CHANGE_NONPRIV ! rand=0 (1) ldx [%r12+%r0], %g1 retry donretarg_1_122: .word 0x9ba509d3 ! 160: FDIVd fdivd %f20, %f50, %f44 pmu_1_123: nop setx 0xffffffbeffffffa8, %g1, %g7 .word 0xa3800007 ! 161: WR_PERF_COUNTER_R wr %r0, %r7, %- splash_tba_1_124: nop ta T_CHANGE_PRIV set 0x120000, %r12 .word 0x8b90000c ! 162: WRPR_TBA_R wrpr %r0, %r12, %tba mondo_1_125: nop .word 0x87802025 ! 1: WRASI_I wr %r0, 0x0025, %asi ta T_CHANGE_PRIV stxa %r20, [%r0+0x3e8] %asi .word 0x9d914003 ! 163: WRPR_WSTATE_R wrpr %r5, %r3, %wstate .word 0xa190200c ! 164: WRPR_GL_I wrpr %r0, 0x000c, %- trapasi_1_126: nop mov 0x8, %r1 ! (VA for ASI 0x5b) .word 0xdad04b60 ! 165: LDSHA_R ldsha [%r1, %r0] 0x5b, %r13 .word 0x8d802000 ! 166: WRFPRS_I wr %r0, 0x0000, %fprs splash_tba_1_127: nop ta T_CHANGE_PRIV setx 0x0000000000380000, %r11, %r12 .word 0x8b90000c ! 167: WRPR_TBA_R wrpr %r0, %r12, %tba invalw mov 0x34, %r30 .word 0x91d0001e ! 168: Tcc_R ta icc_or_xcc, %r0 + %r30 nop ta T_CHANGE_HPRIV mov 0x1, %r10 set sync_thr_counter6, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 #endif cas [%r23],%g0,%r10 !lock brnz %r10, sma_1_128 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_MA_SYNC] %asi, %g0 set 0x001e1fff, %g1 stxa %g1, [%g0 + 0x80] %asi wr %r12, %g0, %asi st %g0, [%r23] sma_1_128: ta T_CHANGE_NONHPRIV .word 0xdbe7e00c ! 169: CASA_R casa [%r31] %asi, %r12, %r13 .word 0x9f803e99 ! 170: SIR sir 0x1e99 .word 0x8d903f75 ! 171: WRPR_PSTATE_I wrpr %r0, 0x1f75, %pstate ibp_1_130: nop ta T_CHANGE_NONHPRIV .word 0xe19fe1c0 ! 172: LDDFA_I ldda [%r31, 0x01c0], %f16 .word 0x9a68f694 ! 173: UDIVX_I udivx %r3, 0xfffff694, %r13 .word 0xa16cc010 ! 174: SDIVX_R sdivx %r19, %r16, %r16 dvapa_1_131: nop ta T_CHANGE_HPRIV mov 0xe18, %r20 mov 0x0, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xe0dfc02d ! 175: LDXA_R ldxa [%r31, %r13] 0x01, %r16 .word 0xa7817d17 ! 176: WR_GRAPHICS_STATUS_REG_I wr %r5, 0x1d17, %- nop ta T_CHANGE_HPRIV mov 0x1+1, %r10 set sync_thr_counter5, %r23 #ifndef SPC ldxa [%g0]0x63, %o1 and %o1, 0x38, %o1 add %o1, %r23, %r23 sllx %o1, 5, %o3 !(CID*256) #endif cas [%r23],%g0,%r10 !lock brnz %r10, cwq_1_132 rd %asi, %r12 wr %g0, 0x40, %asi ldxa [%g0 + ASI_SPU_CWQ_SYNC] %asi, %l1 and %l1, 0x3, %l1 ! Check if busy/enabled .. cmp %l1, 1 bne cwq_1_132 set CWQ_BASE, %l6 #ifndef SPC add %l6, %o3, %l6 #endif stxa %l1, [%g0 + ASI_SPU_CWQ_CSR] %asi best_set_reg(0x20610050, %l1, %l2) !# Control Word sllx %l2, 32, %l2 stx %l2, [%l6 + 0x0] membar #Sync ldxa [%g0 + ASI_SPU_CWQ_HEAD] %asi, %l2 sub %l2, 0x40, %l2 stxa %l2, [%g0 + ASI_SPU_CWQ_HEAD] %asi wr %r12, %g0, %asi st %g0, [%r23] cwq_1_132: ta T_CHANGE_NONHPRIV .word 0x9b414000 ! 177: RDPC rd %pc, %r13 fpinit_1_133: nop setx fp_data_quads, %r19, %r20 ldd [%r20], %f0 ldd [%r20+8], %f4 ld [%r20+16], %fsr ld [%r20+24], %r19 wr %r19, %g0, %gsr .word 0x89a009a4 ! 178: FDIVs fdivs %f0, %f4, %f4 splash_lsu_1_134: nop ta T_CHANGE_HPRIV set 0x6a49fa43, %r2 mov 0x1, %r1 sllx %r1, 32, %r1 or %r1, %r2, %r2 stxa %r2, [%r0] ASI_LSU_CONTROL ta T_CHANGE_NONHPRIV .word 0x3d400001 ! 179: FBPULE fbule,a,pn %fcc0, .word 0x87802083 ! 180: WRASI_I wr %r0, 0x0083, %asi #if (defined SPC || defined CMP) !$EV trig_pc_d(1, expr(@VA(.MAIN.xir_1_135)+40, 16, 16)) -> intp(mask2tid(0x1),1,3,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.xir_1_135)&0xffffffff) + 48, 16, 16)) -> intp(mask2tid(0x1),1,3,,,,,1) xir_1_135: #else #if (defined FC) !! Generate XIR via RESET_GEN register ta T_CHANGE_HPRIV rdpr %pstate, %r18 andn %r18, 0x208, %r18 ! Reset pstate.am,cle wrpr %r18, %pstate #ifndef XIR_RND_CORES ldxa [%g0] 0x63, %o1 mov 1, %r18 sllx %r18, %o1, %r18 #endif mov 0x30, %r19 setx 0x8900000808, %r16, %r17 mov 0x2, %r16 xir_1_135: stxa %r18, [%r19] 0x41 stx %r16, [%r17] #endif #endif .word 0xa984aa1f ! 181: WR_SET_SOFTINT_I wr %r18, 0x0a1f, %set_softint trapasi_1_136: nop mov 0x110, %r1 ! (VA for ASI 0x4a) .word 0xdad84940 ! 182: LDXA_R ldxa [%r1, %r0] 0x4a, %r13 intveclr_1_137: nop ta T_CHANGE_HPRIV setx 0x39494d2c3ead1ae4, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 183: FBPLG fblg,a,pn %fcc0, tagged_1_138: tsubcctv %r16, 0x1340, %r6 .word 0xda07e1b1 ! 184: LDUW_I lduw [%r31 + 0x01b1], %r13 splash_hpstate_1_139: ta T_CHANGE_NONHPRIV .word 0x3e800001 ! 1: BVC bvc,a .word 0x819823cc ! 185: WRHPR_HPSTATE_I wrhpr %r0, 0x03cc, %hpstate .word 0xda77c000 ! 186: STX_R stx %r13, [%r31 + %r0] brcommon3_1_140: nop setx common_target, %r12, %r27 lduw [%r27], %r12 ! Load common dest into dcache .. ba,a .+12 .word 0xdb37e150 ! 1: STQF_I - %f13, [0x0150, %r31] ba,a .+8 jmpl %r27+0, %r27 .word 0x8d9034cd ! 187: WRPR_PSTATE_I wrpr %r0, 0x14cd, %pstate otherw mov 0xb1, %r30 .word 0x91d0001e ! 188: Tcc_R ta icc_or_xcc, %r0 + %r30 ibp_1_141: nop .word 0x99a409d4 ! 189: FDIVd fdivd %f16, %f20, %f12 tagged_1_142: tsubcctv %r16, 0x146a, %r19 .word 0xd807e1f5 ! 190: LDUW_I lduw [%r31 + 0x01f5], %r12 .word 0x87802080 ! 191: WRASI_I wr %r0, 0x0080, %asi intveclr_1_143: nop ta T_CHANGE_HPRIV setx 0xfdaf5e0947547c8a, %r1, %r28 stxa %r28, [%g0] 0x72 ta T_CHANGE_NONHPRIV .word 0x25400001 ! 192: FBPLG fblg,a,pn %fcc0, #if (defined SPC || defined CMP1) !$EV trig_pc_d(1, expr(@VA(.MAIN.intvec_1_144) + 40, 16, 16)) -> intp(0,0,16,,,,,1) !$EV trig_pc_d(1, expr((@VA(.MAIN.intvec_1_144)&0xffffffff) + 40, 16, 16)) -> intp(6,0,0,,,,,1) #else set 0x97804665, %r28 #if (MAX_THREADS == 8) and %r28, 0x7ff, %r28 #endif stxa %r28, [%g0] 0x73 #endif intvec_1_144: .word 0x39400001 ! 193: FBPUGE fbuge,a,pn %fcc0, .word 0x8780208a ! 194: WRASI_I wr %r0, 0x008a, %asi .word 0x89800011 ! 195: WRTICK_R wr %r0, %r17, %tick dvapa_1_146: nop ta T_CHANGE_HPRIV mov 0x899, %r20 mov 0x13, %r19 sllx %r20, 23, %r20 or %r19, %r20, %r19 stxa %r19, [%g0] ASI_LSU_CONTROL mov 0x38, %r18 stxa %r31, [%r18]0x58 ta T_CHANGE_NONHPRIV .word 0xc19fe120 ! 196: LDDFA_I ldda [%r31, 0x0120], %f0 splash_tba_1_147: nop ta T_CHANGE_PRIV setx 0x0000000000380000, %r11, %r12 .word 0x8b90000c ! 197: WRPR_TBA_R wrpr %r0, %r12, %tba .word 0x96c36bbd ! 198: ADDCcc_I addccc %r13, 0x0bbd, %r11 pmu_1_148: nop setx 0xffffffbaffffffa7, %g1, %g7 .word 0xa3800007 ! 199: WR_PERF_COUNTER_R wr %r0, %r7, %- ibp_1_149: nop ta T_CHANGE_NONHPRIV .word 0xc19fda00 ! 200: LDDFA_R ldda [%r31, %r0], %f0 nop nop ta T_CHANGE_PRIV wrpr %g0, %g0, %gl nop nop join_lbl_0_0: SECTION .MAIN .text diag_finish: nop nop nop ta T_CHANGE_HPRIV #if (MULTIPASS > 0) multipass_check: rd %asi, %r12 wr %g0, ASI_SCRATCHPAD, %asi ldxa [0x38]%asi, %r10 cmp %r10, MULTIPASS inc %r10 stxa %r10, [0x38]%asi wr %g0, %r12, %asi bne fork_threads wrpr %g0, %g0, %gl #endif finish_diag: best_set_reg(HV_TRAP_BASE_PA, %r1, %r2) wrhpr %g2, %g0, %htba ta T_GOOD_TRAP nop nop nop .data .xword 0x0 ! fp data rs1, rs2, fsr, gsr quads .. .global fp_data_quads fp_data_quads: .xword 0x0044000000000000 .xword 0x4028000000000000 .xword 0x0fc0400400000000 .xword 0x0000000000000000 .xword 0x0041000000000000 .xword 0x4022000000000000 .xword 0x0600800000000000 .xword 0x0000000000000000 .xword 0x0220000000000000 .xword 0x4140000000000000 .xword 0x4fc0400400000000 .xword 0x0000000000000000 .xword 0x4090000000000000 .xword 0x0090000000000000 .xword 0x0f80400800000000 .xword 0x0a00000000000000 .align 128 .global user_data_start .data user_data_start: .xword 0x331b631809ec33a8 .xword 0xf3b2213cb0dea26d .xword 0x36f450e2591d7299 .xword 0x2461c18b19890e2b .xword 0x79465b8ad87a619a .xword 0x7d2be13d4a961d1d .xword 0x8f447def691df235 .xword 0x27419199e2b6f3a0 .xword 0x1e954d9787aa3690 .xword 0xc06e83437b9c75ff .xword 0xf54dbd517524b3f8 .xword 0x9976a12b0a6691c1 .xword 0x0cf27cf381bd7062 .xword 0xcf37afe424199982 .xword 0xcc71ba8aead0c6d8 .xword 0xb3834313074098ba .xword 0xce30a45eb2f5e70c .xword 0x36e4a485663c3433 .xword 0x1e01a778a9397844 .xword 0xcc7686cc0b312d96 .xword 0x7272df29e076ec44 .xword 0xac1bcf1cae8abc40 .xword 0x8c8ccbe6b4227266 .xword 0x147f9d40a8654ef4 .xword 0x3e17088c5c85df73 .xword 0xcc50c62d9f9f2c1d .xword 0xfb11fa24d34d501f .xword 0xd67e86332de99ea8 .xword 0x1e069cbe678517a5 .xword 0xd4d817d7b4bbec72 .xword 0x1f0ba71a1ce39c52 .xword 0x50b7bc6fec2e09e2 .xword 0x1138eee77886f5c0 .xword 0x5c6ace6603c0210d .xword 0xba717ab622189493 .xword 0xfc271c39146465eb .xword 0x16648f9bc6f66df1 .xword 0x73e0b8f71930e7c8 .xword 0xe8948d34065c1154 .xword 0x42f2386fbabd4b2e .xword 0x3215df64a76459a7 .xword 0xc965a9be2d459570 .xword 0xf03b78f5bb9e2eba .xword 0x93c1ca2c1104a983 .xword 0xb1047e9f842f4292 .xword 0xbf80d393179bb0ed .xword 0xc2df8c5a1e405cfb .xword 0x404ded6377fe882a .xword 0x42905c7a7bc24bad .xword 0xa5f2d961e77e8f67 .xword 0x8bc589ba0b310f92 .xword 0xd3f2d5528d1bbde6 .xword 0x132710e0ef3b8e0c .xword 0x5fb683c1e0b4e535 .xword 0xbee45201bd053576 .xword 0x9ef5634f4ccfbdc7 .xword 0xaeeb12d6305573ff .xword 0x0dad6655ed6690d3 .xword 0xa779358e5aea373e .xword 0x7622eeeb5466363f .xword 0x5984a579011a9709 .xword 0xff46adda829e7bf5 .xword 0x144723a68806b153 .xword 0xf7275545a1fb8a3f .xword 0x8720301346593fcf .xword 0x40b2b333f5b19794 .xword 0xb08474ceb6e96c27 .xword 0xcca9796998fd9534 .xword 0x3e81ca8d31eeb0bf .xword 0xdab44fb08e69de80 .xword 0xb8cda60d2375fde7 .xword 0x287a43058488d311 .xword 0x25bd277df88ac8e1 .xword 0xd7ae5b5508607566 .xword 0xdaa249e57ff302fa .xword 0x5d92132342b85224 .xword 0x21a0c0aba29f2cfd .xword 0x42c23c5eaab46099 .xword 0x7a2c7dd9e9f78df8 .xword 0x12833f41b99b8cef .xword 0xb2c9ef3813df8b78 .xword 0x4304159d1b96866f .xword 0xa480cc5aabb46afa .xword 0x81613a58b488cc4d .xword 0x45ee5320950356d7 .xword 0x95a828b31a9ee744 .xword 0x24047167a131f194 .xword 0xad739170204c4fbe .xword 0x076ab02fa251d90b .xword 0xb3f988e15c01ecb2 .xword 0xeb3d06e41a17640a .xword 0x184d38ffde261a06 .xword 0x89e79e8fc99027af .xword 0xe2ccdae4cf7e7898 .xword 0xa0a9540e2bfd468a .xword 0xc6288f4f07a209fc .xword 0x418036e3a5751abb .xword 0xd6d2f49cbbd46edd .xword 0x9bf65f68cf93d714 .xword 0xeb0d99ef18f694b9 .xword 0xe027115a3552352f .xword 0xd9178b5b18936710 .xword 0x2730820b2309652f .xword 0xf86f16b629cba0f9 .xword 0x016ddb14078cea1e .xword 0x6516d0946d17f4d2 .xword 0x9f5d8e64c3bc8137 .xword 0xa106931788d0c4f9 .xword 0x30978524e2ee056f .xword 0x6500cfb5ecd46787 .xword 0x5841a8c268faa02d .xword 0xac4fc6bed66f8c83 .xword 0xd6b191cea3bf061e .xword 0x9ca24c8d82ee72ff .xword 0x3d7c8081720b96df .xword 0x916c57b9cb500227 .xword 0x39ec751485bcd373 .xword 0x8c4fd30b8d0f84c0 .xword 0xfa3e7c1019b4e2f2 .xword 0x417712ec3c894dab .xword 0xd012a6e04e59c025 .xword 0x8fb62bd644795b2a .xword 0x0b9c425d502ea295 .xword 0xf11c1cbcbed6507f .xword 0xda998fb727d4dcda .xword 0xf32cb5aeaa6c7351 .xword 0x6bfd02e927d4a43a .xword 0xe6994d79b3b813a8 .xword 0xe63eaf6c33f90d3d .xword 0x0d9a8b4351ac7b25 .xword 0x61fdaa84848b94d6 .xword 0xc95839ba8e6ea5cd .xword 0xbae6f87394baf8e1 .xword 0x603c5770d88b0f29 .xword 0x07fe9c506b1f3917 .xword 0xbb6cbb81e02a5ced .xword 0x1bc5db89cf3e7793 .xword 0x56d35d0a38b76ad0 .xword 0x92a3a30421cab83d .xword 0x742364ff4bcdb537 .xword 0xfa93c9a3470fab88 .xword 0x3a2c0e1f20db0011 .xword 0xc89be59dced24322 .xword 0x1c1003fbb600bbd9 .xword 0x83b6559944b260ea .xword 0x7cfd3f144d26d6ed .xword 0x606473938e7f12db .xword 0xc10e71b538735d9d .xword 0x0501836e7819a930 .xword 0x47b7180867dd9d80 .xword 0xfc7d678ce55499ba .xword 0xd326e7f31236df23 .xword 0xd9f8903a6b9ef250 .xword 0xe82c6a95782d597d .xword 0xfbf0fbe4c742bffd .xword 0x2ba10b767306d48b .xword 0xd12f25a5192ef433 .xword 0xaedce25a1a5f2688 .xword 0xd4ac019e53cb71ea .xword 0xa1d7dba8b75761cf .xword 0x57d6778855b90101 .xword 0x78b61abdeff887a0 .xword 0x977191d33a2013d8 .xword 0x6767917ff44bc79f .xword 0xc9d2ea46f145859f .xword 0x65632085fbc357c2 .xword 0xbf87887dab4167b8 .xword 0x8033c5e296e50355 .xword 0x23e3935cceb94a9b .xword 0xe9ae3044017ce315 .xword 0xe8a16aa774800861 .xword 0x49bb9ee55f82e2e4 .xword 0x2d633a2c8fd1a0f4 .xword 0x7373d1b65a2582f1 .xword 0xaf2acee16e9c47cc .xword 0x9dde1e9c3a0ae090 .xword 0xf73778e2d192c744 .xword 0x54ada8850f266961 .xword 0xcb2beeed9bc15254 .xword 0x66f13a9f133591f6 .xword 0x6834992e1dbec65b .xword 0x9faf9712f4172833 .xword 0x4b4f856615883d23 .xword 0x1dee51ed472128d2 .xword 0x051f8e191ac1577b .xword 0x3afa4d141d6e861c .xword 0xa29646062edc1a54 .xword 0x67b37f96c14ae8e9 .xword 0x2671bc517302fd20 .xword 0x1a2e5434d8029173 .xword 0x0eb945b1b39092ab .xword 0x7c5f09fcd33701c5 .xword 0x5497ca4ea727cfc6 .xword 0x797a815e1fdb79c8 .xword 0xef6215d63f159d4e .xword 0xde36a7be1137ff52 .xword 0xc497a801325ac13e .xword 0x2e995d0b06f48a04 .xword 0x7604d4a384474f23 .xword 0x11b30607255842b7 .xword 0xdd9a3e27fa585295 .xword 0x6ae52f04ece0379b .xword 0xba01335bfe729e4a .xword 0x8eeeb2b41cc0e0da .xword 0x1280326c51f23b3c .xword 0x75e1b48995470904 .xword 0xce714a9047fefda1 .xword 0xcac5206c8ad61a32 .xword 0xdf5d85b6658f5874 .xword 0x99024ce6ae3f218d .xword 0xb96b5f2c791033aa .xword 0xe2f4e83ebe59bfd1 .xword 0x53a21a7671cf989e .xword 0xec423431d2ff1b31 .xword 0xbdada2d432099f9c .xword 0xcb3591cf27706e2a .xword 0xe91ed731fbfc4bc2 .xword 0x1e94ab47ebd036a7 .xword 0xd2d1ca7364e296ae .xword 0x310852fefdf320bd .xword 0x2ef22675cbfc96fd .xword 0x71ace5c4aac31d7b .xword 0x7b2448bbb15ab871 .xword 0xc7b1765826d7608f .xword 0x917d3af12d80c3d6 .xword 0xabfcd55692eec6b8 .xword 0xe490304e21772152 .xword 0x8f7fee154ded4399 .xword 0x1709b319735c894d .xword 0x6f2fba8522c3e7da .xword 0x9f170a96a818759a .xword 0x8f9a95d370b99f4e .xword 0xd38de37b8dd80dc0 .xword 0x2a66d3fb268584ea .xword 0xec4cdd6da4cfefbb .xword 0x4bf7e08ee16645f0 .xword 0x14e7523dee58de28 .xword 0x8c102af4f6f10ba0 .xword 0x88b3aa498c50c433 .xword 0x50fcef869704fa82 .xword 0x950b6475c4e8d8a9 .xword 0x2199f9a329093d94 .xword 0x3d72297e4b4b633f .xword 0x89bb087b3fa4b290 .xword 0xa6516f8752b2fdbd .xword 0x5b7a311fabc5e940 .xword 0x0059d8bf90919eaf .xword 0x6dec1cff2edd7caf .xword 0x60a16bde68e62752 .xword 0x2622afe97ca15109 .xword 0x4159ac1a9b3d8b5a .xword 0xc2d2f8c78c3725eb .xword 0x3b390862858b65cf .xword 0x178c004788170053 .xword 0xc23cc41715649449 .xword 0xbdd870ae20c39013 SECTION .HTRAPS .text .global restore_range_regs restore_range_regs: wr %g0, ASI_MMU_REAL_RANGE, %asi mov 1, %g1 sllx %g1, 63, %g1 ldxa [ASI_MMU_REAL_RANGE_0] %asi, %g2 or %g2 ,%g1, %g2 stxa %g2, [ASI_MMU_REAL_RANGE_0] %asi ldxa [ASI_MMU_REAL_RANGE_1] %asi, %g2 or %g2 ,%g1, %g2 stxa %g2, [ASI_MMU_REAL_RANGE_1] %asi ldxa [ASI_MMU_REAL_RANGE_2] %asi, %g2 or %g2 ,%g1, %g2 stxa %g2, [ASI_MMU_REAL_RANGE_2] %asi ldxa [ASI_MMU_REAL_RANGE_3] %asi, %g2 or %g2 ,%g1, %g2 stxa %g2, [ASI_MMU_REAL_RANGE_3] %asi retry .global wdog_2_ext # 10 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_extensions.s" SECTION .HTRAPS .global wdog_2_ext .global retry_with_base_tba .global resolve_bad_tte .text resolve_bad_tte: !if pc[13:5]==0, then assume not a relocated handler rdpr %tpc, %r4 andn %r4, 0xf, %r5 sllx %r5, 49, %r5 brnz,a %r5, retry_with_base_tba !assume %r27 is where we came from .. fdivd %f0, %f4, %f12 jmpl %r27+8, %r0 fdivs %f0, %f4, %f12 retry_with_base_tba: best_set_reg(TRAP_BASE_VA, %r3, %r5) cmp %r4, %r5 bz htrap_5_ext_done set 0x7fff, %r3 and %r4, %r3, %r4 or %r5, %r4, %r4 wrpr %r4, %tpc rdpr %tnpc, %r4 and %r4, %r3, %r4 or %r5, %r4, %r4 wrpr %r4, %tnpc retry htrap_5_ext: rd %pc, %l2 inc %l3 add %l2, htrap_5_ext_done-htrap_5_ext, %l2 rdpr %tl, %l3 rdpr %tstate, %l4 rdhpr %htstate, %l5 or %l5, 0x4, %l5 inc %l3 wrpr %l3, %tl wrpr %l2, %tpc add %l2, 4, %l2 wrpr %l2, %tnpc wrpr %l4, %tstate wrhpr %l5, %htstate retry htrap_5_ext_done: done wdog_2_ext: mov 0x1f, %l1 stxa %l1, [%g0] ASI_LSU_CTL_REG ! If TT != 2, then goto trap handler rdpr %tt, %l1 cmp %l1, 0x2 bne wdog_2_goto_handler nop ! else done done wdog_2_goto_handler: rdhpr %htstate, %l3 and %l3, 0x4, %l3 ! If previously in hpriv mode, go to hpriv brnz,a %l3, wdog_2_goto_handler_1 rdhpr %htba, %l3 srlx %l1, 7, %l3 ! Send priv sw traps to priv mode .. cmp %l3, 0x2 ! 0x2 = priv sw trap, 0x3=hpriv sw trap .. be,a wdog_2_goto_handler_1 rdpr %tba, %l3 rdhpr %htba, %l3 wdog_2_goto_handler_1: sllx %l1, 5, %l1 add %l1, %l3, %l3 jmp %l3 nop # 86 "/import/n2-aus-random/N2/sandbox-24x7/somePerson/SIMRUN/DIAG/include/tlu_custom_trap_extensions.s" ! Red mode other reset handler ! Get htba, and tt and make trap address ! Jump to trap handler .. SECTION .RED_SEC .global red_other_ext .global wdog_red_ext .text red_other_ext: ! IF TL=6, shift stack by one .. rdpr %tl, %l1 cmp %l1, 6 be start_tsa_shift nop continue_red_other: mov 0x1f, %l1 stxa %l1, [%g0] ASI_LSU_CTL_REG rdpr %tt, %l1 rdhpr %htstate, %l2 and %l2, 0x4, %l2 ! If previously in hpriv mode, go to hpriv brnz,a %l2, red_goto_handler rdhpr %htba, %l2 srlx %l1, 7, %l2 ! Send priv sw traps to priv mode .. cmp %l2, 0x2 ! 0x2 = priv sw trap, 0x3=hpriv sw trap .. be,a red_goto_handler rdpr %tba, %l2 rdhpr %htba, %l2 red_goto_handler: sllx %l1, 5, %l1 add %l1, %l2, %l2 rdhpr %hpstate, %l1 jmp %l2 wrhpr %l1, 0x20, %hpstate nop wdog_red_ext: ! Shift stack down by 1 ... rdpr %tl, %l1 cmp %l1, 6 bl wdog_end start_tsa_shift: mov 0x2, %l2 tsa_shift: wrpr %l2, %tl rdpr %tt, %l3 rdpr %tpc, %l4 rdpr %tnpc, %l5 rdpr %tstate, %l6 rdhpr %htstate, %l7 dec %l2 wrpr %l2, %tl wrpr %l3, %tt wrpr %l4, %tpc wrpr %l5, %tnpc wrpr %l6, %tstate wrhpr %l7, %htstate add %l2, 2, %l2 cmp %l2, %l1 ble tsa_shift nop tsa_shift_done: dec %l1 wrpr %l1, %tl wdog_end: ! If TT != 2, then goto trap handler rdpr %tt, %l1 cmp %l1, 0x2 bne continue_red_other nop ! else done mov 0x1f, %l1 stxa %l1, [%g0] ASI_LSU_CTL_REG done # 1110 "diag.j" SECTION .CWQ_DATA DATA_VA =0x4000 attr_data { Name = .CWQ_DATA hypervisor } .data .align 16 .global msg msg: .xword 0xad32fa52374cc6ba .xword 0x4cbf52280549003a .align 16 .global results results: .xword 0xDEADBEEFDEADBEEF .xword 0xDEADBEEFDEADBEEF !# CWQ data area !# CWQ_BASE for core N is CWQ_BASE+(N*256) !# CWQ_LAST for core N is CWQ_LAST+(N*256) .align 64 .global CWQ_BASE CWQ_BASE: .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .global CWQ_LAST .align 64 CWQ_LAST: .word 0x0 .align 64 cwq_base1: .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .align 64 cwq_last1: .word 0x0 .align 64 .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .align 64 .word 0x0 .align 64 .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .align 64 .word 0x0 .align 64 .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .align 64 .word 0x0 .align 64 .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .align 64 .word 0x0 .align 64 .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .align 64 .word 0x0 .align 64 .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .xword 0xAAAAAAAAAAAAAAA .align 64 .word 0x0 SECTION .MyHTRAPS_0 TEXT_VA = 0x0000000000280000, DATA_VA = 0x00000000002c0000 attr_text { Name = .MyHTRAPS_0, RA = 0x0000000000280000, PA = ra2pa(0x0000000000280000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 1, TTE_P = 1, TTE_W = 0, TTE_X = 0 } attr_data { Name = .MyHTRAPS_0, RA = 0x00000000002c0000, PA = ra2pa(0x00000000002c0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 1, TTE_E = 0, TTE_P = 1, TTE_W = 0 } .text #include "htraps.s" #include "tlu_htraps_ext.s" SECTION .MyHTRAPS_1 TEXT_VA = 0x00000000002a0000, DATA_VA = 0x00000000002e0000 attr_text { Name = .MyHTRAPS_1, RA = 0x00000000002a0000, PA = ra2pa(0x00000000002a0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 1, TTE_P = 1, TTE_W = 0, TTE_X = 0 } attr_data { Name = .MyHTRAPS_1, RA = 0x00000000002e0000, PA = ra2pa(0x00000000002e0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 0, TTE_P = 1, TTE_W = 0 } .text #include "htraps.s" #include "tlu_htraps_ext.s" SECTION .MyHTRAPS_2 TEXT_VA = 0x0000000200280000, DATA_VA = 0x00000002002c0000 attr_text { Name = .MyHTRAPS_2, RA = 0x0000000200280000, PA = ra2pa(0x0000000200280000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 0, TTE_P = 1, TTE_W = 0, TTE_X = 0 } attr_data { Name = .MyHTRAPS_2, RA = 0x00000002002c0000, PA = ra2pa(0x00000002002c0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 0, TTE_E = 0, TTE_P = 1, TTE_W = 0 } .text #include "htraps.s" #include "tlu_htraps_ext.s" SECTION .MyHTRAPS_3 TEXT_VA = 0x00000002002a0000, DATA_VA = 0x00000002002e0000 attr_text { Name = .MyHTRAPS_3, RA = 0x00000002002a0000, PA = ra2pa(0x00000002002a0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 0, TTE_E = 0, TTE_P = 1, TTE_W = 0, TTE_X = 0 } attr_data { Name = .MyHTRAPS_3, RA = 0x00000002002e0000, PA = ra2pa(0x00000002002e0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 0, TTE_E = 0, TTE_P = 1, TTE_W = 0 } .text #include "htraps.s" #include "tlu_htraps_ext.s" SECTION .MyTRAPS_0 TEXT_VA = 0x0000000000380000, DATA_VA = 0x00000000003c0000 attr_text { Name = .MyTRAPS_0, RA = 0x0000000000380000, PA = ra2pa(0x0000000000380000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 1, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 0, TTE_E = 1, TTE_P = 0, TTE_W = 1, TTE_X = 0 } attr_data { Name = .MyTRAPS_0, RA = 0x00000000003c0000, PA = ra2pa(0x00000000003c0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 1, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 0, TTE_P = 1, TTE_W = 1 } #include "traps.s" SECTION .MyTRAPS_1 TEXT_VA = 0x00000000003a0000, DATA_VA = 0x00000000003e0000 attr_text { Name = .MyTRAPS_1, RA = 0x00000000003a0000, PA = ra2pa(0x00000000003a0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 1, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 0, TTE_E = 1, TTE_P = 1, TTE_W = 1, TTE_X = 0 } attr_data { Name = .MyTRAPS_1, RA = 0x00000000003e0000, PA = ra2pa(0x00000000003e0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 1, TTE_E = 0, TTE_P = 1, TTE_W = 0 } #include "traps.s" SECTION .MyTRAPS_2 TEXT_VA = 0x0000000400380000, DATA_VA = 0x00000004003c0000 attr_text { Name = .MyTRAPS_2, RA = 0x0000000400380000, PA = ra2pa(0x0000000400380000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 1, TTE_E = 1, TTE_P = 1, TTE_W = 1, TTE_X = 1 } attr_data { Name = .MyTRAPS_2, RA = 0x00000004003c0000, PA = ra2pa(0x00000004003c0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 1, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 0, TTE_P = 1, TTE_W = 0 } #include "traps.s" SECTION .MyTRAPS_3 TEXT_VA = 0x00000004003a0000, DATA_VA = 0x00000004003e0000 attr_text { Name = .MyTRAPS_3, RA = 0x00000004003a0000, PA = ra2pa(0x00000004003a0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 0, TTE_E = 1, TTE_P = 1, TTE_W = 1, TTE_X = 0 } attr_data { Name = .MyTRAPS_3, RA = 0x00000004003e0000, PA = ra2pa(0x00000004003e0000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0, TTE_V = 1, TTE_Size = PART0_Z_PAGE_SIZE_3, TTE_NFO = 0, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 1, TTE_E = 0, TTE_P = 1, TTE_W = 0 } #include "traps.s" SECTION .MyDATA_0 TEXT_VA = 0x00000000e0140000, DATA_VA = 0x0000000060140000 attr_text { Name = .MyDATA_0, RA = 0x0000000170100000, PA = ra2pa(0x0000000170100000,0), part_0_ctx_zero_tsb_config_0, part_0_ctx_nonzero_tsb_config_0, TTE_G = 1, TTE_Context = PCONTEXT, TTE_V = 1, TTE_Size = 0, TTE_NFO = 0, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 1, TTE_E = 1, TTE_P = 0, TTE_W = 1 } attr_data { Name = .MyDATA_0, RA = 0x0000000170100000, PA = ra2pa(0x0000000170100000,0), part_0_ctx_zero_tsb_config_1, part_0_ctx_nonzero_tsb_config_1, TTE_G = 1, TTE_Context = SCONTEXT, TTE_V = 1, TTE_Size = 0, TTE_NFO = 1, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 1, TTE_E = 0, TTE_P = 0, TTE_W = 1, tsbonly } attr_data { Name = .MyDATA_0, hypervisor } attr_text { Name = .MyDATA_0, hypervisor } .data .xword 0x49da8cac025338c3 .xword 0x2295762788f564fa .xword 0xb6099cba18b41312 .xword 0xdf25d04151f5a538 .xword 0x60d5ebe9665e3021 .xword 0xfdf478023b4998ad .xword 0x7054d39887606ed6 .xword 0x3c52b746bf7ad623 .xword 0xf0cc35124f5c494d .xword 0xdedde5e97cd6b235 .xword 0x96faaa1cc3398485 .xword 0x93723ea3fdfda19e .xword 0xbfff94720535ad49 .xword 0x2c3a69cb50542103 .xword 0x14995bd3a02381ef .xword 0x115ef6f3cdf21d91 .xword 0x98abf0021bd23c6f .xword 0x81aa96c4e0feac12 .xword 0x3b2bcc483f9bae1b .xword 0xb8774967aad35a12 .xword 0x2d6f4fbaf14d3b5e .xword 0x0cb59c0eb2e9ff6e .xword 0x0bc421ace084ddd9 .xword 0x967dc994b9be01cd .xword 0xfc04e8bbf9a2596a .xword 0x55ede22a92e59079 .xword 0x1cfd651ad91cc68c .xword 0x391c4f0452d458cc .xword 0x5be31412b63de420 .xword 0x3173965ee92c7994 .xword 0x8a01611c0f7f6291 .xword 0x76caa67ae2400de0 SECTION .MyDATA_1 TEXT_VA = 0x00000000e0340000, DATA_VA = 0x0000000060340000 attr_text { Name = .MyDATA_1, RA = 0x0000000170300000, PA = ra2pa(0x0000000170300000,0), part_0_ctx_zero_tsb_config_0, part_0_ctx_nonzero_tsb_config_0, TTE_G = 1, TTE_Context = PCONTEXT, TTE_V = 1, TTE_Size = 1, TTE_NFO = 1, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 0, TTE_P = 0, TTE_W = 0 } attr_data { Name = .MyDATA_1, RA = 0x0000000170300000, PA = ra2pa(0x0000000170300000,0), part_0_ctx_zero_tsb_config_1, part_0_ctx_nonzero_tsb_config_1, TTE_G = 1, TTE_Context = SCONTEXT, TTE_V = 1, TTE_Size = 0, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 1, TTE_E = 0, TTE_P = 0, TTE_W = 1, tsbonly } attr_data { Name = .MyDATA_1, hypervisor } attr_text { Name = .MyDATA_1, hypervisor } .data .xword 0xdd88be54981d3fa4 .xword 0xeb8d9c71d398928e .xword 0x30a02888af778940 .xword 0x8eb8c8da1a88a1ba .xword 0xf620af1b24319de2 .xword 0xa1054b68ea0d2b2b .xword 0x4419763a062c4822 .xword 0x732c986a920296cb .xword 0x809755cc6fce0159 .xword 0x47ae03dcd8735bfb .xword 0xb5ca69dfb397163b .xword 0x3f53e4f6982b56ac .xword 0xbb30f5ce10e9968a .xword 0x165175457ac582a4 .xword 0xefe7c78eb5373d2b .xword 0x3f49a7fedc9d3262 .xword 0x301e144e2fb6713e .xword 0xd03a65505c5c6642 .xword 0xa50d37c1cf98dfac .xword 0x3ce26714d7224ec4 .xword 0x2dbf5c5f9a6a8c47 .xword 0x3792eda22fcd7cff .xword 0x1a5fdbfa6a4fd5f2 .xword 0x6b353f386032cc8d .xword 0x6f5cacb770c1e42c .xword 0xddb419b7a72e17b2 .xword 0x252b43af176a39ad .xword 0x3786ab0906a4fcc0 .xword 0xb40d6c66c36108ab .xword 0x41eecd5bd8538bd5 .xword 0x9dbafd74fdf69ed5 .xword 0xd14393b22686ae91 SECTION .MyDATA_2 TEXT_VA = 0x00000000e0540000, DATA_VA = 0x0000000060540000 attr_text { Name = .MyDATA_2, RA = 0x0000000170500000, PA = ra2pa(0x0000000170500000,0), part_0_ctx_zero_tsb_config_0, part_0_ctx_nonzero_tsb_config_0, TTE_G = 1, TTE_Context = PCONTEXT, TTE_V = 1, TTE_Size = 1, TTE_NFO = 1, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 0, TTE_E = 1, TTE_P = 1, TTE_W = 1 } attr_data { Name = .MyDATA_2, RA = 0x0000000170500000, PA = ra2pa(0x0000000170500000,0), part_0_ctx_zero_tsb_config_1, part_0_ctx_nonzero_tsb_config_1, TTE_G = 1, TTE_Context = SCONTEXT, TTE_V = 1, TTE_Size = 3, TTE_NFO = 1, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 0, TTE_E = 1, TTE_P = 0, TTE_W = 0, tsbonly } attr_data { Name = .MyDATA_2, hypervisor } attr_text { Name = .MyDATA_2, hypervisor } .data .xword 0xa8641ee4fb3d400f .xword 0x9c5dc63a70902e4b .xword 0x24395de3afcab9ac .xword 0x1de98b5bdcf91eb1 .xword 0x403ed8b2ad48ce59 .xword 0x2deffed2a2d39799 .xword 0x54f372b07d7dd35b .xword 0xb1b01ecbee960fa3 .xword 0x7a47dd49630910ce .xword 0xfbde54cdc81daced .xword 0x79cc61dc9301e587 .xword 0x0f9ed1a9c4ac1d7f .xword 0x705671a1dd2de410 .xword 0xe4303b32acb1c6a6 .xword 0x8225fd25a2006450 .xword 0x7f0a23c142308ccd .xword 0x234049316312b0fe .xword 0xab7d675369210b32 .xword 0x1bafb2c79a63785f .xword 0x65599d9e688a70a0 .xword 0xe5f59fcc762243ce .xword 0xdf7b7d688ade0807 .xword 0x73b2a1fab8d32e8f .xword 0xbec563de0937d9b0 .xword 0xa524b85fed36e4df .xword 0x5a7a3ab1f6327fad .xword 0xaef852b8d85c5e3f .xword 0x116e2fae8c7b7998 .xword 0xb82de5db93b6a300 .xword 0xd5ae7f907e613029 .xword 0x16914e709296ba83 .xword 0xc83adf9b197a8bbc SECTION .MyDATA_3 TEXT_VA = 0x00000000e0740000, DATA_VA = 0x0000000060740000 attr_text { Name = .MyDATA_3, RA = 0x0000000170700000, PA = ra2pa(0x0000000170700000,0), part_0_ctx_zero_tsb_config_0, part_0_ctx_nonzero_tsb_config_0, TTE_G = 1, TTE_Context = PCONTEXT, TTE_V = 1, TTE_Size = 1, TTE_NFO = 1, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 0, TTE_E = 1, TTE_P = 1, TTE_W = 1 } attr_data { Name = .MyDATA_3, RA = 0x0000000170700000, PA = ra2pa(0x0000000170700000,0), part_0_ctx_zero_tsb_config_1, part_0_ctx_nonzero_tsb_config_1, TTE_G = 1, TTE_Context = SCONTEXT, TTE_V = 1, TTE_Size = 0, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 1, TTE_P = 0, TTE_W = 1, tsbonly } attr_data { Name = .MyDATA_3, hypervisor } attr_text { Name = .MyDATA_3, hypervisor } .data .xword 0x6e16b7169a84fb67 .xword 0x843c081cf9d8ec13 .xword 0xa98637b2b1ac153a .xword 0x32d5a45a64bcee4b .xword 0x042d0e829e3c4757 .xword 0x83a77e986cd18794 .xword 0xd0cd681acbe0db80 .xword 0xd7c3389ef23677b2 .xword 0x3e624aacdc89f825 .xword 0x7254f95126e9f25d .xword 0x2ce3ed3853fa2c7e .xword 0xc77ab8176c1d038a .xword 0x669157c743fddcc4 .xword 0xfb45850a8fd29a54 .xword 0xdf931bcf19cceee1 .xword 0xa64ffff58074f4d8 .xword 0xc09093040d0811c9 .xword 0x76f49cfc43d8aab6 .xword 0x20f68b09682260a5 .xword 0x4de46528f991492c .xword 0x56dc42fe13b15c20 .xword 0x8192962a494ff8a0 .xword 0x8446e13ba805ed7f .xword 0xe26b4ed299514f5c .xword 0xd2edb30a4b1f522d .xword 0x1e8341cf918c85d0 .xword 0x68de502e8c128048 .xword 0xd049800e1a0c02f4 .xword 0x915f01f22d87a522 .xword 0x1144c0180bedc655 .xword 0xc8d160a431cd9aaf .xword 0x81bf0782b4684cc5 SECTION .MyTEXT_0 TEXT_VA = 0x00000000e0200000 attr_text { Name = .MyTEXT_0, RA = 0x00000000e0200000, PA = ra2pa(0x00000000e0200000,0), part_0_ctx_zero_tsb_config_1, part_0_ctx_nonzero_tsb_config_1, TTE_G = 1, TTE_Context = PCONTEXT, TTE_V = 1, TTE_Size = 3, TTE_NFO = 0, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 0, TTE_P = 1, TTE_W = 1 } .text nuff_said_0: fdivd %f0, %f4, %f4 mov HIGHVA_HIGHNUM, %r11 sllx %r11, 32, %r11 or %r27, %r11, %r27 jmpl %r27+8, %r0 jmpl %r27+8, %r0 jmpl %r27+8, %r0 jmpl %r27+8, %r0 fdivs %f0, %f4, %f4 SECTION .MyTEXT_1 TEXT_VA = 0x00000000e0a00000 attr_text { Name = .MyTEXT_1, RA = 0x00000000e0a00000, PA = ra2pa(0x00000000e0a00000,0), part_0_ctx_zero_tsb_config_1, part_0_ctx_nonzero_tsb_config_1, TTE_G = 1, TTE_Context = PCONTEXT, TTE_V = 1, TTE_Size = 3, TTE_NFO = 0, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 0, TTE_P = 0, TTE_W = 0 } .text nuff_said_1: fdivs %f0, %f4, %f8 mov HIGHVA_HIGHNUM, %r11 sllx %r11, 32, %r11 or %r27, %r11, %r27 jmpl %r27+8, %r0 jmpl %r27+8, %r0 jmpl %r27+8, %r0 jmpl %r27+8, %r0 fdivd %f0, %f4, %f6 SECTION .MyTEXT_2 TEXT_VA = 0x00000000e1200000 attr_text { Name = .MyTEXT_2, RA = 0x00000000e1200000, PA = ra2pa(0x00000000e1200000,0), part_0_ctx_zero_tsb_config_1, part_0_ctx_nonzero_tsb_config_1, TTE_G = 1, TTE_Context = PCONTEXT, TTE_V = 1, TTE_Size = 5, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 1, TTE_P = 1, TTE_W = 1 } .text nuff_said_2: fdivd %f0, %f4, %f4 mov HIGHVA_HIGHNUM, %r11 sllx %r11, 32, %r11 or %r27, %r11, %r27 jmpl %r27+8, %r0 jmpl %r27+8, %r0 jmpl %r27+8, %r0 jmpl %r27+8, %r0 fdivs %f0, %f4, %f4 SECTION .MyTEXT_3 TEXT_VA = 0x00000000e1a00000 attr_text { Name = .MyTEXT_3, RA = 0x00000000e1a00000, PA = ra2pa(0x00000000e1a00000,0), part_0_ctx_zero_tsb_config_1, part_0_ctx_nonzero_tsb_config_1, TTE_G = 1, TTE_Context = PCONTEXT, TTE_V = 1, TTE_Size = 1, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 1, TTE_E = 1, TTE_P = 1, TTE_W = 1 } .text nuff_said_3: fdivs %f0, %f4, %f6 mov HIGHVA_HIGHNUM, %r11 sllx %r11, 32, %r11 or %r27, %r11, %r27 jmpl %r27+8, %r0 jmpl %r27+8, %r0 jmpl %r27+8, %r0 jmpl %r27+8, %r0 fdivd %f0, %f4, %f4 SECTION .VaHOLE_0 TEXT_VA = 0x00007fffffffe000 attr_text { Name = .VaHOLE_0, RA = 0x00000000ffffe000, PA = ra2pa(0x00000000ffffe000,0), part_0_ctx_zero_tsb_config_1, part_0_ctx_nonzero_tsb_config_1, TTE_G = 1, TTE_Context = PCONTEXT, TTE_V = 1, TTE_Size = 0, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 0, TTE_E = 1, TTE_P = 0, TTE_W = 1, TTE_X = 1 } .text .global vahole_target0 .text .global vahole_target1 .text .global vahole_target2 .text .global vahole_target3 nop .align 4096 nop .align 2048 nop .align 1024 nop .align 512 nop .align 256 nop .align 128 nop .align 64 nop nop .align 16 nop;nop;nop vahole_target0: nop;nop vahole_target1: nop vahole_target2: nop;nop;nop vahole_target3: nop;nop;nop SECTION .VaHOLEL_0 TEXT_VA = 0x00000000ffffe000 attr_text { Name = .VaHOLEL_0, RA = 0x00000000ffffe000, PA = ra2pa(0x00000000ffffe000,0), part_0_ctx_zero_tsb_config_0, part_0_ctx_nonzero_tsb_config_0, TTE_G = 1, TTE_Context = PCONTEXT, TTE_V = 1, TTE_Size = 3, TTE_NFO = 0, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 0, TTE_E = 1, TTE_P = 0, TTE_W = 0, TTE_X = 1, tsbonly } .text nop SECTION .ZERO_0 TEXT_VA = 0x0000000000000000 attr_text { Name = .ZERO_0, RA = 0x0000000000000000, PA = ra2pa(0x0000000000000000,0), part_0_ctx_zero_tsb_config_1, part_0_ctx_nonzero_tsb_config_1, TTE_G = 1, TTE_Context = 0x44, TTE_V = 1, TTE_Size = 0, TTE_NFO = 0, TTE_IE = 0, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 1, TTE_CV = 0, TTE_E = 1, TTE_P = 0, TTE_W = 1, TTE_X = 1 } .text mov HIGHVA_HIGHNUM, %r11 sllx %r11, 32, %r11 or %r27, %r11, %r27 jmpl %r27+8, %r0 nop nop jmpl %r27+8, %r0 nop Power_On_Reset: setx HRedmode_Reset_Handler, %g1, %g2 jmp %g2 nop .align 32 Watchdog_Reset: setx wdog_red_ext, %g1, %g2 jmp %g2 nop .align 32 External_Reset: My_External_Reset .align 32 Software_Initiated_Reset: setx Software_Reset_Handler, %g1, %g2 jmp %g2 nop .align 32 RED_Mode_Other_Reset: ! IF TL=6, shift stack by one .. rdpr %tl, %l1 cmp %l1, 6 be start_tsa_shift nop continue_red_other: mov 0x1f, %l1 stxa %l1, [%g0] ASI_LSU_CTL_REG rdpr %tt, %l1 rdhpr %htstate, %l2 and %l2, 0x4, %l2 ! If previously in hpriv mode, go to hpriv brnz,a %l2, red_goto_handler rdhpr %htba, %l2 srlx %l1, 7, %l2 ! Send priv sw traps to priv mode .. cmp %l2, 0x2 ! 0x2 = priv sw trap, 0x3=hpriv sw trap .. be,a red_goto_handler rdpr %tba, %l2 rdhpr %htba, %l2 red_goto_handler: sllx %l1, 5, %l1 add %l1, %l2, %l2 rdhpr %hpstate, %l1 jmp %l2 wrhpr %l1, 0x20, %hpstate nop wdog_red_ext: ! Shift stack down by 1 ... rdpr %tl, %l1 cmp %l1, 6 bl wdog_end start_tsa_shift: mov 0x2, %l2 tsa_shift: wrpr %l2, %tl rdpr %tt, %l3 rdpr %tpc, %l4 rdpr %tnpc, %l5 rdpr %tstate, %l6 rdhpr %htstate, %l7 dec %l2 wrpr %l2, %tl wrpr %l3, %tt wrpr %l4, %tpc wrpr %l5, %tnpc wrpr %l6, %tstate wrhpr %l7, %htstate add %l2, 2, %l2 cmp %l2, %l1 ble tsa_shift nop tsa_shift_done: dec %l1 wrpr %l1, %tl wdog_end: ! If TT != 2, then goto trap handler rdpr %tt, %l1 cmp %l1, 0x2 bne continue_red_other nop ! else done mov 0x1f, %l1 stxa %l1, [%g0] ASI_LSU_CTL_REG done SECTION .VaHOLE_PA_0 TEXT_VA = 0x000000ffffffe000 attr_text { Name = .VAHOLE_PA_0, hypervisor } nop .align 4096 nop .align 2048 nop .align 1024 nop .align 512 nop .align 256 nop .align 128 nop .align 64 nop nop .align 16 nop;nop;nop nop nop jmpl %r27+8, %r0 nop nop nop jmpl %r27+8, %r0 nop SECTION .MASKEDHOLE_0 TEXT_VA = 0x0000000100000000 attr_text { Name = .MASKEDHOLE_0, RA = 0x0000000000000000, PA = ra2pa(0x0000000000000000,0), part_0_ctx_zero_tsb_config_3, part_0_ctx_nonzero_tsb_config_3, TTE_G = 1, TTE_Context = 0x44, TTE_V = 1, TTE_Size = 1, TTE_NFO = 0, TTE_IE = 1, TTE_Soft2 = 0, TTE_Diag = 0, TTE_Soft = 0, TTE_L = 0, TTE_CP = 0, TTE_CV = 0, TTE_E = 0, TTE_P = 0, TTE_W = 0, TTE_X = 1, tsbonly } attr_text { Name = .MASKEDHOLE_0, hypervisor } mov HIGHVA_HIGHNUM, %r11 sllx %r11, 32, %r11 or %r27, %r11, %r27 jmpl %r27+8, %r0 nop #if 0 #endif