summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/DxeIpl.h88
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf1
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/DxeLoad.c180
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c16
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/Ia32/ImageRead.c66
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/Ia32/VirtualMemory.c30
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/Ia32/VirtualMemory.h24
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/Ipf/DxeLoadFunc.c14
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/Ipf/ImageRead.c47
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c16
10 files changed, 380 insertions, 102 deletions
diff --git a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.h b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.h
index 498f46947d..3eac29da29 100644
--- a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.h
+++ b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.h
@@ -55,6 +55,21 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
extern BOOLEAN gInMemory;
+
+
+
+/**
+ Loads and relocates a PE/COFF image into memory.
+
+ @param FileHandle The image file handle
+ @param ImageAddress The base address of the relocated PE/COFF image
+ @param ImageSize The size of the relocated PE/COFF image
+ @param EntryPoint The entry point of the relocated PE/COFF image
+
+ @return EFI_SUCCESS The file was loaded and relocated
+ @return EFI_OUT_OF_RESOURCES There was not enough memory to load and relocate the PE/COFF file
+
+**/
EFI_STATUS
PeiLoadFile (
IN EFI_PEI_FILE_HANDLE FileHandle,
@@ -64,18 +79,54 @@ PeiLoadFile (
)
;
+
+
+/**
+ Find DxeCore driver from all First Volumes.
+
+ @param FileHandle Pointer to FFS file to search.
+
+ @return EFI_SUCESS Success to find the FFS in specificed FV
+ @return others Fail to find the FFS in specificed FV
+
+**/
EFI_STATUS
DxeIplFindDxeCore (
OUT EFI_PEI_FILE_HANDLE *FileHandle
)
;
+
+
+/**
+ This function simply retrieves the function pointer of ImageRead in
+ ImageContext structure.
+
+ @param ImageContext A pointer to the structure of
+ PE_COFF_LOADER_IMAGE_CONTEXT
+
+ @retval EFI_SUCCESS This function always return EFI_SUCCESS.
+
+**/
EFI_STATUS
GetImageReadFunction (
IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
)
;
+
+
+/**
+ Main entry point to last PEIM
+
+ @param This Entry point for DXE IPL PPI
+ @param PeiServices General purpose services available to every PEIM.
+ @param HobList Address to the Pei HOB list
+
+ @return EFI_SUCCESS DXE core was successfully loaded.
+ @return EFI_OUT_OF_RESOURCES There are not enough resources to load DXE core.
+
+**/
EFI_STATUS
EFIAPI
DxeLoadCore (
@@ -84,6 +135,20 @@ DxeLoadCore (
IN EFI_PEI_HOB_POINTERS HobList
);
+
+
+/**
+ Transfers control to DxeCore.
+
+ This function performs a CPU architecture specific operations to execute
+ the entry point of DxeCore with the parameters of HobList.
+ It also intalls EFI_END_OF_PEI_PPI to signal the end of PEI phase.
+
+ @param DxeCoreEntryPoint The entrypoint of DxeCore.
+ @param HobList The start of HobList passed to DxeCore.
+ @param EndOfPeiSignal The PPI descriptor for EFI_END_OF_PEI_PPI.
+
+**/
VOID
HandOffToDxeCore (
IN EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint,
@@ -91,12 +156,35 @@ HandOffToDxeCore (
IN EFI_PEI_PPI_DESCRIPTOR *EndOfPeiSignal
);
+
+
+/**
+ Updates the Stack HOB passed to DXE phase.
+
+ This function traverses the whole HOB list and update the stack HOB to
+ reflect the real stack that is used by DXE core.
+
+ @param BaseAddress The lower address of stack used by DxeCore.
+ @param Length The length of stack used by DxeCore.
+
+**/
VOID
UpdateStackHob (
IN EFI_PHYSICAL_ADDRESS BaseAddress,
IN UINT64 Length
);
+
+
+/**
+ Initializes the Dxe Ipl PPI
+
+ @param FfsHandle The handle of FFS file.
+ @param PeiServices General purpose services available to
+ every PEIM.
+ @return EFI_SUCESS
+
+**/
EFI_STATUS
EFIAPI
PeimInitializeDxeIpl (
diff --git a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
index 0d5a90f514..33d9bfc1f7 100644
--- a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
+++ b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
@@ -101,6 +101,7 @@
[FixedPcd.common]
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValuePeiHandoffToDxe
+
[Depex]
gEfiPeiMemoryDiscoveredPpiGuid
diff --git a/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c b/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c
index 0e0f448cb0..db9e1dee91 100644
--- a/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c
+++ b/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c
@@ -16,21 +16,97 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "DxeIpl.h"
#include <Ppi/GuidedSectionExtraction.h>
+
+
+/**
+ The ExtractSection() function processes the input section and
+ returns a pointer to the section contents. If the section being
+ extracted does not require processing (if the section
+ GuidedSectionHeader.Attributes has the
+ EFI_GUIDED_SECTION_PROCESSING_REQUIRED field cleared), then
+ OutputBuffer is just updated to point to the start of the
+ section's contents. Otherwise, *Buffer must be allocated
+ from PEI permanent memory.
+
+ @param This Indicates the
+ EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI instance.
+ Buffer containing the input GUIDed section to be
+ processed. OutputBuffer OutputBuffer is
+ allocated from PEI permanent memory and contains
+ the new section stream.
+ @param CompressionSection A pointer to the input buffer, which contains
+ the input section to be processed.
+ @param OutputBuffer A pointer to a caller-allocated buffer, whose
+ size is specified by the contents of OutputSize.
+ @param OutputSize A pointer to a caller-allocated
+ UINTN in which the size of *OutputBuffer
+ allocation is stored. If the function
+ returns anything other than EFI_SUCCESS,
+ the value of OutputSize is undefined.
+ @param AuthenticationStatus A pointer to a caller-allocated
+ UINT32 that indicates the
+ authentication status of the
+ output buffer. If the input
+ section's GuidedSectionHeader.
+ Attributes field has the
+ EFI_GUIDED_SECTION_AUTH_STATUS_VALID
+ bit as clear,
+ AuthenticationStatus must return
+ zero. These bits reflect the
+ status of the extraction
+ operation. If the function
+ returns anything other than
+ EFI_SUCCESS, the value of
+ AuthenticationStatus is
+ undefined.
+
+ @retval EFI_SUCCESS The InputSection was
+ successfully processed and the
+ section contents were returned.
+
+ @retval EFI_OUT_OF_RESOURCES The system has insufficient
+ resources to process the request.
+
+ @reteval EFI_INVALID_PARAMETER The GUID in InputSection does
+ not match this instance of the
+ GUIDed Section Extraction PPI.
+
+**/
EFI_STATUS
CustomGuidedSectionExtract (
IN CONST EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI *This,
- IN CONST VOID *InputSection,
+ IN CONST VOID *CompressionSection,
OUT VOID **OutputBuffer,
OUT UINTN *OutputSize,
OUT UINT32 *AuthenticationStatus
);
-STATIC
+
+/**
+ Decompresses a section to the output buffer.
+
+ This function lookes up the compression type field in the input section and
+ applies the appropriate compression algorithm to compress the section to a
+ callee allocated buffer.
+
+ @param This Points to this instance of the
+ EFI_PEI_DECOMPRESS_PEI PPI.
+ @param CompressionSection Points to the compressed section.
+ @param OutputBuffer Holds the returned pointer to the decompressed
+ sections.
+ @param OutputSize Holds the returned size of the decompress
+ section streams.
+
+ @retval EFI_SUCCESS The section was decompressed successfully.
+ OutputBuffer contains the resulting data and
+ OutputSize contains the resulting size.
+
+**/
EFI_STATUS
EFIAPI
Decompress (
IN CONST EFI_PEI_DECOMPRESS_PPI *This,
- IN CONST EFI_COMPRESSION_SECTION *InputSection,
+ IN CONST EFI_COMPRESSION_SECTION *CompressionSection,
OUT VOID **OutputBuffer,
OUT UINTN *OutputSize
);
@@ -79,8 +155,9 @@ static EFI_PEI_PPI_DESCRIPTOR mPpiSignal = {
@param FfsHandle The handle of FFS file.
@param PeiServices General purpose services available to
every PEIM.
- @return EFI_SUCESS
-*/
+ @return EFI_SUCESS
+
+**/
EFI_STATUS
EFIAPI
PeimInitializeDxeIpl (
@@ -117,16 +194,16 @@ PeimInitializeDxeIpl (
// Install custom extraction guid ppi
//
if (ExtractHandlerNumber > 0) {
- GuidPpi = NULL;
- GuidPpi = (EFI_PEI_PPI_DESCRIPTOR *) AllocatePool (ExtractHandlerNumber * sizeof (EFI_PEI_PPI_DESCRIPTOR));
- ASSERT (GuidPpi != NULL);
- while (ExtractHandlerNumber-- > 0) {
- GuidPpi->Flags = EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST;
- GuidPpi->Ppi = &mCustomGuidedSectionExtractionPpi;
- GuidPpi->Guid = &(ExtractHandlerGuidTable [ExtractHandlerNumber]);
- Status = PeiServicesInstallPpi (GuidPpi++);
- ASSERT_EFI_ERROR(Status);
- }
+ GuidPpi = NULL;
+ GuidPpi = (EFI_PEI_PPI_DESCRIPTOR *) AllocatePool (ExtractHandlerNumber * sizeof (EFI_PEI_PPI_DESCRIPTOR));
+ ASSERT (GuidPpi != NULL);
+ while (ExtractHandlerNumber-- > 0) {
+ GuidPpi->Flags = EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST;
+ GuidPpi->Ppi = &mCustomGuidedSectionExtractionPpi;
+ GuidPpi->Guid = &(ExtractHandlerGuidTable [ExtractHandlerNumber]);
+ Status = PeiServicesInstallPpi (GuidPpi++);
+ ASSERT_EFI_ERROR(Status);
+ }
}
} else {
ASSERT (FALSE);
@@ -151,6 +228,7 @@ PeimInitializeDxeIpl (
@return EFI_SUCCESS DXE core was successfully loaded.
@return EFI_OUT_OF_RESOURCES There are not enough resources to load DXE core.
+
**/
EFI_STATUS
EFIAPI
@@ -183,7 +261,7 @@ DxeLoadCore (
} else if (BootMode == BOOT_IN_RECOVERY_MODE) {
Status = PeiRecoverFirmware ();
if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR, "Load Recovery Capsule Failed.(Status = %r)\n", Status));
+ DEBUG ((DEBUG_ERROR, "Load Recovery Capsule Failed.(Status = %r)\n", Status));
CpuDeadLoop ();
}
@@ -266,12 +344,12 @@ DxeLoadCore (
PtrPeImage.Pe32 = (EFI_IMAGE_NT_HEADERS32 *) ((UINTN) DxeCoreAddress + ((EFI_IMAGE_DOS_HEADER *) (UINTN) DxeCoreAddress)->e_lfanew);
if (PtrPeImage.Pe32->FileHeader.Machine != IMAGE_FILE_MACHINE_IA64) {
- DEBUG ((EFI_D_INFO | EFI_D_LOAD, "Loading DXE CORE at 0x%10p EntryPoint=0x%10p\n", (VOID *)(UINTN)DxeCoreAddress, (VOID *)(UINTN)DxeCoreEntryPoint));
+ DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Loading DXE CORE at 0x%10p EntryPoint=0x%10p\n", (VOID *)(UINTN)DxeCoreAddress, (VOID *)(UINTN)DxeCoreEntryPoint));
} else {
//
// For IPF Image, the real entry point should be print.
//
- DEBUG ((EFI_D_INFO | EFI_D_LOAD, "Loading DXE CORE at 0x%10p EntryPoint=0x%10p\n", (VOID *)(UINTN)DxeCoreAddress, (VOID *)(UINTN)(*(UINT64 *)(UINTN)DxeCoreEntryPoint)));
+ DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Loading DXE CORE at 0x%10p EntryPoint=0x%10p\n", (VOID *)(UINTN)DxeCoreAddress, (VOID *)(UINTN)(*(UINT64 *)(UINTN)DxeCoreEntryPoint)));
}
DEBUG_CODE_END ();
@@ -290,6 +368,9 @@ DxeLoadCore (
return EFI_OUT_OF_RESOURCES;
}
+
+
+
/**
Find DxeCore driver from all First Volumes.
@@ -297,7 +378,8 @@ DxeLoadCore (
@return EFI_SUCESS Success to find the FFS in specificed FV
@return others Fail to find the FFS in specificed FV
- */
+
+**/
EFI_STATUS
DxeIplFindDxeCore (
OUT EFI_PEI_FILE_HANDLE *FileHandle
@@ -324,6 +406,9 @@ DxeIplFindDxeCore (
return EFI_NOT_FOUND;
}
+
+
+
/**
Loads and relocates a PE/COFF image into memory.
@@ -334,6 +419,7 @@ DxeIplFindDxeCore (
@return EFI_SUCCESS The file was loaded and relocated
@return EFI_OUT_OF_RESOURCES There was not enough memory to load and relocate the PE/COFF file
+
**/
EFI_STATUS
PeiLoadFile (
@@ -406,6 +492,9 @@ PeiLoadFile (
return EFI_SUCCESS;
}
+
+
+
/**
The ExtractSection() function processes the input section and
returns a pointer to the section contents. If the section being
@@ -422,13 +511,15 @@ PeiLoadFile (
processed. OutputBuffer OutputBuffer is
allocated from PEI permanent memory and contains
the new section stream.
-
+ @param InputSection A pointer to the input buffer, which contains
+ the input section to be processed.
+ @param OutputBuffer A pointer to a caller-allocated buffer, whose
+ size is specified by the contents of OutputSize.
@param OutputSize A pointer to a caller-allocated
UINTN in which the size of *OutputBuffer
allocation is stored. If the function
returns anything other than EFI_SUCCESS,
the value of OutputSize is undefined.
-
@param AuthenticationStatus A pointer to a caller-allocated
UINT32 that indicates the
authentication status of the
@@ -456,6 +547,7 @@ PeiLoadFile (
@reteval EFI_INVALID_PARAMETER The GUID in InputSection does
not match this instance of the
GUIDed Section Extraction PPI.
+
**/
EFI_STATUS
CustomGuidedSectionExtract (
@@ -488,7 +580,7 @@ CustomGuidedSectionExtract (
);
if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR, "GetInfo from guided section Failed - %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "GetInfo from guided section Failed - %r\n", Status));
return Status;
}
@@ -510,7 +602,7 @@ CustomGuidedSectionExtract (
if (*OutputBuffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- DEBUG ((EFI_D_INFO, "Customed Guided section Memory Size required is 0x%x and address is 0x%p\n", OutputBufferSize, *OutputBuffer));
+ DEBUG ((DEBUG_INFO, "Customed Guided section Memory Size required is 0x%x and address is 0x%p\n", OutputBufferSize, *OutputBuffer));
//
// *OutputBuffer still is one section. Adjust *OutputBuffer offset,
// skip EFI section header to make section data at page alignment.
@@ -529,7 +621,7 @@ CustomGuidedSectionExtract (
//
// Decode failed
//
- DEBUG ((EFI_D_ERROR, "Extract guided section Failed - %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "Extract guided section Failed - %r\n", Status));
return Status;
}
@@ -538,7 +630,28 @@ CustomGuidedSectionExtract (
return EFI_SUCCESS;
}
-STATIC
+
+
+/**
+ Decompresses a section to the output buffer.
+
+ This function lookes up the compression type field in the input section and
+ applies the appropriate compression algorithm to compress the section to a
+ callee allocated buffer.
+
+ @param This Points to this instance of the
+ EFI_PEI_DECOMPRESS_PEI PPI.
+ @param CompressionSection Points to the compressed section.
+ @param OutputBuffer Holds the returned pointer to the decompressed
+ sections.
+ @param OutputSize Holds the returned size of the decompress
+ section streams.
+
+ @retval EFI_SUCCESS The section was decompressed successfully.
+ OutputBuffer contains the resulting data and
+ OutputSize contains the resulting size.
+
+**/
EFI_STATUS
EFIAPI
Decompress (
@@ -583,7 +696,7 @@ Decompress (
//
// GetInfo failed
//
- DEBUG ((EFI_D_ERROR, "Decompress GetInfo Failed - %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "Decompress GetInfo Failed - %r\n", Status));
return EFI_NOT_FOUND;
}
//
@@ -617,7 +730,7 @@ Decompress (
//
// Decompress failed
//
- DEBUG ((EFI_D_ERROR, "Decompress Failed - %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "Decompress Failed - %r\n", Status));
return EFI_NOT_FOUND;
}
break;
@@ -656,6 +769,19 @@ Decompress (
return EFI_SUCCESS;
}
+
+
+
+/**
+ Updates the Stack HOB passed to DXE phase.
+
+ This function traverses the whole HOB list and update the stack HOB to
+ reflect the real stack that is used by DXE core.
+
+ @param BaseAddress The lower address of stack used by DxeCore.
+ @param Length The length of stack used by DxeCore.
+
+**/
VOID
UpdateStackHob (
IN EFI_PHYSICAL_ADDRESS BaseAddress,
diff --git a/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c b/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c
index e42b8acc36..7dfb3407b4 100644
--- a/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c
+++ b/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c
@@ -44,6 +44,22 @@ GLOBAL_REMOVE_IF_UNREFERENCED IA32_DESCRIPTOR gLidtDescriptor = {
0
};
+
+
+
+
+/**
+ Transfers control to DxeCore.
+
+ This function performs a CPU architecture specific operations to execute
+ the entry point of DxeCore with the parameters of HobList.
+ It also intalls EFI_END_OF_PEI_PPI to signal the end of PEI phase.
+
+ @param DxeCoreEntryPoint The entrypoint of DxeCore.
+ @param HobList The start of HobList passed to DxeCore.
+ @param EndOfPeiSignal The PPI descriptor for EFI_END_OF_PEI_PPI.
+
+**/
VOID
HandOffToDxeCore (
IN EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint,
diff --git a/MdeModulePkg/Core/DxeIplPeim/Ia32/ImageRead.c b/MdeModulePkg/Core/DxeIplPeim/Ia32/ImageRead.c
index b6278154d1..1a5135c4dc 100644
--- a/MdeModulePkg/Core/DxeIplPeim/Ia32/ImageRead.c
+++ b/MdeModulePkg/Core/DxeIplPeim/Ia32/ImageRead.c
@@ -14,6 +14,23 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "DxeIpl.h"
+
+
+
+
+/**
+ Support routine for the PE/COFF Loader that reads a buffer from a PE/COFF file
+
+ @param FileHandle The handle to the PE/COFF file
+ @param FileOffset The offset, in bytes, into the file to read
+ @param ReadSize The number of bytes to read from the file starting at
+ FileOffset
+ @param Buffer A pointer to the buffer to read the data into.
+
+ @retval EFI_SUCCESS ReadSize bytes of data were read into Buffer from the
+ PE/COFF file starting at FileOffset
+
+**/
EFI_STATUS
EFIAPI
PeiImageRead (
@@ -22,27 +39,6 @@ PeiImageRead (
IN OUT UINTN *ReadSize,
OUT VOID *Buffer
)
-/*++
-
-Routine Description:
-
- Support routine for the PE/COFF Loader that reads a buffer from a PE/COFF file
-
-Arguments:
-
- FileHandle - The handle to the PE/COFF file
-
- FileOffset - The offset, in bytes, into the file to read
-
- ReadSize - The number of bytes to read from the file starting at FileOffset
-
- Buffer - A pointer to the buffer to read the data into.
-
-Returns:
-
- EFI_SUCCESS - ReadSize bytes of data were read into Buffer from the PE/COFF file starting at FileOffset
-
---*/
{
UINT8 *Destination32;
UINT8 *Source32;
@@ -66,24 +62,24 @@ Returns:
return EFI_SUCCESS;
}
-EFI_STATUS
-GetImageReadFunction (
- IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
- )
-/*++
-Routine Description:
- Support routine to return the PE32 Image Reader.
- If the PeiImageRead() function is less than a page
- in legnth. If the function is more than a page the DXE IPL will crash!!!!
-Arguments:
- ImageContext - The context of the image being loaded
-Returns:
- EFI_SUCCESS - If Image function location is found
---*/
+/**
+ This function simply retrieves the function pointer of ImageRead in
+ ImageContext structure.
+
+ @param ImageContext A pointer to the structure of
+ PE_COFF_LOADER_IMAGE_CONTEXT
+
+ @retval EFI_SUCCESS This function always return EFI_SUCCESS.
+
+**/
+EFI_STATUS
+GetImageReadFunction (
+ IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
+ )
{
VOID *MemoryBuffer;
diff --git a/MdeModulePkg/Core/DxeIplPeim/Ia32/VirtualMemory.c b/MdeModulePkg/Core/DxeIplPeim/Ia32/VirtualMemory.c
index 38b242c269..25fb37ea8e 100644
--- a/MdeModulePkg/Core/DxeIplPeim/Ia32/VirtualMemory.c
+++ b/MdeModulePkg/Core/DxeIplPeim/Ia32/VirtualMemory.c
@@ -30,28 +30,26 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "VirtualMemory.h"
-UINTN
-CreateIdentityMappingPageTables (
- VOID
- )
-/*++
-Routine Description:
- Allocates and fills in the Page Directory and Page Table Entries to
- establish a 1:1 Virtual to Physical mapping.
-Arguments:
- NumberOfProcessorPhysicalAddressBits - Number of processor address bits to use.
- Limits the number of page table entries
- to the physical address space.
+/**
+ Allocates and fills in the Page Directory and Page Table Entries to
+ establish a 1:1 Virtual to Physical mapping.
-Returns:
+ @param NumberOfProcessorPhysicalAddressBits Number of processor address bits
+ to use. Limits the number of page
+ table entries to the physical
+ address space.
- EFI_SUCCESS The 1:1 Virtual to Physical identity mapping was created
+ @return EFI_SUCCESS The 1:1 Virtual to Physical identity mapping was created
---*/
+**/
+UINTN
+CreateIdentityMappingPageTables (
+ VOID
+ )
{
UINT8 PhysicalAddressBits;
EFI_PHYSICAL_ADDRESS PageAddress;
@@ -159,6 +157,6 @@ Returns:
);
}
- return (UINTN)PageMap; // FIXME
+ return (UINTN)PageMap;
}
diff --git a/MdeModulePkg/Core/DxeIplPeim/Ia32/VirtualMemory.h b/MdeModulePkg/Core/DxeIplPeim/Ia32/VirtualMemory.h
index 9e824ed280..5bb3e43786 100644
--- a/MdeModulePkg/Core/DxeIplPeim/Ia32/VirtualMemory.h
+++ b/MdeModulePkg/Core/DxeIplPeim/Ia32/VirtualMemory.h
@@ -99,6 +99,20 @@ typedef union {
#pragma pack()
+
+
+/**
+ Allocates and fills in the Page Directory and Page Table Entries to
+ establish a 1:1 Virtual to Physical mapping.
+
+ @param NumberOfProcessorPhysicalAddressBits Number of processor address bits
+ to use. Limits the number of page
+ table entries to the physical
+ address space.
+
+ @return EFI_SUCCESS The 1:1 Virtual to Physical identity mapping was created
+
+**/
UINTN
CreateIdentityMappingPageTables (
VOID
@@ -106,6 +120,9 @@ CreateIdentityMappingPageTables (
;
+
+
+
/**
Fix up the vector number in the vector code.
@@ -113,7 +130,7 @@ CreateIdentityMappingPageTables (
@param VectorBase Base address of the vector handler.
@param VectorNum Index of vector.
-
+
**/
VOID
EFIAPI
@@ -123,6 +140,9 @@ AsmVectorFixup (
);
+
+
+
/**
Get the information of vector template.
@@ -130,7 +150,7 @@ AsmVectorFixup (
@param TemplateBase Base address of the template code.
@return Size of the Template code.
-
+
**/
UINTN
EFIAPI
diff --git a/MdeModulePkg/Core/DxeIplPeim/Ipf/DxeLoadFunc.c b/MdeModulePkg/Core/DxeIplPeim/Ipf/DxeLoadFunc.c
index b27521d896..c31cba8dcf 100644
--- a/MdeModulePkg/Core/DxeIplPeim/Ipf/DxeLoadFunc.c
+++ b/MdeModulePkg/Core/DxeIplPeim/Ipf/DxeLoadFunc.c
@@ -14,6 +14,20 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "DxeIpl.h"
+
+
+/**
+ Transfers control to DxeCore.
+
+ This function performs a CPU architecture specific operations to execute
+ the entry point of DxeCore with the parameters of HobList.
+ It also intalls EFI_END_OF_PEI_PPI to signal the end of PEI phase.
+
+ @param DxeCoreEntryPoint The entrypoint of DxeCore.
+ @param HobList The start of HobList passed to DxeCore.
+ @param EndOfPeiSignal The PPI descriptor for EFI_END_OF_PEI_PPI.
+
+**/
VOID
HandOffToDxeCore (
IN EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint,
diff --git a/MdeModulePkg/Core/DxeIplPeim/Ipf/ImageRead.c b/MdeModulePkg/Core/DxeIplPeim/Ipf/ImageRead.c
index f449ecad9a..fd827248a1 100644
--- a/MdeModulePkg/Core/DxeIplPeim/Ipf/ImageRead.c
+++ b/MdeModulePkg/Core/DxeIplPeim/Ipf/ImageRead.c
@@ -14,6 +14,21 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "DxeIpl.h"
+
+
+/**
+ Support routine for the PE/COFF Loader that reads a buffer from a PE/COFF file
+
+ @param FileHandle The handle to the PE/COFF file
+ @param FileOffset The offset, in bytes, into the file to read
+ @param ReadSize The number of bytes to read from the file starting at
+ FileOffset
+ @param Buffer A pointer to the buffer to read the data into.
+
+ @retval EFI_SUCCESS ReadSize bytes of data were read into Buffer from the
+ PE/COFF file starting at FileOffset
+
+**/
EFI_STATUS
PeiImageRead (
IN VOID *FileHandle,
@@ -21,27 +36,6 @@ PeiImageRead (
IN OUT UINTN *ReadSize,
OUT VOID *Buffer
)
-/*++
-
-Routine Description:
-
- Support routine for the PE/COFF Loader that reads a buffer from a PE/COFF file
-
-Arguments:
-
- FileHandle - The handle to the PE/COFF file
-
- FileOffset - The offset, in bytes, into the file to read
-
- ReadSize - The number of bytes to read from the file starting at FileOffset
-
- Buffer - A pointer to the buffer to read the data into.
-
-Returns:
-
- EFI_SUCCESS - ReadSize bytes of data were read into Buffer from the PE/COFF file starting at FileOffset
-
---*/
{
CHAR8 *Destination8;
CHAR8 *Source8;
@@ -55,6 +49,17 @@ Returns:
return EFI_SUCCESS;
}
+
+/**
+ This function simply retrieves the function pointer of ImageRead in
+ ImageContext structure.
+
+ @param ImageContext A pointer to the structure of
+ PE_COFF_LOADER_IMAGE_CONTEXT
+
+ @retval EFI_SUCCESS This function always return EFI_SUCCESS.
+
+**/
EFI_STATUS
GetImageReadFunction (
IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
diff --git a/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c b/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c
index 5451a7c926..4fca3f6ac7 100644
--- a/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c
+++ b/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c
@@ -1,5 +1,5 @@
/** @file
- Ia32-specifc functionality for DxeLoad.
+ x64-specifc functionality for DxeLoad.
Copyright (c) 2006 - 2008, Intel Corporation. <BR>
All rights reserved. This program and the accompanying materials
@@ -14,6 +14,20 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "DxeIpl.h"
+
+
+/**
+ Transfers control to DxeCore.
+
+ This function performs a CPU architecture specific operations to execute
+ the entry point of DxeCore with the parameters of HobList.
+ It also intalls EFI_END_OF_PEI_PPI to signal the end of PEI phase.
+
+ @param DxeCoreEntryPoint The entrypoint of DxeCore.
+ @param HobList The start of HobList passed to DxeCore.
+ @param EndOfPeiSignal The PPI descriptor for EFI_END_OF_PEI_PPI.
+
+**/
VOID
HandOffToDxeCore (
IN EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint,