~ [ 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 ] ~

Diff markup

Differences between /arch/sparc/kernel/helpers.S (Architecture i386) and /arch/sparc/kernel/helpers.S (Architecture sparc)


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