Root/arch/sparc/kernel/helpers.S

Source at commit 0de2b2b3be81048189a32f7a3d3ba0ba9ec817b6 created 11 years 11 months ago.
By Maarten ter Huurne, MIPS: JZ4740: Fixed value for round robin constant.
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
64

Archive Download this file



interactive