1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18         mov             TLB_SFSR, %g1
  19         stxa            %g0, [%g1] ASI_DMMU             ! Clear FaultValid bit
  20         membar          #Sync                           ! Synchronize stores
  21         rdpr            %pstate, %g5                    ! Move into alt-globals
  22         wrpr            %g5, PSTATE_AG|PSTATE_MG, %pstate
  23         rdpr            %tl, %g1                        ! Need a winfixup?
  24         cmp             %g1, 1                          ! Trap level >1?
  25         mov             TLB_TAG_ACCESS, %g4             ! For reload of vaddr
  26 
  27 
  28         ldxa            [%g4] ASI_DMMU, %g5             ! Put tagaccess in %g5
  29         srlx            %g5, PAGE_SHIFT, %g5
  30         sllx            %g5, PAGE_SHIFT, %g5            ! Clear context ID bits
  31         bgu,pn          %xcc, winfix_trampoline         ! Yes, perform winfixup
  32          mov            FAULT_CODE_DTLB | FAULT_CODE_WRITE, %g4
  33         ba,pt           %xcc, sparc64_realfault_common  ! Nope, normal fault
  34          nop
  35         nop
  36 
  37 
  38         nop
  39         nop
  40         nop
  41         nop
  42         nop
  43         nop
  44         nop
  45         nop
  46 
  47 
  48         nop
  49         nop
  50         nop
  51         nop
  52         nop
  53         nop
  54         nop
  55         nop