]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Dxe/imem.h
Check in DxeCore for Nt32 platform. Currently, it does not follow PI/UEFI2.1.
[mirror_edk2.git] / MdeModulePkg / Core / Dxe / imem.h
diff --git a/MdeModulePkg/Core/Dxe/imem.h b/MdeModulePkg/Core/Dxe/imem.h
new file mode 100644 (file)
index 0000000..3337700
--- /dev/null
@@ -0,0 +1,227 @@
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation                                                         \r
+All rights reserved. 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
+                                                                                          \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+Module Name:\r
+\r
+  imem.h\r
+\r
+Abstract:\r
+\r
+  Head file to imem.h\r
+\r
+\r
+Revision History\r
+\r
+--*/\r
+\r
+#ifndef _IMEM_H_\r
+#define _IMEM_H_\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
+#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
+\r
+//\r
+// MEMORY_MAP_ENTRY\r
+//\r
+\r
+#define MEMORY_MAP_SIGNATURE   EFI_SIGNATURE_32('m','m','a','p')\r
+typedef struct {\r
+  UINTN           Signature;\r
+  LIST_ENTRY      Link;\r
+  BOOLEAN         FromPages;\r
+\r
+  EFI_MEMORY_TYPE Type;\r
+  UINT64          Start;\r
+  UINT64          End;\r
+\r
+  UINT64          VirtualStart;\r
+  UINT64          Attribute;\r
+} MEMORY_MAP;\r
+\r
+//\r
+// Internal prototypes\r
+//\r
+\r
+VOID *\r
+CoreAllocatePoolPages (\r
+  IN EFI_MEMORY_TYPE   PoolType,\r
+  IN UINTN             NumberOfPages,\r
+  IN UINTN             Alignment\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Internal function.  Used by the pool functions to allocate pages\r
+  to back pool allocation requests.\r
+\r
+Arguments:\r
+\r
+  PoolType      - The type of memory for the new pool pages\r
+\r
+  NumberOfPages - No of pages to allocate\r
+  \r
+  Alignment     - Bits to align.\r
+\r
+Returns:\r
+\r
+  The allocated memory, or NULL\r
+\r
+--*/\r
+;\r
+\r
+\r
+VOID\r
+CoreFreePoolPages (\r
+  IN EFI_PHYSICAL_ADDRESS   Memory,\r
+  IN UINTN                  NumberOfPages\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Internal function.  Frees pool pages allocated via AllocatePoolPages ()\r
+\r
+Arguments:\r
+\r
+  Memory        - The base address to free\r
+\r
+  NumberOfPages - The number of pages to free\r
+\r
+Returns:\r
+\r
+  None\r
+\r
+--*/\r
+;\r
+\r
+\r
+VOID *\r
+CoreAllocatePoolI (\r
+  IN EFI_MEMORY_TYPE  PoolType,\r
+  IN UINTN            Size\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Internal function to allocate pool of a particular type.\r
+\r
+  Caller must have the memory lock held\r
+\r
+\r
+Arguments:\r
+\r
+  PoolType    - Type of pool to allocate\r
+\r
+  Size        - The amount of pool to allocate\r
+\r
+Returns:\r
+\r
+  The allocate pool, or NULL\r
+\r
+--*/\r
+;\r
+\r
+\r
+EFI_STATUS\r
+CoreFreePoolI (\r
+  IN VOID           *Buffer\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Internal function to free a pool entry.\r
+\r
+  Caller must have the memory lock held\r
+\r
+\r
+Arguments:\r
+\r
+  Buffer      - The allocated pool entry to free\r
+\r
+Returns:\r
+\r
+  EFI_INVALID_PARAMETER     - Buffer not valid\r
+  \r
+  EFI_SUCCESS               - Buffer successfully freed.\r
+\r
+--*/\r
+;\r
+\r
+\r
+VOID\r
+CoreAcquireMemoryLock (\r
+  VOID\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Enter critical section by gaining lock on gMemoryLock\r
+\r
+Arguments:\r
+\r
+  None\r
+\r
+Returns:\r
+\r
+  None\r
+\r
+--*/\r
+;\r
+\r
+VOID\r
+CoreReleaseMemoryLock (\r
+  VOID\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Exit critical section by releasing lock on gMemoryLock\r
+\r
+Arguments:\r
+\r
+  None\r
+\r
+Returns:\r
+\r
+  None\r
+\r
+--*/\r
+;\r
+\r
+\r
+//\r
+// Internal Global data\r
+//\r
+\r
+extern EFI_LOCK           gMemoryLock; \r
+extern LIST_ENTRY         gMemoryMap;\r
+extern MEMORY_MAP         *gMemoryLastConvert;\r
+extern LIST_ENTRY         mGcdMemorySpaceMap;\r
+#endif\r