kernel_optimize_test/arch/sparc64/kernel
David S. Miller 85a7935335 [SPARC64]: Make save_stack_trace() more efficient.
Doing a 'flushw' every stack trace capture creates so much overhead
that it makes lockdep next to unusable.

We only care about the frame pointer chain and the function caller
program counters, so flush those by hand to the stack frame.

This is significantly more efficient than a 'flushw' because:

1) We only save 16 bytes per active register window to the stack.

2) This doesn't push the entire register window context of the current
   call chain out of the cpu, forcing register window fill traps as we
   return back down.

Note that we can't use 'restore' and 'save' instructions to move
around the register windows because that wouldn't work on Niagara
processors.  They optimize 'save' into a new register window by
simply clearing out the registers instead of pulling them in from
the on-chip register window backing store.

Based upon a report by Tom Callaway.

Signed-off-by: David S. Miller <davem@davemloft.net>
2008-03-24 20:06:24 -07:00
..
asm-offsets.c
audit.c
auxio.c
binfmt_aout32.c
central.c
chmc.c
compat_audit.c
cpu.c [SPARC]: Mark linux_sparc_{fpu,chips} static. 2008-02-28 21:46:59 -08:00
ds.c [SPARC64]: Use shorter list_splice_init() for brevity. 2008-03-23 22:48:29 -07:00
dtlb_miss.S
dtlb_prot.S
ebus.c
entry.S [SPARC64]: Make save_stack_trace() more efficient. 2008-03-24 20:06:24 -07:00
etrap.S
head.S [SPARC64]: Remove most limitations to kernel image size. 2008-03-21 17:01:38 -07:00
hvapi.c
hvtramp.S [SPARC64]: Fix cpu trampoline et al. mismatch warnings. 2008-02-20 22:22:16 -08:00
idprom.c
init_task.c
iommu_common.h
iommu.c [SPARC64]: make IOMMU code respect the segment boundary limits 2008-02-20 22:56:42 -08:00
irq.c
isa.c
itlb_miss.S
kprobes.c [SPARC64]: Fix sparse warnings wrt. __show_regs(). 2008-02-19 20:48:58 -08:00
ktlb.S
ldc.c
Makefile
mdesc.c [SPARC64]: Fix section mismatchs from dr_cpu_data 2008-02-24 19:47:51 -08:00
module.c
of_device.c
pci_common.c
pci_fire.c
pci_impl.h
pci_msi.c
pci_psycho.c
pci_sabre.c
pci_schizo.c
pci_sun4v_asm.S
pci_sun4v.c
pci_sun4v.h
pci.c [SPARC64]: Kill pcic_present(). 2008-02-18 16:40:10 -08:00
power.c [SPARC64]: Fix sparse warnings wrt. machine_alt_power_off(). 2008-02-19 20:39:18 -08:00
process.c [SPARC64]: exec PT_DTRACE 2008-03-23 22:50:16 -07:00
prom.c
ptrace.c
rtrap.S
sbus.c
semaphore.c
setup.c [SPARC]: Kill 'prom_palette'. 2008-02-18 15:28:16 -08:00
signal32.c
signal.c
smp.c [SPARC64]: Remove most limitations to kernel image size. 2008-03-21 17:01:38 -07:00
sparc64_ksyms.c [SPARC]: Kill 'prom_palette'. 2008-02-18 15:28:16 -08:00
sstate.c
stacktrace.c [SPARC64]: Make save_stack_trace() more efficient. 2008-03-24 20:06:24 -07:00
starfire.c
sun4v_ivec.S
sun4v_tlb_miss.S
sunos_ioctl32.c
sys32.S
sys_sparc32.c [SPARC64]: exec PT_DTRACE 2008-03-23 22:50:16 -07:00
sys_sparc.c
sys_sunos32.c
sysfs.c
systbls.S
time.c
trampoline.S [SPARC64]: Remove most limitations to kernel image size. 2008-03-21 17:01:38 -07:00
traps.c [SPARC64]: Fix sparse warnings wrt. __show_regs(). 2008-02-19 20:48:58 -08:00
tsb.S
ttable.S
una_asm.S
unaligned.c [SPARC64] arch/sparc64/kernel/unaligned.c: Use time_* macros 2008-02-17 23:24:10 -08:00
us2e_cpufreq.c
us3_cpufreq.c
vio.c
viohs.c
visemul.c
vmlinux.lds.S
winfixup.S