In the PrePi module, the global variables are located at the top of the stack. At the opposite of the PeiCore where the global variables are located in the middle of the stack. The top stack region is reserved for Temporary Memory. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12167 6f19259b-4bc3-4df7-8a09-765794883524
66 lines
1.7 KiB
C
Executable File
66 lines
1.7 KiB
C
Executable File
/** @file
|
|
*
|
|
* Copyright (c) 2011, ARM Limited. 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.
|
|
*
|
|
**/
|
|
|
|
#include <PiPei.h>
|
|
#include <Library/PrePiHobListPointerLib.h>
|
|
#include <Library/DebugLib.h>
|
|
#include <Library/PcdLib.h>
|
|
|
|
/**
|
|
Returns the pointer to the HOB list.
|
|
|
|
This function returns the pointer to first HOB in the list.
|
|
|
|
@return The pointer to the HOB list.
|
|
|
|
**/
|
|
VOID *
|
|
EFIAPI
|
|
PrePeiGetHobList (
|
|
VOID
|
|
)
|
|
{
|
|
return (VOID *)*(UINTN*)(PcdGet32 (PcdCPUCoresNonSecStackBase) +
|
|
PcdGet32 (PcdCPUCoresNonSecStackSize) -
|
|
PcdGet32 (PcdPeiGlobalVariableSize) +
|
|
PcdGet32 (PcdHobListPtrGlobalOffset));
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
Updates the pointer to the HOB list.
|
|
|
|
@param HobList Hob list pointer to store
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
PrePeiSetHobList (
|
|
IN VOID *HobList
|
|
)
|
|
{
|
|
UINTN* HobListPtr;
|
|
|
|
HobListPtr = (UINTN*)(PcdGet32 (PcdCPUCoresNonSecStackBase) +
|
|
PcdGet32 (PcdCPUCoresNonSecStackSize) -
|
|
PcdGet32 (PcdPeiGlobalVariableSize) +
|
|
PcdGet32 (PcdHobListPtrGlobalOffset));
|
|
|
|
*HobListPtr = (UINTN)HobList;
|
|
|
|
return EFI_SUCCESS;
|
|
}
|
|
|