summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Core/DxeIplPeim
diff options
context:
space:
mode:
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2010-02-27 17:04:12 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2010-02-27 17:04:12 +0000
commite7af83aece81c891deeda826526fffa194dc0256 (patch)
treee741867a6acbff1344a3971736e82af662ed4a77 /MdeModulePkg/Core/DxeIplPeim
parent53f32495953afac85b4c85c52dcf0595a4b1999e (diff)
downloadedk2-platforms-e7af83aece81c891deeda826526fffa194dc0256.tar.xz
1. Refine debug agent library.
2. DxeCore and DxeIpl consume debug agent library. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10119 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Core/DxeIplPeim')
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/DxeIpl.h29
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf13
-rw-r--r--MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c15
3 files changed, 33 insertions, 24 deletions
diff --git a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.h b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.h
index 1240ce6c2b..8f3538e4d1 100644
--- a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.h
+++ b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.h
@@ -2,7 +2,7 @@
Master header file for DxeIpl PEIM. All source files in this module should
include this file for common definitions.
-Copyright (c) 2006 - 2009, Intel Corporation. <BR>
+Copyright (c) 2006 - 2010, Intel Corporation. <BR>
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -45,13 +45,14 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Library/PcdLib.h>
#include <Library/S3Lib.h>
#include <Library/RecoveryLib.h>
+#include <Library/DebugAgentLib.h>
#define STACK_SIZE 0x20000
#define BSP_STORE_SIZE 0x4000
//
-// This PPI is installed to indicate the end of the PEI usage of memory
+// This PPI is installed to indicate the end of the PEI usage of memory
//
extern CONST EFI_PEI_PPI_DESCRIPTOR gEndOfPeiSignalPpi;
@@ -61,7 +62,7 @@ extern CONST EFI_PEI_PPI_DESCRIPTOR gEndOfPeiSignalPpi;
instance that contains DxeCore.
@return FileHandle of DxeCore to load DxeCore.
-
+
**/
EFI_PEI_FILE_HANDLE
DxeIplFindDxeCore (
@@ -70,13 +71,13 @@ DxeIplFindDxeCore (
/**
- Main entry point to last PEIM
-
+ 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_SUCCESS DXE core was successfully loaded.
@return EFI_OUT_OF_RESOURCES There are not enough resources to load DXE core.
**/
@@ -156,7 +157,7 @@ UpdateStackHob (
output buffer. If the input
section's GuidedSectionHeader.
Attributes field has the
- EFI_GUIDED_SECTION_AUTH_STATUS_VALID
+ EFI_GUIDED_SECTION_AUTH_STATUS_VALID
bit as clear,
AuthenticationStatus must return
zero. These bits reflect the
@@ -166,14 +167,14 @@ UpdateStackHob (
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.
-
+
@retval EFI_INVALID_PARAMETER The GUID in InputSection does
not match this instance of the
GUIDed Section Extraction PPI.
@@ -196,7 +197,7 @@ CustomGuidedSectionExtract (
This function looks 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.
@@ -204,14 +205,14 @@ CustomGuidedSectionExtract (
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
+EFIAPI
Decompress (
IN CONST EFI_PEI_DECOMPRESS_PPI *This,
IN CONST EFI_COMPRESSION_SECTION *CompressionSection,
diff --git a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
index 0fcaf44f57..c3dd5f6719 100644
--- a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
+++ b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
@@ -1,6 +1,6 @@
## @file
# Last PEIM executed in PEI phase to load DXE Core from a Firmware Volume.
-#
+#
# This module produces a special PPI named the DXE Initial Program Load (IPL)
# PPI to discover and dispatch the DXE Foundation and components that are
# needed to run the DXE Foundation.
@@ -10,10 +10,10 @@
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php
-#
+#
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
+#
##
[Defines]
@@ -72,6 +72,7 @@
BaseLib
PeimEntryPoint
DebugLib
+ DebugAgentLib
[Ppis]
gEfiDxeIplPpiGuid ## PRODUCES
@@ -96,11 +97,11 @@
gEfiPeiMemoryDiscoveredPpiGuid AND gEfiPeiLoadFilePpiGuid
#
-# [BootMode]
+# [BootMode]
# S3_RESUME ## SOMETIMES_CONSUMES
# RECOVERY ## SOMETIMES_CONSUMES
#
-#
+#
# [Hob]
# ##
# # New Stack HoB
@@ -114,4 +115,4 @@
# # BSP Stack HOB for IPF
# MEMORY_ALLOCATION ## PRODUCES
#
-#
+#
diff --git a/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c b/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c
index 7e99ac5e02..29ff8416a2 100644
--- a/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c
+++ b/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c
@@ -15,6 +15,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "DxeIpl.h"
#include "VirtualMemory.h"
+#define IDT_ENTRY_COUNT 33
+
//
// Global Descriptor Table (GDT)
//
@@ -40,7 +42,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST IA32_DESCRIPTOR gGdt = {
};
GLOBAL_REMOVE_IF_UNREFERENCED IA32_DESCRIPTOR gLidtDescriptor = {
- sizeof (X64_IDT_GATE_DESCRIPTOR) * 32 - 1,
+ sizeof (X64_IDT_GATE_DESCRIPTOR) * IDT_ENTRY_COUNT - 1,
0
};
@@ -118,13 +120,13 @@ HandOffToDxeCore (
Status = PeiServicesAllocatePages (
EfiBootServicesData,
- EFI_SIZE_TO_PAGES((SizeOfTemplate + sizeof (X64_IDT_GATE_DESCRIPTOR)) * 32),
+ EFI_SIZE_TO_PAGES((SizeOfTemplate + sizeof (X64_IDT_GATE_DESCRIPTOR)) * IDT_ENTRY_COUNT),
&VectorAddress
);
ASSERT_EFI_ERROR (Status);
- IdtTable = (X64_IDT_GATE_DESCRIPTOR *) (UINTN) (VectorAddress + SizeOfTemplate * 32);
- for (Index = 0; Index < 32; Index++) {
+ IdtTable = (X64_IDT_GATE_DESCRIPTOR *) (UINTN) (VectorAddress + SizeOfTemplate * IDT_ENTRY_COUNT);
+ for (Index = 0; Index < IDT_ENTRY_COUNT; Index++) {
IdtTable[Index].Ia32IdtEntry.Bits.GateType = 0x8e;
IdtTable[Index].Ia32IdtEntry.Bits.Reserved_0 = 0;
IdtTable[Index].Ia32IdtEntry.Bits.Selector = SYS_CODE64_SEL;
@@ -142,6 +144,11 @@ HandOffToDxeCore (
gLidtDescriptor.Base = (UINTN) IdtTable;
+ //
+ // Disable interrupt of Debug timer, since new IDT table cannot handle it.
+ //
+ SaveAndSetDebugTimerInterrupt (FALSE);
+
AsmWriteIdtr (&gLidtDescriptor);
//