]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/X64/ProcessorBind.h
MdePkg/BaseSafeIntLib: Add SafeIntLib class and instance
[mirror_edk2.git] / MdePkg / Include / X64 / ProcessorBind.h
index 666cc8e8bd165c3eb35ad82783fd6a41932ac36d..38ef2665390fa2690d6f353bd4dc4a57c09e6e19 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Processor or Compiler specific defines and types x64 (Intel 64, AMD64).\r
 \r
-  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2017, Intel Corporation. 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
 #pragma pack()\r
 #endif\r
 \r
-#if defined(__GNUC__) && defined(__pic__)\r
+#if defined(__GNUC__) && defined(__pic__) && !defined(USING_LTO)\r
 //\r
 // Mark all symbol declarations and references as hidden, meaning they will\r
 // not be subject to symbol preemption. This allows the compiler to refer to\r
 // symbols directly using relative references rather than via the GOT, which\r
 // contains absolute symbol addresses that are subject to runtime relocation.\r
 //\r
+// The LTO linker will not emit GOT based relocations when all symbol\r
+// references can be resolved locally, and so there is no need to set the\r
+// pragma in that case (and doing so will cause other issues).\r
+//\r
 #pragma GCC visibility push (hidden)\r
 #endif\r
 \r
@@ -89,7 +93,7 @@
 #pragma warning ( disable : 4057 )\r
 \r
 //\r
-// ASSERT(FALSE) or while (TRUE) are legal constructes so supress this warning\r
+// ASSERT(FALSE) or while (TRUE) are legal constructs so suppress this warning\r
 //\r
 #pragma warning ( disable : 4127 )\r
 \r
 //\r
 #pragma warning ( disable : 4206 )\r
 \r
-#if _MSC_VER == 1800 || _MSC_VER == 1900\r
+#if _MSC_VER == 1800 || _MSC_VER == 1900 || _MSC_VER >= 1910\r
 \r
 //\r
 // Disable these warnings for VS2013.\r
 \r
 #if defined(_MSC_EXTENSIONS)\r
   //\r
-  // use Microsoft C complier dependent integer width types \r
+  // use Microsoft C compiler dependent integer width types\r
   //\r
 \r
   ///\r
@@ -262,11 +266,22 @@ typedef INT64   INTN;
 #define MAX_INTN   ((INTN)0x7FFFFFFFFFFFFFFFULL)\r
 #define MAX_UINTN  ((UINTN)0xFFFFFFFFFFFFFFFFULL)\r
 \r
+///\r
+/// Minimum legal x64 INTN value.\r
+///\r
+#define MIN_INTN   (((INTN)-9223372036854775807LL) - 1)\r
+\r
 ///\r
 /// The stack alignment required for x64\r
 ///\r
 #define CPU_STACK_ALIGNMENT   16\r
 \r
+///\r
+/// Page allocation granularity for x64\r
+///\r
+#define DEFAULT_PAGE_ALLOCATION_GRANULARITY   (0x1000)\r
+#define RUNTIME_PAGE_ALLOCATION_GRANULARITY   (0x1000)\r
+\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