]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/AArch64/ProcessorBind.h
CorebootPayloadPkg: Use extra braces to prevent gcc compile fail
[mirror_edk2.git] / MdePkg / Include / AArch64 / ProcessorBind.h
index 72d38eca67da5d75f46af61464a10d73b3781b68..c5fe874b1bd016de2fc634bfaaaa2ca5a3d926a1 100644 (file)
@@ -32,7 +32,7 @@
 \r
 #if _MSC_EXTENSIONS\r
   //\r
-  // use Microsoft* C complier dependent interger width types\r
+  // use Microsoft* C complier dependent integer width types \r
   //\r
   typedef unsigned __int64    UINT64;\r
   typedef __int64             INT64;\r
   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 AARCH64 alignment.\r
+  //\r
   typedef unsigned long long  UINT64;\r
   typedef long long           INT64;\r
   typedef unsigned int        UINT32;\r
@@ -58,7 +59,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
@@ -80,17 +81,23 @@ typedef INT64   INTN;
 ///\r
 /// A value of native width with the highest bit set.\r
 ///\r
-#define MAX_BIT      0x8000000000000000\r
+#define MAX_BIT     0x8000000000000000ULL\r
 \r
 ///\r
 /// A value of native width with the two highest bits set.\r
 ///\r
-#define MAX_2_BITS   0xC000000000000000\r
+#define MAX_2_BITS  0xC000000000000000ULL\r
 \r
 ///\r
 /// Maximum legal AARCH64  address\r
 ///\r
-#define MAX_ADDRESS  0xFFFFFFFFFFFFFFFF\r
+#define MAX_ADDRESS   0xFFFFFFFFFFFFFFFFULL\r
+\r
+///\r
+/// Maximum legal AArch64 INTN and UINTN values.\r
+///\r
+#define MAX_INTN   ((INTN)0x7FFFFFFFFFFFFFFFULL)\r
+#define MAX_UINTN  ((UINTN)0xFFFFFFFFFFFFFFFFULL)\r
 \r
 ///\r
 /// The stack alignment required for AARCH64\r
@@ -104,7 +111,9 @@ typedef INT64   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
@@ -132,4 +141,8 @@ typedef INT64   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