Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/sparc/kernel/helpers.S
26424 views
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
9
1: save %sp, -128, %sp
10
rdpr %otherwin, %g1
11
brnz,pt %g1, 1b
12
add %g2, 1, %g2
13
1: sub %g2, 1, %g2
14
brnz,pt %g2, 1b
15
restore %g0, %g0, %g0
16
2: retl
17
nop
18
.size __flushw_user,.-__flushw_user
19
EXPORT_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
28
stack_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
36
1: 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
44
2: 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
54
hard_smp_processor_id:
55
#endif
56
.globl real_hard_smp_processor_id
57
.type real_hard_smp_processor_id,#function
58
real_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
66
EXPORT_SYMBOL_GPL(real_hard_smp_processor_id)
67
68