]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Arm/ProcessorBind.h
Update MdePkg and EdkCompatibilityPkg INT8 definition to be typedef signed char to...
[mirror_edk2.git] / MdePkg / Include / Arm / ProcessorBind.h
index f4313c4dfefeb6157a61c432e752c596250de3ec..f5a839de0d80ca22394263b08f99db55998454e1 100644 (file)
@@ -1,10 +1,9 @@
-\r
 /** @file\r
   Processor or Compiler specific defines and types for ARM.\r
 \r
-  Copyright (c) 2006 - 2009, Intel Corporation<BR>                                                         \r
-  Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR>\r
-  All rights reserved. This program and the accompanying materials                          \r
+  Copyright (c) 2006 - 2012, 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
@@ -43,7 +42,7 @@
   typedef unsigned char       BOOLEAN;\r
   typedef unsigned char       UINT8;\r
   typedef char                CHAR8;\r
-  typedef char                INT8;\r
+  typedef signed char         INT8;\r
 #else\r
   //\r
   // Assume standard ARM alignment. \r
@@ -59,7 +58,7 @@
   typedef unsigned char       BOOLEAN;\r
   typedef unsigned char       UINT8;\r
   typedef char                CHAR8;\r
-  typedef char                INT8;\r
+  typedef signed char         INT8;\r
 #endif\r
 \r
 ///\r
@@ -111,6 +110,34 @@ typedef INT32   INTN;
   /// 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
@@ -123,6 +150,8 @@ typedef INT32   INTN;
   @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