Files
slimbootloader/BootloaderCorePkg/Library/BootloaderCoreLib/BootloaderArch.c
T

68 lines
1.2 KiB
C
Raw Normal View History

2019-12-02 15:45:02 -08:00
/** @file
Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <PiPei.h>
#include <Library/PcdLib.h>
#include <Library/BootloaderCoreLib.h>
/**
This function sets the Loader global data pointer.
@param[in] LoaderData Loader data pointer.
**/
VOID
EFIAPI
SetLoaderGlobalDataPointer (
IN LOADER_GLOBAL_DATA *LoaderData
)
{
IA32_DESCRIPTOR Idtr;
AsmReadIdtr (&Idtr);
2020-03-27 17:34:33 -07:00
(* (UINTN *) (Idtr.Base - sizeof (UINT64))) = (UINTN)LoaderData;
2019-12-02 15:45:02 -08:00
}
/**
This function gets the Loader global data pointer.
**/
LOADER_GLOBAL_DATA *
EFIAPI
GetLoaderGlobalDataPointer (
VOID
)
{
IA32_DESCRIPTOR Idtr;
AsmReadIdtr (&Idtr);
2020-03-27 17:34:33 -07:00
return (LOADER_GLOBAL_DATA *) (* (UINTN *) (Idtr.Base - sizeof (UINT64)));
2019-12-02 15:45:02 -08:00
}
2020-11-24 22:36:23 +05:30
/**
Returns the pointer to the Fsp HOB list.
If the pointer to the Fsp HOB list is NULL, then ASSERT().
@return The pointer to the Fsp HOB list.
**/
VOID *
EFIAPI
GetFspHobListPtr (
VOID
)
{
LOADER_GLOBAL_DATA *LdrGlobal;
LdrGlobal = GetLoaderGlobalDataPointer();
if (LdrGlobal == NULL) {
return NULL;
}
return LdrGlobal->FspHobList;
}