-\r
/** @file\r
Processor or Compiler specific defines and types for ARM.\r
\r
- Copyright (c) 2006 - 2009, Intel Corporation \r
- Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.\r
- All rights reserved. This program and the accompanying materials \r
+ Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+ Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
+ This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
http://opensource.org/licenses/bsd-license.php \r
#define MDE_CPU_ARM\r
\r
//\r
-// Make sure we are useing the correct packing rules per EFI specification\r
+// Make sure we are using the correct packing rules per EFI specification\r
//\r
#ifndef __GNUC__\r
#pragma pack()\r
//\r
// Modifier to ensure that all protocol member functions and EFI intrinsics\r
// use the correct C calling convention. All protocol member functions and\r
-// EFI intrinsics are required to modify thier member functions with EFIAPI.\r
+// EFI intrinsics are required to modify their member functions with EFIAPI.\r
//\r
#define EFIAPI \r
\r
/// Define this macro to unify the usage.\r
///\r
#define ASM_GLOBAL .globl\r
+\r
+ #if !defined(__APPLE__)\r
+ ///\r
+ /// ARM EABI defines that the linker should not manipulate call relocations\r
+ /// (do bl/blx conversion) unless the target symbol has function type.\r
+ /// CodeSourcery 2010.09 started requiring the .type to function properly\r
+ ///\r
+ #define INTERWORK_FUNC(func__) .type ASM_PFX(func__), %function\r
+\r
+ #define GCC_ASM_EXPORT(func__) \\r
+ .global _CONCATENATE (__USER_LABEL_PREFIX__, func__) ;\\r
+ .type ASM_PFX(func__), %function \r
+\r
+ #define GCC_ASM_IMPORT(func__) \\r
+ .extern _CONCATENATE (__USER_LABEL_PREFIX__, func__)\r
+ \r
+ #else\r
+ //\r
+ // .type not supported by Apple Xcode tools \r
+ //\r
+ #define INTERWORK_FUNC(func__) \r
+\r
+ #define GCC_ASM_EXPORT(func__) \\r
+ .globl _CONCATENATE (__USER_LABEL_PREFIX__, func__) \\r
+ \r
+ #define GCC_ASM_IMPORT(name) \r
+\r
+ #endif\r
#endif\r
\r
/**\r
@return The pointer to the first instruction of a function given a function pointer.\r
\r
**/\r
-#define FUNCTION_ENTRY_POINT(FunctionPointer) (FunctionPointer)\r
+#define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID *)(UINTN)(FunctionPointer)\r
\r
#endif\r
+\r
+\r