| David S. Miller | 6eda3a7 | 2008-04-28 00:47:20 -0700 | [diff] [blame] | 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 | 
 | 8 | 1:	save	%sp, -128, %sp | 
 | 9 | 	rdpr	%otherwin, %g1 | 
 | 10 | 	brnz,pt	%g1, 1b | 
 | 11 | 	 add	%g2, 1, %g2 | 
 | 12 | 1:	sub	%g2, 1, %g2 | 
 | 13 | 	brnz,pt	%g2, 1b | 
 | 14 | 	 restore %g0, %g0, %g0 | 
 | 15 | 2:	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 | 
 | 26 | stack_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 |  | 
 | 34 | 1:	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 |  | 
 | 42 | 2:	wrpr		%g1, %cwp | 
 | 43 | 	wrpr		%o0, %pstate | 
 | 44 |  | 
 | 45 | 	retl | 
 | 46 | 	 nop | 
 | 47 | 	.size		stack_trace_flush,.-stack_trace_flush | 
 | 48 |  | 
| David S. Miller | 6eda3a7 | 2008-04-28 00:47:20 -0700 | [diff] [blame] | 49 | #ifdef CONFIG_SMP | 
 | 50 | 	.globl		hard_smp_processor_id | 
 | 51 | 	.type		hard_smp_processor_id,#function | 
 | 52 | hard_smp_processor_id: | 
 | 53 | #endif | 
 | 54 | 	.globl		real_hard_smp_processor_id | 
 | 55 | 	.type		real_hard_smp_processor_id,#function | 
 | 56 | real_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 |