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