aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/pm.h
diff options
context:
space:
mode:
authorDave Martin <dave.martin@linaro.org>2011-01-26 18:34:26 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-01-27 11:48:58 +0000
commit5756e9dd0de6d5c307773f8f734c0684b3098fdd (patch)
tree4a92eded1b93fd91d2c40bc5bb5cb0405daeed79 /arch/arm/mach-omap2/pm.h
parentMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input (diff)
downloadlinux-dev-5756e9dd0de6d5c307773f8f734c0684b3098fdd.tar.xz
linux-dev-5756e9dd0de6d5c307773f8f734c0684b3098fdd.zip
ARM: 6640/1: Thumb-2: Symbol manipulation macros for function body copying
In low-level board support code, there is sometimes a need to copy a function body to another location at run-time. A straightforward call to memcpy doesn't work in Thumb-2, because bit 0 of external Thumb function symbols is set to 1, indicating that the function is Thumb. Without corrective measures, this will cause an off-by-one copy, and the copy may be called using the wrong instruction set. This patch adds an fncpy() macro to help with such copies. Particular care is needed, because C doesn't guarantee any defined behaviour when casting a function pointer to any other type. This has been observed to lead to strange optimisation side-effects when doing the arithmetic which is required in order to copy/move function bodies correctly in Thumb-2. Thanks to Russell King and Nicolas Pitre for their input on this patch. Signed-off-by: Dave Martin <dave.martin@linaro.org> Tested-by: Jean Pihet <j-pihet@ti.com> Tested-by: Tony Lindgren <tony@atomide.com> Tested-by: Kevin Hilman <khilman@ti.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-omap2/pm.h')
0 files changed, 0 insertions, 0 deletions