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 18 19 /* Flush %fp and %i7 to the stack for all register 20 * windows active inside of the cpu. This allows 21 * show_stack_trace() to avoid using an expensive 22 * 'flushw'. 23 */ 24 .globl stack_trace_flush 25 .type stack_trace_flush,#function 26stack_trace_flush: 27 rdpr %pstate, %o0 28 wrpr %o0, PSTATE_IE, %pstate 29 30 rdpr %cwp, %g1 31 rdpr %canrestore, %g2 32 sub %g1, 1, %g3 33 341: brz,pn %g2, 2f 35 sub %g2, 1, %g2 36 wrpr %g3, %cwp 37 stx %fp, [%sp + STACK_BIAS + RW_V9_I6] 38 stx %i7, [%sp + STACK_BIAS + RW_V9_I7] 39 ba,pt %xcc, 1b 40 sub %g3, 1, %g3 41 422: wrpr %g1, %cwp 43 wrpr %o0, %pstate 44 45 retl 46 nop 47 .size stack_trace_flush,.-stack_trace_flush 48 49#ifdef CONFIG_SMP 50 .globl hard_smp_processor_id 51 .type hard_smp_processor_id,#function 52hard_smp_processor_id: 53#endif 54 .globl real_hard_smp_processor_id 55 .type real_hard_smp_processor_id,#function 56real_hard_smp_processor_id: 57 __GET_CPUID(%o0) 58 retl 59 nop 60#ifdef CONFIG_SMP 61 .size hard_smp_processor_id,.-hard_smp_processor_id 62#endif 63 .size real_hard_smp_processor_id,.-real_hard_smp_processor_id 64