Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002     .globl      utrap_trap
0003     .type       utrap_trap,#function
0004 utrap_trap:     /* %g3=handler,%g4=level */
0005     TRAP_LOAD_THREAD_REG(%g6, %g1)
0006     ldx     [%g6 + TI_UTRAPS], %g1
0007     brnz,pt     %g1, invoke_utrap
0008      nop
0009 
0010     ba,pt       %xcc, etrap
0011      rd     %pc, %g7
0012     mov     %l4, %o1
0013         call        bad_trap
0014      add        %sp, PTREGS_OFF, %o0
0015     ba,a,pt     %xcc, rtrap
0016 
0017 invoke_utrap:
0018     sllx        %g3, 3, %g3
0019     ldx     [%g1 + %g3], %g1
0020     save        %sp, -128, %sp
0021     rdpr        %tstate, %l6
0022     rdpr        %cwp, %l7
0023     andn        %l6, TSTATE_CWP, %l6
0024     wrpr        %l6, %l7, %tstate
0025     rdpr        %tpc, %l6
0026     rdpr        %tnpc, %l7
0027     wrpr        %g1, 0, %tnpc
0028     done
0029     .size       utrap_trap,.-utrap_trap