]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Dxe/DxeMain.h
MdeModulePkg DxeCore: Return memory type from internal free pool/pages
[mirror_edk2.git] / MdeModulePkg / Core / Dxe / DxeMain.h
index 31277ca3629fa31d945f5f8be7a76044842426a1..edb7ff5b9fa53c91d0bae017fca73426e8d59d6a 100644 (file)
@@ -2,7 +2,7 @@
   The internal header file includes the common header files, defines\r
   internal structure and functions used by DxeCore module.\r
 \r
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2016, 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
@@ -124,6 +124,31 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 ///\r
 #define DEPEX_STACK_SIZE_INCREMENT  0x1000\r
 \r
+#if defined (MDE_CPU_IPF)\r
+///\r
+/// For Itanium machines make the default allocations 8K aligned\r
+///\r
+#define EFI_ACPI_RUNTIME_PAGE_ALLOCATION_ALIGNMENT  (EFI_PAGE_SIZE * 2)\r
+#define DEFAULT_PAGE_ALLOCATION                     (EFI_PAGE_SIZE * 2)\r
+\r
+#elif defined (MDE_CPU_AARCH64)\r
+///\r
+/// 64-bit ARM systems allow the OS to execute with 64 KB page size,\r
+/// so for improved interoperability with the firmware, align the\r
+/// runtime regions to 64 KB as well\r
+///\r
+#define EFI_ACPI_RUNTIME_PAGE_ALLOCATION_ALIGNMENT  (SIZE_64KB)\r
+#define DEFAULT_PAGE_ALLOCATION                     (EFI_PAGE_SIZE)\r
+\r
+#else\r
+///\r
+/// For genric EFI machines make the default allocations 4K aligned\r
+///\r
+#define EFI_ACPI_RUNTIME_PAGE_ALLOCATION_ALIGNMENT  (EFI_PAGE_SIZE)\r
+#define DEFAULT_PAGE_ALLOCATION                     (EFI_PAGE_SIZE)\r
+\r
+#endif\r
+\r
 typedef struct {\r
   EFI_GUID                    *ProtocolGuid;\r
   VOID                        **Protocol;\r
@@ -1244,33 +1269,6 @@ CoreAllocatePages (
   IN OUT EFI_PHYSICAL_ADDRESS  *Memory\r
   );\r
 \r
-/**\r
-  Allocates pages from the memory map.\r
-\r
-  @param  Type                   The type of allocation to perform\r
-  @param  MemoryType             The type of memory to turn the allocated pages\r
-                                 into\r
-  @param  NumberOfPages          The number of pages to allocate\r
-  @param  Memory                 A pointer to receive the base allocated memory\r
-                                 address\r
-\r
-  @return Status. On success, Memory is filled in with the base address allocated\r
-  @retval EFI_INVALID_PARAMETER  Parameters violate checking rules defined in\r
-                                 spec.\r
-  @retval EFI_NOT_FOUND          Could not allocate pages match the requirement.\r
-  @retval EFI_OUT_OF_RESOURCES   No enough pages to allocate.\r
-  @retval EFI_SUCCESS            Pages successfully allocated.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CoreInternalAllocatePages (\r
-  IN EFI_ALLOCATE_TYPE      Type,\r
-  IN EFI_MEMORY_TYPE        MemoryType,\r
-  IN UINTN                  NumberOfPages,\r
-  IN OUT EFI_PHYSICAL_ADDRESS  *Memory\r
-  );\r
-\r
 /**\r
   Frees previous allocated pages.\r
 \r
@@ -1289,24 +1287,6 @@ CoreFreePages (
   IN UINTN                  NumberOfPages\r
   );\r
 \r
-/**\r
-  Frees previous allocated pages.\r
-\r
-  @param  Memory                 Base address of memory being freed\r
-  @param  NumberOfPages          The number of pages to free\r
-\r
-  @retval EFI_NOT_FOUND          Could not find the entry that covers the range\r
-  @retval EFI_INVALID_PARAMETER  Address not aligned\r
-  @return EFI_SUCCESS         -Pages successfully freed.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CoreInternalFreePages (\r
-  IN EFI_PHYSICAL_ADDRESS   Memory,\r
-  IN UINTN                  NumberOfPages\r
-  );\r
-\r
 /**\r
   This function returns a copy of the current memory map. The map is an array of\r
   memory descriptors, each of which describes a contiguous block of memory.\r
@@ -1410,6 +1390,7 @@ CoreFreePool (
   Frees pool.\r
 \r
   @param  Buffer                 The allocated pool entry to free\r
+  @param  PoolType               Pointer to pool type\r
 \r
   @retval EFI_INVALID_PARAMETER  Buffer is not a valid value.\r
   @retval EFI_SUCCESS            Pool successfully freed.\r
@@ -1418,7 +1399,8 @@ CoreFreePool (
 EFI_STATUS\r
 EFIAPI\r
 CoreInternalFreePool (\r
-  IN VOID        *Buffer\r
+  IN VOID               *Buffer,\r
+  OUT EFI_MEMORY_TYPE   *PoolType OPTIONAL\r
   );\r
 \r
 /**\r
@@ -2867,6 +2849,15 @@ CoreInitializePropertiesTable (
   VOID\r
   );\r
 \r
+/**\r
+  Initialize MemoryAttrubutesTable support.\r
+**/\r
+VOID\r
+EFIAPI\r
+CoreInitializeMemoryAttributesTable (\r
+  VOID\r
+  );\r
+\r
 /**\r
   Insert image record.\r
 \r