2013-01-25 12:28:06 +01:00
|
|
|
/** @file
|
|
|
|
*
|
2013-05-10 14:34:36 +02:00
|
|
|
* Copyright (c) 2011-2013, ARM Limited. All rights reserved.
|
2013-01-25 12:28:06 +01:00
|
|
|
*
|
2014-08-19 15:29:52 +02:00
|
|
|
* 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.
|
2013-01-25 12:28:06 +01:00
|
|
|
*
|
|
|
|
**/
|
|
|
|
|
|
|
|
#ifndef _ARMPLATFORMLIB_H_
|
|
|
|
#define _ARMPLATFORMLIB_H_
|
|
|
|
|
|
|
|
//
|
|
|
|
// The package level header files this module uses
|
|
|
|
//
|
|
|
|
#include <PiPei.h>
|
|
|
|
//
|
|
|
|
// The protocols, PPI and GUID defintions for this module
|
|
|
|
//
|
|
|
|
#include <Ppi/MasterBootMode.h>
|
|
|
|
#include <Ppi/BootInRecoveryMode.h>
|
|
|
|
|
|
|
|
#include <Library/ArmLib.h>
|
|
|
|
|
2013-05-10 14:41:27 +02:00
|
|
|
/**
|
|
|
|
Return the core position from the value of its MpId register
|
|
|
|
|
|
|
|
This function returns the core position from the position 0 in the processor.
|
|
|
|
This function might be called from assembler before any stack is set.
|
|
|
|
|
|
|
|
@return Return the core position
|
|
|
|
|
|
|
|
**/
|
2013-01-25 12:28:06 +01:00
|
|
|
UINTN
|
|
|
|
ArmPlatformGetCorePosition (
|
|
|
|
IN UINTN MpId
|
|
|
|
);
|
|
|
|
|
2013-05-10 14:41:27 +02:00
|
|
|
/**
|
|
|
|
Return a non-zero value if the callee is the primary core
|
|
|
|
|
|
|
|
This function returns a non-zero value if the callee is the primary core.
|
|
|
|
The primary core is the core responsible to initialize the hardware and run UEFI.
|
|
|
|
This function might be called from assembler before any stack is set.
|
|
|
|
|
|
|
|
@return Return a non-zero value if the callee is the primary core.
|
|
|
|
|
|
|
|
**/
|
|
|
|
UINTN
|
|
|
|
ArmPlatformIsPrimaryCore (
|
|
|
|
IN UINTN MpId
|
|
|
|
);
|
|
|
|
|
2013-05-10 14:44:30 +02:00
|
|
|
/**
|
|
|
|
Return the MpId of the primary core
|
|
|
|
|
|
|
|
This function returns the MpId of the primary core.
|
|
|
|
This function might be called from assembler before any stack is set.
|
|
|
|
|
|
|
|
@return Return the MpId of the primary core
|
|
|
|
|
|
|
|
**/
|
|
|
|
UINTN
|
|
|
|
ArmPlatformGetPrimaryCoreMpId (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
2013-01-25 12:28:06 +01:00
|
|
|
/**
|
|
|
|
Return the current Boot Mode
|
|
|
|
|
|
|
|
This function returns the boot reason on the platform
|
|
|
|
|
|
|
|
@return Return the current Boot Mode of the platform
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_BOOT_MODE
|
|
|
|
ArmPlatformGetBootMode (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
2014-07-15 11:18:44 +02:00
|
|
|
/**
|
|
|
|
First platform specific function to be called in the PEI phase
|
|
|
|
|
|
|
|
This function is actually the first function called by the PrePi
|
|
|
|
or PrePeiCore modules. It allows to retrieve arguments passed to
|
|
|
|
the UEFI firmware through the CPU registers.
|
|
|
|
|
|
|
|
This function might be written into assembler as no stack are set
|
|
|
|
when the function is invoked.
|
|
|
|
|
|
|
|
**/
|
|
|
|
VOID
|
|
|
|
ArmPlatformPeiBootAction (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
2013-01-25 12:28:06 +01:00
|
|
|
/**
|
|
|
|
Initialize controllers that must setup in the normal world
|
|
|
|
|
|
|
|
This function is called by the ArmPlatformPkg/PrePi or ArmPlatformPkg/PlatformPei
|
|
|
|
in the PEI phase.
|
|
|
|
|
|
|
|
**/
|
|
|
|
RETURN_STATUS
|
|
|
|
ArmPlatformInitialize (
|
|
|
|
IN UINTN MpId
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Return the Virtual Memory Map of your platform
|
|
|
|
|
|
|
|
This Virtual Memory Map is used by MemoryInitPei Module to initialize the MMU on your platform.
|
|
|
|
|
|
|
|
@param[out] VirtualMemoryMap Array of ARM_MEMORY_REGION_DESCRIPTOR describing a Physical-to-
|
|
|
|
Virtual Memory mapping. This array must be ended by a zero-filled
|
|
|
|
entry
|
|
|
|
|
|
|
|
**/
|
|
|
|
VOID
|
|
|
|
ArmPlatformGetVirtualMemoryMap (
|
|
|
|
OUT ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Return the Platform specific PPIs
|
|
|
|
|
|
|
|
This function exposes the Platform Specific PPIs. They can be used by any PrePi modules or passed
|
|
|
|
to the PeiCore by PrePeiCore.
|
|
|
|
|
|
|
|
@param[out] PpiListSize Size in Bytes of the Platform PPI List
|
|
|
|
@param[out] PpiList Platform PPI List
|
|
|
|
|
|
|
|
**/
|
|
|
|
VOID
|
|
|
|
ArmPlatformGetPlatformPpiList (
|
|
|
|
OUT UINTN *PpiListSize,
|
|
|
|
OUT EFI_PEI_PPI_DESCRIPTOR **PpiList
|
|
|
|
);
|
|
|
|
|
|
|
|
#endif
|