Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/sparc/kernel/helpers.S
10817 views
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
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
64
65