+//\r
+// For symbol name in GNU assembly code, an extra "_" is necessary\r
+//\r
+#if __GNUC__\r
+ #if defined(linux)\r
+ #define ASM_PFX(name) name\r
+ #else\r
+ #define ASM_PFX(name) _##name\r
+ #endif \r
+#endif\r
+\r
+/**\r
+ Return the pointer to the first instruction of a function given a function pointer.\r
+ On IA32 CPU architectures, these two pointer values are the same, \r
+ so the implementation of this macro is very simple.\r
+ \r
+ @param FunctionPointer A pointer to a function.\r
+\r
+ @return The pointer to the first instruction of a function given a function pointer.\r
+ \r
+**/\r
+#define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID *)(UINTN)(FunctionPointer)\r
+\r