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