root/arch/sparc/kernel/misctrap.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifdef CONFIG_KGDB
   3         .globl          arch_kgdb_breakpoint
   4         .type           arch_kgdb_breakpoint,#function
   5 arch_kgdb_breakpoint:
   6         ta              0x72
   7         retl
   8          nop
   9         .size           arch_kgdb_breakpoint,.-arch_kgdb_breakpoint
  10 #endif
  11 
  12         .type           __do_privact,#function
  13 __do_privact:
  14         mov             TLB_SFSR, %g3
  15         stxa            %g0, [%g3] ASI_DMMU     ! Clear FaultValid bit
  16         membar          #Sync
  17         sethi           %hi(109f), %g7
  18         ba,pt           %xcc, etrap
  19 109:    or              %g7, %lo(109b), %g7
  20         call            do_privact
  21          add            %sp, PTREGS_OFF, %o0
  22         ba,a,pt         %xcc, rtrap
  23         .size           __do_privact,.-__do_privact
  24 
  25         .type           do_mna,#function
  26 do_mna:
  27         rdpr            %tl, %g3
  28         cmp             %g3, 1
  29 
  30         /* Setup %g4/%g5 now as they are used in the
  31          * winfixup code.
  32          */
  33         mov             TLB_SFSR, %g3
  34         mov             DMMU_SFAR, %g4
  35         ldxa            [%g4] ASI_DMMU, %g4
  36         ldxa            [%g3] ASI_DMMU, %g5
  37         stxa            %g0, [%g3] ASI_DMMU     ! Clear FaultValid bit
  38         membar          #Sync
  39         bgu,pn          %icc, winfix_mna
  40          rdpr           %tpc, %g3
  41 
  42 1:      sethi           %hi(109f), %g7
  43         ba,pt           %xcc, etrap
  44 109:     or             %g7, %lo(109b), %g7
  45         mov             %l4, %o1
  46         mov             %l5, %o2
  47         call            mem_address_unaligned
  48          add            %sp, PTREGS_OFF, %o0
  49         ba,a,pt         %xcc, rtrap
  50         .size           do_mna,.-do_mna
  51 
  52         .type           do_lddfmna,#function
  53 do_lddfmna:
  54         sethi           %hi(109f), %g7
  55         mov             TLB_SFSR, %g4
  56         ldxa            [%g4] ASI_DMMU, %g5
  57         stxa            %g0, [%g4] ASI_DMMU     ! Clear FaultValid bit
  58         membar          #Sync
  59         mov             DMMU_SFAR, %g4
  60         ldxa            [%g4] ASI_DMMU, %g4
  61         ba,pt           %xcc, etrap
  62 109:     or             %g7, %lo(109b), %g7
  63         mov             %l4, %o1
  64         mov             %l5, %o2
  65         call            handle_lddfmna
  66          add            %sp, PTREGS_OFF, %o0
  67         ba,a,pt         %xcc, rtrap
  68         .size           do_lddfmna,.-do_lddfmna
  69 
  70         .type           do_stdfmna,#function
  71 do_stdfmna:
  72         sethi           %hi(109f), %g7
  73         mov             TLB_SFSR, %g4
  74         ldxa            [%g4] ASI_DMMU, %g5
  75         stxa            %g0, [%g4] ASI_DMMU     ! Clear FaultValid bit
  76         membar          #Sync
  77         mov             DMMU_SFAR, %g4
  78         ldxa            [%g4] ASI_DMMU, %g4
  79         ba,pt           %xcc, etrap
  80 109:     or             %g7, %lo(109b), %g7
  81         mov             %l4, %o1
  82         mov             %l5, %o2
  83         call            handle_stdfmna
  84          add            %sp, PTREGS_OFF, %o0
  85         ba,a,pt         %xcc, rtrap
  86          nop
  87         .size           do_stdfmna,.-do_stdfmna
  88 
  89         .type           breakpoint_trap,#function
  90 breakpoint_trap:
  91         call            sparc_breakpoint
  92          add            %sp, PTREGS_OFF, %o0
  93         ba,pt           %xcc, rtrap
  94          nop
  95         .size           breakpoint_trap,.-breakpoint_trap

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