| 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 |