~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/sparc/kernel/helpers.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2         .align  32
  3         .globl  __flushw_user
  4         .type   __flushw_user,#function
  5 __flushw_user:
  6         rdpr    %otherwin, %g1
  7         brz,pn  %g1, 2f
  8          clr    %g2
  9 1:      save    %sp, -128, %sp
 10         rdpr    %otherwin, %g1
 11         brnz,pt %g1, 1b
 12          add    %g2, 1, %g2
 13 1:      sub     %g2, 1, %g2
 14         brnz,pt %g2, 1b
 15          restore %g0, %g0, %g0
 16 2:      retl
 17          nop
 18         .size   __flushw_user,.-__flushw_user
 19 EXPORT_SYMBOL(__flushw_user)
 20 
 21         /* Flush %fp and %i7 to the stack for all register
 22          * windows active inside of the cpu.  This allows
 23          * show_stack_trace() to avoid using an expensive
 24          * 'flushw'.
 25          */
 26         .globl          stack_trace_flush
 27         .type           stack_trace_flush,#function
 28 stack_trace_flush:
 29         rdpr            %pstate, %o0
 30         wrpr            %o0, PSTATE_IE, %pstate
 31 
 32         rdpr            %cwp, %g1
 33         rdpr            %canrestore, %g2
 34         sub             %g1, 1, %g3
 35 
 36 1:      brz,pn          %g2, 2f
 37          sub            %g2, 1, %g2
 38         wrpr            %g3, %cwp
 39         stx             %fp, [%sp + STACK_BIAS + RW_V9_I6]
 40         stx             %i7, [%sp + STACK_BIAS + RW_V9_I7]
 41         ba,pt           %xcc, 1b
 42          sub            %g3, 1, %g3
 43 
 44 2:      wrpr            %g1, %cwp
 45         wrpr            %o0, %pstate
 46 
 47         retl
 48          nop
 49         .size           stack_trace_flush,.-stack_trace_flush
 50 
 51 #ifdef CONFIG_SMP
 52         .globl          hard_smp_processor_id
 53         .type           hard_smp_processor_id,#function
 54 hard_smp_processor_id:
 55 #endif
 56         .globl          real_hard_smp_processor_id
 57         .type           real_hard_smp_processor_id,#function
 58 real_hard_smp_processor_id:
 59         __GET_CPUID(%o0)
 60         retl
 61          nop
 62 #ifdef CONFIG_SMP
 63         .size           hard_smp_processor_id,.-hard_smp_processor_id
 64 #endif
 65         .size           real_hard_smp_processor_id,.-real_hard_smp_processor_id
 66 EXPORT_SYMBOL_GPL(real_hard_smp_processor_id)

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php