mirror of https://github.com/acidanthera/audk.git
1) Check in Pei/Dxe status code;
2) OemHookStatusCodeLib and SerialPortLib class and null instance; 3) Remove all referenced code from EdkModulePkg,EdkNt32Pkg. 4) Add Nt32OemHookStatusCodeLib. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1069 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
ba53dd4a1a
commit
9fbf943fc1
|
@ -1,150 +0,0 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
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
|
||||
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.
|
||||
|
||||
Module Name:
|
||||
|
||||
MonoStatusCode.c
|
||||
|
||||
Abstract:
|
||||
|
||||
PEIM to provide the status code functionality, to aid in system debug.
|
||||
It includes output to 0x80 port and/or to serial port.
|
||||
This PEIM is monolithic. Different platform should provide different library.
|
||||
|
||||
--*/
|
||||
|
||||
#include "MonoStatusCode.h"
|
||||
|
||||
//
|
||||
// Module globals
|
||||
//
|
||||
//
|
||||
EFI_PEI_PROGRESS_CODE_PPI mStatusCodePpi = { PlatformReportStatusCode };
|
||||
|
||||
EFI_PEI_PPI_DESCRIPTOR mPpiListStatusCode = {
|
||||
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
|
||||
&gEfiPeiStatusCodePpiGuid,
|
||||
&mStatusCodePpi
|
||||
};
|
||||
|
||||
//
|
||||
// Function implemenations
|
||||
//
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TranslateDxeStatusCodeToPeiStatusCode (
|
||||
IN EFI_STATUS_CODE_TYPE CodeType,
|
||||
IN EFI_STATUS_CODE_VALUE Value,
|
||||
IN UINT32 Instance,
|
||||
IN EFI_GUID * CallerId,
|
||||
IN EFI_STATUS_CODE_DATA * Data OPTIONAL
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Translate from a DXE status code interface into a PEI-callable
|
||||
interface, making the PEI the least common denominator..
|
||||
|
||||
Arguments:
|
||||
|
||||
Same as DXE ReportStatusCode RT service
|
||||
|
||||
Returns:
|
||||
|
||||
None
|
||||
|
||||
--*/
|
||||
{
|
||||
return PlatformReportStatusCode (NULL, CodeType, Value, Instance, CallerId, Data);
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
InitializeDxeReportStatusCode (
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Build a hob describing the status code listener that has been installed.
|
||||
This will be used by DXE code until a runtime status code listener is
|
||||
installed.
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - General purpose services available to every PEIM.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS if the interface could be successfully
|
||||
installed
|
||||
|
||||
--*/
|
||||
{
|
||||
VOID *Instance;
|
||||
VOID *HobData;
|
||||
|
||||
Instance = (VOID *) (UINTN) TranslateDxeStatusCodeToPeiStatusCode;
|
||||
|
||||
HobData = BuildGuidDataHob (
|
||||
&gEfiStatusCodeRuntimeProtocolGuid,
|
||||
&Instance,
|
||||
sizeof (VOID *)
|
||||
);
|
||||
|
||||
ASSERT (HobData != NULL);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
InitializeMonoStatusCode (
|
||||
IN EFI_FFS_FILE_HEADER *FfsHeader,
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Initialize the platform status codes and publish the platform status code
|
||||
PPI.
|
||||
|
||||
Arguments:
|
||||
|
||||
FfsHeader - FV this PEIM was loaded from.
|
||||
PeiServices - General purpose services available to every PEIM.
|
||||
|
||||
Returns:
|
||||
|
||||
Status - EFI_SUCCESS
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// Initialize status code listeners.
|
||||
//
|
||||
PlatformInitializeStatusCode (FfsHeader, PeiServices);
|
||||
|
||||
//
|
||||
// Publish the status code capability to other modules
|
||||
//
|
||||
Status = (*PeiServices)->InstallPpi (PeiServices, &mPpiListStatusCode);
|
||||
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
DEBUG ((EFI_D_ERROR, "\nMono Status Code PEIM Loaded\n"));
|
||||
|
||||
return ;
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
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
|
||||
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.
|
||||
|
||||
Module Name:
|
||||
|
||||
MonoStatusCode.dxs
|
||||
|
||||
Abstract:
|
||||
|
||||
Dependency expression file for monolithic Status Code PEIM.
|
||||
|
||||
--*/
|
||||
#include <AutoGen.h>
|
||||
#include <PeimDepex.h>
|
||||
|
||||
DEPENDENCY_START
|
||||
TRUE
|
||||
DEPENDENCY_END
|
||||
|
||||
|
|
@ -1,111 +0,0 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
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
|
||||
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.
|
||||
|
||||
Module Name:
|
||||
|
||||
MonoStatusCode.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Monolithic single PEIM to provide the status code functionality.
|
||||
The PEIM is a blend of libraries that correspond to the different status code
|
||||
listeners that a platform installs.
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef _MONO_STATUS_CODE_H_
|
||||
#define _MONO_STATUS_CODE_H_
|
||||
|
||||
//
|
||||
// Platform specific function Declarations. These must be implemented in a
|
||||
// subdirectory named PlatformName in a file named PlatformStatusCode.c.
|
||||
// See D845GRG\PlatformStatusCode.c for an example of a simple status code
|
||||
// implementation.
|
||||
// See Nt32\PlatformStatusCode.c for an example of a status code implementation
|
||||
// that relocates itself into memory.
|
||||
//
|
||||
//
|
||||
// This is the driver entry point and must be defined.
|
||||
//
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
InstallMonoStatusCode (
|
||||
IN EFI_FFS_FILE_HEADER *FfsHeader,
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
;
|
||||
|
||||
//
|
||||
// This is the platform function to initialize the listeners desired by the
|
||||
// platform.
|
||||
//
|
||||
VOID
|
||||
PlatformInitializeStatusCode (
|
||||
IN EFI_FFS_FILE_HEADER *FfsHeader,
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
;
|
||||
|
||||
//
|
||||
// This is the platform function that calls all of the listeners desired by the
|
||||
// platform.
|
||||
//
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PlatformReportStatusCode (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_STATUS_CODE_TYPE CodeType,
|
||||
IN EFI_STATUS_CODE_VALUE Value,
|
||||
IN UINT32 Instance,
|
||||
IN EFI_GUID * CallerId,
|
||||
IN EFI_STATUS_CODE_DATA * Data OPTIONAL
|
||||
)
|
||||
;
|
||||
|
||||
//
|
||||
// Platform independent function Declarations
|
||||
//
|
||||
//
|
||||
// Initialize the status code listeners and publish the status code PPI.
|
||||
//
|
||||
VOID
|
||||
EFIAPI
|
||||
InitializeMonoStatusCode (
|
||||
IN EFI_FFS_FILE_HEADER *FfsHeader,
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
;
|
||||
|
||||
//
|
||||
// Convert a DXE status code call into a PEI status code call.
|
||||
//
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
TranslateDxeStatusCodeToPeiStatusCode (
|
||||
IN EFI_STATUS_CODE_TYPE CodeType,
|
||||
IN EFI_STATUS_CODE_VALUE Value,
|
||||
IN UINT32 Instance,
|
||||
IN EFI_GUID * CallerId,
|
||||
IN EFI_STATUS_CODE_DATA * Data OPTIONAL
|
||||
)
|
||||
;
|
||||
|
||||
//
|
||||
// Publish a HOB that contains the listener to be used by DXE.
|
||||
//
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
InitializeDxeReportStatusCode (
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
;
|
||||
|
||||
#endif
|
|
@ -1,81 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--Copyright (c) 2006, Intel Corporation
|
||||
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
|
||||
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.-->
|
||||
<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0">
|
||||
<MsaHeader>
|
||||
<ModuleName>MonoStatusCode</ModuleName>
|
||||
<ModuleType>PEIM</ModuleType>
|
||||
<GuidValue>1501614E-0E6C-4ef4-8B8F-C276CDFB646F</GuidValue>
|
||||
<Version>1.0</Version>
|
||||
<Abstract>Mono status code driver</Abstract>
|
||||
<Description>
|
||||
PEIM to provide the status code functionality, to aid in system debug.
|
||||
It includes output to 0x80 port and/or to serial port.
|
||||
This PEIM is monolithic. Different platform should provide different library.
|
||||
</Description>
|
||||
<Copyright>Copyright (c) 2006, Intel Corporation</Copyright>
|
||||
<License>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
|
||||
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.</License>
|
||||
<Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
|
||||
</MsaHeader>
|
||||
<ModuleDefinitions>
|
||||
<SupportedArchitectures>IA32 X64 IPF EBC</SupportedArchitectures>
|
||||
<BinaryModule>false</BinaryModule>
|
||||
<OutputFileBasename>MonoStatusCode</OutputFileBasename>
|
||||
</ModuleDefinitions>
|
||||
<LibraryClassDefinitions>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||
<Keyword>DebugLib</Keyword>
|
||||
</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||
<Keyword>PeimEntryPoint</Keyword>
|
||||
</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||
<Keyword>EdkMemoryStatusCodeLib</Keyword>
|
||||
</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||
<Keyword>HobLib</Keyword>
|
||||
</LibraryClass>
|
||||
</LibraryClassDefinitions>
|
||||
<SourceFiles>
|
||||
<Filename>MonoStatusCode.dxs</Filename>
|
||||
<Filename>MonoStatusCode.h</Filename>
|
||||
<Filename>MonoStatusCode.c</Filename>
|
||||
<Filename>PlatformStatusCode.c</Filename>
|
||||
</SourceFiles>
|
||||
<PackageDependencies>
|
||||
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
<Package PackageGuid="B6EC423C-21D2-490D-85C6-DD5864EAA674"/>
|
||||
<Package PackageGuid="0fb2aa2d-10d5-40a5-a9dc-060c12a4a3f3"/>
|
||||
</PackageDependencies>
|
||||
<Protocols>
|
||||
<Protocol Usage="SOMETIMES_CONSUMED">
|
||||
<ProtocolCName>gEfiStatusCodeRuntimeProtocolGuid</ProtocolCName>
|
||||
</Protocol>
|
||||
</Protocols>
|
||||
<PPIs>
|
||||
<Ppi Usage="ALWAYS_CONSUMED">
|
||||
<PpiCName>gEfiPeiStatusCodePpiGuid</PpiCName>
|
||||
</Ppi>
|
||||
<Ppi Usage="SOMETIMES_CONSUMED">
|
||||
<PpiCName>gEfiPeiFvFileLoaderPpiGuid</PpiCName>
|
||||
</Ppi>
|
||||
</PPIs>
|
||||
<Externs>
|
||||
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
|
||||
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
|
||||
<Extern>
|
||||
<ModuleEntryPoint>InstallMonoStatusCode</ModuleEntryPoint>
|
||||
</Extern>
|
||||
</Externs>
|
||||
</ModuleSurfaceArea>
|
|
@ -1,164 +0,0 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
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
|
||||
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.
|
||||
|
||||
Module Name:
|
||||
|
||||
PlatformStatusCode.c
|
||||
|
||||
Abstract:
|
||||
|
||||
Contains NT32 specific implementations required to use status codes.
|
||||
|
||||
--*/
|
||||
|
||||
#include "MonoStatusCode.h"
|
||||
|
||||
|
||||
BOOLEAN gRunningFromMemory = FALSE;
|
||||
//
|
||||
// Platform definitions
|
||||
//
|
||||
EFI_PEI_REPORT_STATUS_CODE mSecReportStatusCode = NULL;
|
||||
|
||||
extern EFI_PEI_PROGRESS_CODE_PPI mStatusCodePpi;
|
||||
|
||||
//
|
||||
// Function implementations
|
||||
//
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PlatformReportStatusCode (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_STATUS_CODE_TYPE CodeType,
|
||||
IN EFI_STATUS_CODE_VALUE Value,
|
||||
IN UINT32 Instance,
|
||||
IN EFI_GUID * CallerId,
|
||||
IN EFI_STATUS_CODE_DATA * Data OPTIONAL
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Call all status code listeners in the MonoStatusCode.
|
||||
|
||||
Arguments:
|
||||
|
||||
Same as ReportStatusCode service
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS Always returns success.
|
||||
|
||||
--*/
|
||||
{
|
||||
if (mSecReportStatusCode != NULL) {
|
||||
mSecReportStatusCode (PeiServices, CodeType, Value, Instance, CallerId, Data);
|
||||
}
|
||||
MemoryReportStatusCode (CodeType, Value, Instance, CallerId, Data);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
VOID
|
||||
PlatformInitializeStatusCode (
|
||||
IN EFI_FFS_FILE_HEADER *FfsHeader,
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Initialize the status code listeners. This consists of locating the
|
||||
listener produced by SecMain.exe.
|
||||
|
||||
Arguments:
|
||||
|
||||
FfsHeader - FV this PEIM was loaded from.
|
||||
PeiServices - General purpose services available to every PEIM.
|
||||
|
||||
Returns:
|
||||
|
||||
None
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_PEI_PROGRESS_CODE_PPI *ReportStatusCodePpi;
|
||||
EFI_PEI_PPI_DESCRIPTOR *ReportStatusCodeDescriptor;
|
||||
|
||||
//
|
||||
// Cache the existing status code listener installed by the SEC core.
|
||||
// We should actually do a heap allocate, install a PPI, etc, but since we
|
||||
// know that we are running from a DLL, we can use global variables, and
|
||||
// directly update the status code PPI descriptor
|
||||
//
|
||||
//
|
||||
// Locate SEC status code PPI
|
||||
//
|
||||
Status = (*PeiServices)->LocatePpi (
|
||||
PeiServices,
|
||||
&gEfiPeiStatusCodePpiGuid,
|
||||
0,
|
||||
&ReportStatusCodeDescriptor,
|
||||
&ReportStatusCodePpi
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return ;
|
||||
}
|
||||
|
||||
mSecReportStatusCode = ReportStatusCodePpi->ReportStatusCode;
|
||||
ReportStatusCodeDescriptor->Ppi = &mStatusCodePpi;
|
||||
|
||||
//
|
||||
// Always initialize memory status code listener.
|
||||
//
|
||||
MemoryStatusCodeInitialize (FfsHeader, PeiServices);
|
||||
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
InstallMonoStatusCode (
|
||||
IN EFI_FFS_FILE_HEADER *FfsHeader,
|
||||
IN EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Install the PEIM. Publish the DXE callback as well.
|
||||
|
||||
Arguments:
|
||||
|
||||
FfsHeader - FV this PEIM was loaded from.
|
||||
PeiServices - General purpose services available to every PEIM.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS The function always returns success.
|
||||
|
||||
--*/
|
||||
{
|
||||
if (!gRunningFromMemory) {
|
||||
//
|
||||
// First pass, running from flash, initialize everything
|
||||
//
|
||||
InitializeMonoStatusCode (FfsHeader, PeiServices);
|
||||
} else {
|
||||
//
|
||||
// Second pass, running from memory, initialize memory listener and
|
||||
// publish the DXE listener in a HOB.
|
||||
//
|
||||
MemoryStatusCodeInitialize (FfsHeader, PeiServices);
|
||||
InitializeDxeReportStatusCode (PeiServices);
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
Loading…
Reference in New Issue