Dave Martin <dave.martin@xxxxxxxxxx> writes: > 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@xxxxxxxxxx> > Tested-by: Jean Pihet <j-pihet@xxxxxx> Tested-by: Kevin Hilman <khilman@xxxxxx> along with Jean's OMAP patch on: OMAP2420/n810: including basic suspend/resume test. OMAP16xx/OSK: boot test only. Kevin -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html