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 kbuild: frv,m32r,sparc64 introduce fake asm-offsets.h file 2005-09-09 22:47:53 +02:00
audit.c [PATCH] audit signal recipients 2007-05-11 05:38:25 -04:00
auxio.c [SPARC/64]: Move of_platform_driver initialisations: arch/sparc{,64}. 2007-10-13 21:53:12 -07:00
binfmt_aout32.c aout: suppress A.OUT library support if !CONFIG_ARCH_SUPPORTS_AOUT 2008-02-08 09:22:30 -08:00
central.c [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
chmc.c [SPARC64]: Fix memory controller register access when non-SMP. 2007-12-07 01:10:14 -08:00
compat_audit.c [PATCH] add SIGNAL syscall class (v3) 2007-05-11 05:38:25 -04:00
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 [SPARC64]: More TLB/TSB handling fixes. 2006-03-20 01:13:34 -08:00
dtlb_prot.S [SPARC64]: Fix boot failures on SunBlade-150 2005-10-12 12:22:46 -07:00
ebus.c [SPARC]: Fix EBUS use of uninitialized variable. 2007-09-27 13:09:28 -07:00
entry.S [SPARC64]: Make save_stack_trace() more efficient. 2008-03-24 20:06:24 -07:00
etrap.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
head.S [SPARC64]: Remove most limitations to kernel image size. 2008-03-21 17:01:38 -07:00
hvapi.c [SPARC64]: Report proper system soft state to the hypervisor. 2007-05-29 02:49:29 -07:00
hvtramp.S [SPARC64]: Fix cpu trampoline et al. mismatch warnings. 2008-02-20 22:22:16 -08:00
idprom.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init_task.c Remove fs.h from mm.h 2007-07-29 17:09:29 -07:00
iommu_common.h [SPARC64]: IOMMU allocations using iommu-helper layer. 2008-02-09 03:15:04 -08:00
iommu.c [SPARC64]: make IOMMU code respect the segment boundary limits 2008-02-20 22:56:42 -08:00
irq.c misc: removal of final callers using fastcall 2008-02-08 09:22:31 -08:00
isa.c [SPARC64]: Add missing pci_dev_put 2007-12-05 05:37:57 -08:00
itlb_miss.S [SPARC64]: Fix _PAGE_EXEC_4U check in sun4u I-TLB miss handler. 2007-05-29 02:50:15 -07:00
kprobes.c [SPARC64]: Fix sparse warnings wrt. __show_regs(). 2008-02-19 20:48:58 -08:00
ktlb.S [SPARC64]: Fix build with SPARSEMEM_VMEMMAP disabled. 2008-01-12 21:52:16 -08:00
ldc.c [SPARC64]: Missing mdesc_release() in ldc_init(). 2007-12-05 05:37:55 -08:00
Makefile [SPARC64]: Make use of the new fs/compat_binfmt_elf.c 2008-02-08 00:08:10 -08:00
mdesc.c [SPARC64]: Fix section mismatchs from dr_cpu_data 2008-02-24 19:47:51 -08:00
module.c [SPARC]: Remove duplicate includes. 2007-11-06 21:23:11 -08:00
of_device.c [SPARC]: Remove of_platform_device_create 2008-02-09 03:49:58 -08:00
pci_common.c [SPARC64]: Check of_get_property() return in pci_determine_mem_io_space(). 2007-10-17 16:25:10 -07:00
pci_fire.c [SPARC64]: Fix of section mismatch warnings. 2008-01-21 22:34:30 -08:00
pci_impl.h [SPARC64]: Kill pci_memspace_mask. 2007-10-13 21:53:14 -07:00
pci_msi.c [SPARC64]: Stop using __do_IRQ(). 2007-10-22 02:16:45 -07:00
pci_psycho.c [SPARC64]: Fix of section mismatch warnings. 2008-01-21 22:34:30 -08:00
pci_sabre.c [SPARC64]: Fix of section mismatch warnings. 2008-01-21 22:34:30 -08:00
pci_schizo.c [SPARC64]: Fix of section mismatch warnings. 2008-01-21 22:34:30 -08:00
pci_sun4v_asm.S [SPARC64]: Add PCI MSI support on Niagara. 2007-02-10 23:50:37 -08:00
pci_sun4v.c [SPARC64]: Add SG merging support back into IOMMU code. 2008-02-09 03:15:36 -08:00
pci_sun4v.h [SPARC64]: Add PCI MSI support on Niagara. 2007-02-10 23:50:37 -08:00
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 [SPARC64]: Always register a PROM based early console. 2008-02-17 23:22:50 -08:00
ptrace.c [SPARC64]: Make use of compat_sys_ptrace() 2008-02-07 22:46:09 -08:00
rtrap.S [SPARC64]: Add irqtrace/stacktrace/lockdep support. 2006-12-10 02:39:09 -08:00
sbus.c [SPARC64]: Fix conflicts in SBUS/PCI/EBUS/ISA DMA handling. 2007-07-30 00:27:34 -07:00
semaphore.c [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
setup.c [SPARC]: Kill 'prom_palette'. 2008-02-18 15:28:16 -08:00
signal32.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
signal.c [SPARC64]: Kill bogus set_fs(KERNEL_DS) in do_rt_sigreturn(). 2007-07-17 14:37:54 -07:00
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 [SPARC64]: Report proper system soft state to the hypervisor. 2007-05-29 02:49:29 -07:00
stacktrace.c [SPARC64]: Make save_stack_trace() more efficient. 2008-03-24 20:06:24 -07:00
starfire.c [SPARC64]: Kill starfire_cookie from SBUS/PCI. 2006-06-29 16:37:08 -07:00
sun4v_ivec.S [SPARC64]: Use sun4v VIRQ interfaces as intended. 2007-10-13 21:53:16 -07:00
sun4v_tlb_miss.S [SPARC64]: Fix hypervisor TLB operation error reporting. 2008-01-17 06:26:55 -08:00
sunos_ioctl32.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
sys32.S [SPARC64]: Fix arg passing to compat_sys_ipc(). 2007-04-13 13:27:08 -07:00
sys_sparc32.c [SPARC64]: exec PT_DTRACE 2008-03-23 22:50:16 -07:00
sys_sparc.c aout: remove unnecessary inclusions of {asm, linux}/a.out.h 2008-02-08 09:22:30 -08:00
sys_sunos32.c [SPARC]: Remove duplicate includes. 2007-11-06 21:23:11 -08:00
sysfs.c [SPARC64]: More sensible udelay implementation. 2007-07-16 04:05:02 -07:00
systbls.S [SPARC64]: Make use of compat_sys_ptrace() 2008-02-07 22:46:09 -08:00
time.c read_current_timer() cleanups 2008-02-06 10:41:02 -08:00
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 [SPARC64]: store-init needs trailing membar. 2007-03-19 13:27:33 -07:00
ttable.S [SPARC64]: Unify timer interrupt handler. 2007-04-26 01:54:11 -07:00
una_asm.S [SPARC64]: Mark __ex_table section correctly. 2006-03-04 23:23:56 -08:00
unaligned.c [SPARC64] arch/sparc64/kernel/unaligned.c: Use time_* macros 2008-02-17 23:24:10 -08:00
us2e_cpufreq.c [CPUFREQ] move policy's governor initialisation out of low-level drivers into cpufreq core 2007-10-04 18:40:57 -04:00
us3_cpufreq.c [SPARC64]: kzalloc() conversion 2006-03-20 01:14:19 -08:00
vio.c [SPARC64]: Fix of section mismatch warnings. 2008-01-21 22:34:30 -08:00
viohs.c viohs: extern on function definition 2007-07-26 11:11:56 -07:00
visemul.c [SPARC64]: Call do_mathemu on illegal instruction traps too. 2006-12-10 02:39:32 -08:00
vmlinux.lds.S all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
winfixup.S [SPARC64]: Fix unaligned access winfxup handling on SUN4V. 2006-03-20 01:13:39 -08:00