[ARM] 5613/1: implement CALLER_ADDRESSx
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Tue, 21 Jul 2009 08:56:27 +0000 (09:56 +0100)
committerMatt Sealey <matt@genesi-usa.com>
Sat, 22 Jan 2011 04:15:08 +0000 (22:15 -0600)
commita85f67d5e72aeadbfb1d487add0dd2e660dbbbdb
treee2aa736018e1aef842494f86ab53773be62f71a2
parent6f7f785421af7a041b26424a268c105a67aef2f5
[ARM] 5613/1: implement CALLER_ADDRESSx

From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

As __builtin_return_address(n) doesn't work for ARM with n > 0, the
kernel needs its own implementation.

This fixes many warnings saying:

warning: unsupported argument to '__builtin_return_address'

The new methods and walk_stackframe must not be instrumented because
CALLER_ADDRESSx is used in the various tracers and tracing the tracer is
a bad idea.

What's currently missing is an implementation using unwind tables.  This
is not fatal though, it's just that the tracers don't get enough
information to be really useful.

Note that if both ARM_UNWIND and FRAME_POINTER are enabled,
walk_stackframe uses unwind information.  So in this case the same
implementation is used as when FRAME_POINTER is disabled.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/include/asm/ftrace.h
arch/arm/kernel/Makefile
arch/arm/kernel/return_address.c [new file with mode: 0644]
arch/arm/kernel/stacktrace.c