]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Arm/ProcessorBind.h
MdePkg: Fix some typing errors in the header files
[mirror_edk2.git] / MdePkg / Include / Arm / ProcessorBind.h
index 5ec371b55b84f9fc258df8fb31d7aea2858203aa..a543687e57fdcf057f314cfda74c4dde56ad7e3b 100644 (file)
@@ -1,9 +1,9 @@
 /** @file\r
   Processor or Compiler specific defines and types for ARM.\r
 \r
-  Copyright (c) 2006 - 2010, 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 - 2013, 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
 #pragma pack()\r
 #endif\r
 \r
+//\r
+// RVCT does not support the __builtin_unreachable() macro\r
+//\r
+#ifdef __ARMCC_VERSION\r
+#define UNREACHABLE()\r
+#endif\r
+\r
 #if _MSC_EXTENSIONS \r
   //\r
-  // use Microsoft* C complier dependent interger width types \r
+  // use Microsoft* C compiler dependent integer width types\r
   //\r
   typedef unsigned __int64    UINT64;\r
   typedef __int64             INT64;\r
@@ -42,7 +49,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
@@ -58,7 +65,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
@@ -92,6 +99,12 @@ typedef INT32   INTN;
 ///\r
 #define MAX_ADDRESS  0xFFFFFFFF\r
 \r
+///\r
+/// Maximum legal ARM INTN and UINTN values.\r
+///\r
+#define MAX_INTN   ((INTN)0x7FFFFFFF)\r
+#define MAX_UINTN  ((UINTN)0xFFFFFFFF)\r
+\r
 ///\r
 /// The stack alignment required for ARM\r
 ///\r
@@ -104,12 +117,42 @@ typedef INT32   INTN;
 //\r
 #define EFIAPI    \r
 \r
-#if defined(__GNUC__)\r
+// When compiling with Clang, we still use GNU as for the assembler, so we still\r
+// need to define the GCC_ASM* macros.\r
+#if defined(__GNUC__) || defined(__clang__)\r
   ///\r
   /// For GNU assembly code, .global or .globl can declare global symbols.\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
@@ -124,4 +167,10 @@ typedef INT32   INTN;
 **/\r
 #define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID *)(UINTN)(FunctionPointer)\r
 \r
+#ifndef __USER_LABEL_PREFIX__\r
+#define __USER_LABEL_PREFIX__\r
 #endif\r
+\r
+#endif\r
+\r
+\r