diff options
author | Dave Martin <[email protected]> | 2011-01-26 18:34:26 +0100 |
---|---|---|
committer | Russell King <[email protected]> | 2011-01-27 11:48:58 +0000 |
commit | 5756e9dd0de6d5c307773f8f734c0684b3098fdd (patch) | |
tree | 4a92eded1b93fd91d2c40bc5bb5cb0405daeed79 /tools/perf/util/trace-event-scripting.c | |
parent | 6fb1b304255efc5c4c93874ac8c066272e257e28 (diff) |
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 <[email protected]>
Tested-by: Jean Pihet <[email protected]>
Tested-by: Tony Lindgren <[email protected]>
Tested-by: Kevin Hilman <[email protected]>
Signed-off-by: Russell King <[email protected]>
Diffstat (limited to 'tools/perf/util/trace-event-scripting.c')
0 files changed, 0 insertions, 0 deletions