linux/include/asm-sparc64
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
..
a.out-core.h aout: suppress A.OUT library support if !CONFIG_ARCH_SUPPORTS_AOUT 2008-02-08 09:22:30 -08:00
a.out.h [SPARC]: Merge asm-sparc{,64}/a.out.h 2008-02-09 22:25:50 -08:00
agp.h x86: remove flush_agp_mappings() 2008-01-30 13:34:07 +01:00
apb.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
asi.h [SPARC64]: Sun4v specific ASI defines. 2006-03-20 01:11:43 -08:00
atomic.h [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
auxio.h [SPARC64]: Get rid of fast IRQ feature. 2005-06-27 17:04:45 -07:00
auxvec.h [SPARC]: Merge include/asm-sparc{,64}/auxvec.h 2008-02-09 04:00:03 -08:00
backoff.h [SPARC64]: Fix atomic backoff limit. 2008-03-19 01:04:48 -07:00
bbc.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bitops.h forbid asm/bitops.h direct inclusion 2007-10-19 11:53:41 -07:00
bpp.h [SPARC]: Merge asm-sparc{,64}/bpp.h 2008-02-09 04:00:12 -08:00
bug.h [SPARC]: Merge asm-sparc{,64}/bug.h 2008-02-09 04:00:32 -08:00
bugs.h [SPARC]: Merge asm-sparc{,64}/bugs.h 2008-02-09 04:00:37 -08:00
byteorder.h [SPARC]: Merge asm-sparc{,64}/byteorder.h 2008-02-09 04:17:28 -08:00
cache.h [SPARC]: Merge asm-sparc{,64}/cache.h 2008-02-09 04:17:37 -08:00
cacheflush.h [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
chafsr.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
checksum.h [NET]: SPARC64 checksum annotations and cleanups. 2006-12-02 21:23:23 -08:00
chmctrl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cmt.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
compat_signal.h Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
compat.h asm-*/compat.h: fix typo in comment 2008-02-03 16:32:51 +02:00
cpudata.h [SPARC64]: Access ivector_table[] using physical addresses. 2007-10-13 21:53:15 -07:00
cputime.h [SPARC]: Merge asm-sparc{,64}/cputime.h 2008-02-09 04:17:47 -08:00
current.h [SPARC]: Merge asm-sparc{,64}/current.h 2008-02-09 04:17:54 -08:00
dcr.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dcu.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
delay.h [SPARC64]: More sensible udelay implementation. 2007-07-16 04:05:02 -07:00
device.h [SPARC]: Merge asm-sparc{,64}/device.h 2008-02-09 04:18:02 -08:00
display7seg.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
div64.h [SPARC]: Merge asm-sparc{,64}/div64.h 2008-02-09 04:18:08 -08:00
dma-mapping.h [SPARC64]: Fix OOPS in dma_sync_*_for_device() 2007-12-20 01:29:45 -08:00
dma.h [SPARC64]: Fix floppy build failure. 2007-03-05 13:22:28 -08:00
ebus.h [SPARC64] ebus: Convert to use pci_device_to_OF_node(). 2007-04-26 01:55:04 -07:00
elf.h [SPARC64]: Make use of the new fs/compat_binfmt_elf.c 2008-02-08 00:08:10 -08:00
emergency-restart.h [SPARC]: Merge asm-sparc{,64}/emergency-restart.h 2008-02-09 04:18:14 -08:00
envctrl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
errno.h [SPARC]: Merge asm-sparc{,64}/errno.h 2008-02-09 04:18:23 -08:00
estate.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fb.h [SPARC]: Merge asm-sparc{,64}/fb.h 2008-02-09 04:18:29 -08:00
fbio.h [SPARC]: Mark SBUS framebuffer ioctls as IGNORE in compat_ioctl.c 2007-07-30 00:27:36 -07:00
fcntl.h [SPARC]: Fix O_CLOEXEC values. 2007-08-03 14:24:17 -07:00
fhc.h [SPARC64]: Convert central bus layer to in-kernel PROM device tree. 2006-06-23 23:15:32 -07:00
floppy.h cleanup floppy.h 2007-10-17 08:42:55 -07:00
fpumacro.h [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
futex.h [SPARC64]: Fix linkage of enormous kernels. 2007-10-31 15:30:56 -07:00
hardirq.h [SPARC64]: Move over to GENERIC_HARDIRQS. 2006-06-20 01:23:32 -07:00
head.h [SPARC64]: Add GET_GL_GLOBAL() macro for SUN4V. 2006-03-20 01:13:18 -08:00
hvtramp.h [SPARC64]: Remove most limitations to kernel image size. 2008-03-21 17:01:38 -07:00
hw_irq.h [SPARC64]: Minor irq handling cleanups. 2006-12-17 14:06:56 -08:00
hypervisor.h [SPARC64]: Fix two kernel linear mapping setup bugs. 2007-12-13 06:13:38 -08:00
ide.h ide: add CONFIG_IDE_ARCH_OBSOLETE_INIT 2007-10-20 00:32:32 +02:00
idprom.h [SPARC]: Clean up idprom header files. 2006-03-20 01:12:08 -08:00
intr_queue.h [SPARC64]: Sun4v interrupt queue register definitions. 2006-03-20 01:11:44 -08:00
io.h [SPARC64]: Add SG merging support back into IOMMU code. 2008-02-09 03:15:36 -08:00
ioctl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ioctls.h [SPARC]: Support for new termios. 2007-10-17 19:38:10 -07:00
iommu.h [SPARC64]: IOMMU allocations using iommu-helper layer. 2008-02-09 03:15:04 -08:00
ipcbuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq_regs.h [PATCH] sparc64 pt_regs fixes 2006-10-08 12:32:35 -07:00
irq.h [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
irqflags.h [SPARC64]: Add irqtrace/stacktrace/lockdep support. 2006-12-10 02:39:09 -08:00
isa.h [SPARC64] isa: Convert to use pci_device_to_OF_node(). 2007-04-26 01:55:05 -07:00
Kbuild remove include/asm-*/ipc.h 2007-10-17 08:42:55 -07:00
kdebug.h x86: optimize page faults like all other achitectures and kill notifier cruft 2007-10-16 09:42:50 -07:00
kmap_types.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kprobes.h [SPARC64]: Add kretprobe support. 2008-02-09 03:42:22 -08:00
ldc.h [SPARC64]: Fix build regressions added by dr-cpu changes. 2007-07-16 04:04:49 -07:00
linkage.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
local.h local_t: sparc64 cleanup 2007-05-08 11:15:20 -07:00
lsu.h consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
mc146818rtc.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
mdesc.h [SPARC64]: Add basic infrastructure for MD add/remove notification. 2007-07-18 01:19:51 -07:00
mman.h [PATCH] IA64,sparc: local DoS with corrupted ELFs 2006-09-08 08:40:46 -07:00
mmu_context.h [SPARC64]: dr-cpu unconfigure support. 2007-07-16 04:05:32 -07:00
mmu.h consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
module.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mostek.h [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
msgbuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mutex.h [PATCH] mutex subsystem, add default include/asm-*/mutex.h files 2006-01-09 15:59:19 -08:00
namei.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ns87303.h [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
numnodes.h [SPARC64]: Move over to sparsemem. 2006-03-20 01:14:22 -08:00
of_device.h [SPARC]: Merge include/asm-sparc{,64}/of_device.h 2008-02-09 03:58:32 -08:00
of_platform.h [SPARC]: Remove of_platform_device_create 2008-02-09 03:49:58 -08:00
openprom.h [SPARC64]: Bump PROMINTR_MAX to 32. 2007-05-10 00:55:59 -07:00
openpromio.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
oplib.h [SPARC64]: Fix lockdep, particularly on SMP. 2007-09-16 11:51:15 -07:00
page.h CONFIG_HIGHPTE vs. sub-page page tables. 2008-02-08 09:22:42 -08:00
param.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
parport.h [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
pci.h [SPARC64]: Implement pci_resource_to_user() 2007-12-26 19:33:46 -08:00
pconf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
percpu.h SPARC64: use generic percpu 2008-01-30 23:27:58 +01:00
perfctr.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pgalloc.h CONFIG_HIGHPTE vs. sub-page page tables. 2008-02-08 09:22:42 -08:00
pgtable.h SPARC64: SPARSEMEM_VMEMMAP support 2007-10-16 09:42:51 -07:00
pil.h [SPARC64]: Send all device interrupts via one PIL. 2006-06-20 01:20:00 -07:00
poll.h Consolidate asm/poll.h 2007-05-11 08:29:34 -07:00
posix_types.h asm-*/posix_types.h: scrub __GLIBC__ 2008-02-08 09:22:34 -08:00
processor.h aout: remove unnecessary inclusions of {asm, linux}/a.out.h 2008-02-08 09:22:30 -08:00
prom.h [SPARC]: Merge include/asm-sparc{,64}/prom.h 2008-02-09 03:56:20 -08:00
psrcompat.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pstate.h consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
ptrace.h [SPARC64]: Fix sparse warnings wrt. __show_regs(). 2008-02-19 20:48:58 -08:00
reboot.h [SPARC64]: Fix sparse warnings wrt. machine_alt_power_off(). 2008-02-19 20:39:18 -08:00
reg.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
resource.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rtc.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rwsem-const.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rwsem.h [SPARC64]: Add irqtrace/stacktrace/lockdep support. 2006-12-10 02:39:09 -08:00
sbus.h [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
scatterlist.h Add CONFIG_DEBUG_SG sg validation 2007-10-22 21:20:03 +02:00
scratchpad.h [SPARC64]: Sun4v scratchpad register layout. 2006-03-20 01:11:44 -08:00
seccomp.h [SPARC64]: Add missing asm-sparc64/seccomp.h file. 2005-07-11 13:44:56 -07:00
sections.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
semaphore.h kill DECLARE_MUTEX_LOCKED 2007-10-17 08:42:47 -07:00
sembuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.h [SPARC64]: Increase command line size to 2048 like other arches. 2007-02-12 15:15:47 -08:00
sfafsr.h consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
sfp-machine.h [MATH-EMU]: Fix underflow exception reporting. 2007-08-16 22:59:49 -07:00
shmbuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
shmparam.h unexport asm/shmparam.h 2007-10-17 08:42:47 -07:00
sigcontext.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
siginfo.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
signal.h [SPARC64]: Do not include compat.h from asm-sparc64/signal.h any more. 2006-10-02 14:30:45 -07:00
smp.h remove asm/bitops.h includes 2007-10-19 11:53:41 -07:00
socket.h [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
sockios.h [NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution 2007-04-25 22:24:04 -07:00
solerrno.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sparsemem.h [SPARC64]: MAX_PHYSADDR_BITS et al. really need to be 42 bits not 41. 2007-04-26 01:55:24 -07:00
spinlock_types.h [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
spinlock.h [PATCH] Directed yield: cpu_relax variants for spinlocks and rw-locks 2006-10-01 00:39:21 -07:00
spitfire.h [SPARC64]: Remove most limitations to kernel image size. 2008-03-21 17:01:38 -07:00
sstate.h [SPARC64]: Report proper system soft state to the hypervisor. 2007-05-29 02:49:29 -07:00
stacktrace.h [SPARC64]: Make save_stack_trace() more efficient. 2008-03-24 20:06:24 -07:00
starfire.h [SPARC64]: Kill starfire_cookie from SBUS/PCI. 2006-06-29 16:37:08 -07:00
stat.h [PATCH] sparc64: Fix stat 2005-04-18 15:13:15 -07:00
statfs.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
string.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sunbpp.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
svr4.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
syscalls.h [SPARC64]: More sparse warning fixes in process.c 2008-02-19 21:25:50 -08:00
system.h [SPARC]: Add reboot_command[] extern decl to asm/system.h 2008-02-28 21:53:20 -08:00
termbits.h [SPARC]: Support for new termios. 2007-10-17 19:38:10 -07:00
termios.h [SPARC]: Support for new termios. 2007-10-17 19:38:10 -07:00
thread_info.h [SPARC64]: Eliminate NR_CPUS limitations. 2007-05-29 02:49:49 -07:00
timer.h [SPARC64]: Add clocksource/clockevents support. 2007-04-26 01:54:15 -07:00
timex.h read_current_timer() cleanups 2008-02-06 10:41:02 -08:00
tlb.h add mm argument to pte/pmd/pud/pgd_free 2008-02-05 09:44:18 -08:00
tlbflush.h remove unused flush_tlb_pgtables 2007-10-19 11:53:34 -07:00
topology.h Convert cpu_sibling_map to be a per cpu variable 2007-10-16 09:42:50 -07:00
tsb.h [SPARC64]: Fix two bugs wrt. kernel 4MB TSB. 2007-05-29 02:51:38 -07:00
ttable.h [SPARC64]: Unify timer interrupt handler. 2007-04-26 01:54:11 -07:00
types.h [PATCH] sab: consolidate kmem_bufctl_t 2005-09-05 00:05:48 -07:00
uaccess.h aout: remove unnecessary inclusions of {asm, linux}/a.out.h 2008-02-08 09:22:30 -08:00
uctx.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unaligned.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unistd.h [SPARC]: Add new timerfd syscall entries. 2008-02-06 04:12:23 -08:00
upa.h [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
user.h aout: move STACK_TOP[_MAX] to asm/processor.h 2008-02-08 09:22:29 -08:00
utrap.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vga.h [PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use 2006-06-22 15:05:58 -07:00
vio.h [SPARC64]: Use "is_power_of_2" macro for simplicity. 2007-11-07 02:24:33 -08:00
visasm.h [SPARC64]: __inline__ --> inline 2007-10-27 00:13:04 -07:00
watchdog.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xor.h [SPARC64]: Do not assume sun4v chips have load-twin/store-init support. 2007-08-08 17:33:45 -07:00