]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/X64/ProcessorBind.h
MdePkg/ProcessorBind: add defines for page allocation granularity
[mirror_edk2.git] / MdePkg / Include / X64 / ProcessorBind.h
index a4aad3e524e8e52497be50b2bc1d277368687206..72cc85151cba066f1c552772a25cd45bb420e33d 100644 (file)
 #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 protected, meaning they will\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
-#pragma GCC visibility push (protected)\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
 #if defined(__INTEL_COMPILER)\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
 #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
@@ -267,6 +271,12 @@ typedef INT64   INTN;
 ///\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