diff options
author | mdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524> | 2006-11-29 03:03:20 +0000 |
---|---|---|
committer | mdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524> | 2006-11-29 03:03:20 +0000 |
commit | 8572fea91ce555d84e845c63c923e468ce12a1a4 (patch) | |
tree | b52217d77c9e7f1411b746b58af82684c8700032 | |
parent | b32a39b3287e8f03b7701619e140f814a0a61a48 (diff) | |
download | edk2-platforms-8572fea91ce555d84e845c63c923e468ce12a1a4.tar.xz |
1) Make a slightly better work around for the EdkDxeSalLib by removing constructor from MSA and calling constructor from library functions.
2) Fix pointer bug in the EdkUefiRuntimeLibrary in the event creation
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2034 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r-- | EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa | 3 | ||||
-rw-r--r-- | EdkModulePkg/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c | 14 | ||||
-rw-r--r-- | EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c | 2 |
3 files changed, 12 insertions, 7 deletions
diff --git a/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa b/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa index 42a846d7c2..a7a6214a30 100644 --- a/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa +++ b/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa @@ -55,9 +55,6 @@ <Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
<Extern>
- <Constructor>DxeSalLibConstruct</Constructor>
- </Extern>
- <Extern>
<SetVirtualAddressMapCallBack>DxeSalVirtualNotifyEvent</SetVirtualAddressMapCallBack>
</Extern>
</Externs>
diff --git a/EdkModulePkg/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c b/EdkModulePkg/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c index 2e0daeb89e..706dda2873 100644 --- a/EdkModulePkg/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c +++ b/EdkModulePkg/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c @@ -19,20 +19,26 @@ Abstract: #include <Ipf/IpfDefines.h>
-
+BOOLEAN mLibraryInitialized = FALSE;
STATIC EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *mEsalBootService;
STATIC EFI_PLABEL mPlabel;
EFI_STATUS
EFIAPI
DxeSalLibConstruct (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
+// IN EFI_HANDLE ImageHandle,
+// IN EFI_SYSTEM_TABLE *SystemTable
+ VOID
)
{
EFI_PLABEL *Plabel;
EFI_STATUS Status;
+ if (mLibraryInitialized == TRUE) {
+ return EFI_SUCCESS;
+ }
+ mLibraryInitialized = TRUE;
+
//
// The protocol contains a function pointer, which is an indirect procedure call.
// An indirect procedure call goes through a plabel, and pointer to a function is
@@ -109,6 +115,7 @@ Returns: --*/
{
+ DxeSalLibConstruct ();
return mEsalBootService->AddExtendedSalProc (
mEsalBootService,
ClassGuid,
@@ -217,6 +224,7 @@ Returns: SAL_RETURN_REGS ReturnReg;
SAL_EXTENDED_SAL_PROC EsalProc;
+ DxeSalLibConstruct ();
ReturnReg = GetEsalEntryPoint ();
if (ReturnReg.Status != EFI_SAL_SUCCESS) {
return ReturnReg;
diff --git a/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c b/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c index 3e9554721a..00f557aa41 100644 --- a/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c +++ b/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c @@ -159,7 +159,7 @@ Returns: EFI_TPL_NOTIFY,
RuntimeLibVirtualNotifyEvent,
NULL,
- mEfiVirtualNotifyEvent
+ &mEfiVirtualNotifyEvent
);
ASSERT_EFI_ERROR (Status);
|