summaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/helpers.S
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2010-08-19 12:48:09 +0200
committerIngo Molnar <mingo@elte.hu>2010-08-19 12:48:09 +0200
commitc8710ad38900153af7a3e6762e99c062cfa46443 (patch)
treea0c0632274c4eb72f51e99a5861f71cffe65ea60 /arch/sparc/kernel/helpers.S
parent6016ee13db518ab1cd0cbf43fc2ad5712021e338 (diff)
parent86397dc3ccfc0e17b7550d05eaf15fe91f6498dd (diff)
downloadlinux-c8710ad38900153af7a3e6762e99c062cfa46443.tar.gz
linux-c8710ad38900153af7a3e6762e99c062cfa46443.tar.bz2
linux-c8710ad38900153af7a3e6762e99c062cfa46443.zip
Merge branch 'tip/perf/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/core
Diffstat (limited to 'arch/sparc/kernel/helpers.S')
-rw-r--r--arch/sparc/kernel/helpers.S75
1 files changed, 0 insertions, 75 deletions
diff --git a/arch/sparc/kernel/helpers.S b/arch/sparc/kernel/helpers.S
index 682fee06a16b..314dd0c9fc5b 100644
--- a/arch/sparc/kernel/helpers.S
+++ b/arch/sparc/kernel/helpers.S
@@ -46,81 +46,6 @@ stack_trace_flush:
nop
.size stack_trace_flush,.-stack_trace_flush
-#ifdef CONFIG_PERF_EVENTS
- .globl __perf_arch_fetch_caller_regs
- .type __perf_arch_fetch_caller_regs,#function
-__perf_arch_fetch_caller_regs:
- /* We always read the %pstate into %o5 since we will use
- * that to construct a fake %tstate to store into the regs.
- */
- rdpr %pstate, %o5
- brz,pn %o2, 50f
- mov %o2, %g7
-
- /* Turn off interrupts while we walk around the register
- * window by hand.
- */
- wrpr %o5, PSTATE_IE, %pstate
-
- /* The %canrestore tells us how many register windows are
- * still live in the chip above us, past that we have to
- * walk the frame as saved on the stack. We stash away
- * the %cwp in %g1 so we can return back to the original
- * register window.
- */
- rdpr %cwp, %g1
- rdpr %canrestore, %g2
- sub %g1, 1, %g3
-
- /* We have the skip count in %g7, if it hits zero then
- * %fp/%i7 are the registers we need. Otherwise if our
- * %canrestore count maintained in %g2 hits zero we have
- * to start traversing the stack.
- */
-10: brz,pn %g2, 4f
- sub %g2, 1, %g2
- wrpr %g3, %cwp
- subcc %g7, 1, %g7
- bne,pt %xcc, 10b
- sub %g3, 1, %g3
-
- /* We found the values we need in the cpu's register
- * windows.
- */
- mov %fp, %g3
- ba,pt %xcc, 3f
- mov %i7, %g2
-
-50: mov %fp, %g3
- ba,pt %xcc, 2f
- mov %i7, %g2
-
- /* We hit the end of the valid register windows in the
- * cpu, start traversing the stack frame.
- */
-4: mov %fp, %g3
-
-20: ldx [%g3 + STACK_BIAS + RW_V9_I7], %g2
- subcc %g7, 1, %g7
- bne,pn %xcc, 20b
- ldx [%g3 + STACK_BIAS + RW_V9_I6], %g3
-
- /* Restore the current register window position and
- * re-enable interrupts.
- */
-3: wrpr %g1, %cwp
- wrpr %o5, %pstate
-
-2: stx %g3, [%o0 + PT_V9_FP]
- sllx %o5, 8, %o5
- stx %o5, [%o0 + PT_V9_TSTATE]
- stx %g2, [%o0 + PT_V9_TPC]
- add %g2, 4, %g2
- retl
- stx %g2, [%o0 + PT_V9_TNPC]
- .size perf_arch_fetch_caller_regs,.-perf_arch_fetch_caller_regs
-#endif /* CONFIG_PERF_EVENTS */
-
#ifdef CONFIG_SMP
.globl hard_smp_processor_id
.type hard_smp_processor_id,#function