root/arch/sparc/kernel/utrap.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0 */
   2         .globl          utrap_trap
   3         .type           utrap_trap,#function
   4 utrap_trap:             /* %g3=handler,%g4=level */
   5         TRAP_LOAD_THREAD_REG(%g6, %g1)
   6         ldx             [%g6 + TI_UTRAPS], %g1
   7         brnz,pt         %g1, invoke_utrap
   8          nop
   9 
  10         ba,pt           %xcc, etrap
  11          rd             %pc, %g7
  12         mov             %l4, %o1
  13         call            bad_trap
  14          add            %sp, PTREGS_OFF, %o0
  15         ba,a,pt         %xcc, rtrap
  16 
  17 invoke_utrap:
  18         sllx            %g3, 3, %g3
  19         ldx             [%g1 + %g3], %g1
  20         save            %sp, -128, %sp
  21         rdpr            %tstate, %l6
  22         rdpr            %cwp, %l7
  23         andn            %l6, TSTATE_CWP, %l6
  24         wrpr            %l6, %l7, %tstate
  25         rdpr            %tpc, %l6
  26         rdpr            %tnpc, %l7
  27         wrpr            %g1, 0, %tnpc
  28         done
  29         .size           utrap_trap,.-utrap_trap

/* [<][>][^][v][top][bottom][index][help] */