This function allows platform to do any specific actions prior to the start the PEI phase. For instance, this function could be used by some platforms to initialize clocks that are required at the early stage of the PEI phase. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <olivier.martin@arm.com> Acked-by: Ryan Harkin <ryan.harkin@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14347 6f19259b-4bc3-4df7-8a09-765794883524
73 lines
1.8 KiB
NASM
73 lines
1.8 KiB
NASM
//
|
|
// Copyright (c) 2012-2013, 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 <AsmMacroIoLib.h>
|
|
#include <Library/ArmLib.h>
|
|
|
|
INCLUDE AsmMacroIoLib.inc
|
|
|
|
EXPORT ArmPlatformPeiBootAction
|
|
EXPORT ArmPlatformGetCorePosition
|
|
EXPORT ArmPlatformGetPrimaryCoreMpId
|
|
EXPORT ArmPlatformIsPrimaryCore
|
|
|
|
IMPORT _gPcd_FixedAtBuild_PcdArmPrimaryCore
|
|
IMPORT _gPcd_FixedAtBuild_PcdArmPrimaryCoreMask
|
|
|
|
PRESERVE8
|
|
AREA ArmPlatformNullHelper, CODE, READONLY
|
|
|
|
ArmPlatformPeiBootAction FUNCTION
|
|
bx lr
|
|
ENDFUNC
|
|
|
|
//UINTN
|
|
//ArmPlatformGetCorePosition (
|
|
// IN UINTN MpId
|
|
// );
|
|
ArmPlatformGetCorePosition FUNCTION
|
|
and r1, r0, #ARM_CORE_MASK
|
|
and r0, r0, #ARM_CLUSTER_MASK
|
|
add r0, r1, r0, LSR #7
|
|
bx lr
|
|
ENDFUNC
|
|
|
|
//UINTN
|
|
//ArmPlatformGetPrimaryCoreMpId (
|
|
// VOID
|
|
// );
|
|
ArmPlatformGetPrimaryCoreMpId FUNCTION
|
|
LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r0)
|
|
ldr r0, [r0]
|
|
bx lr
|
|
ENDFUNC
|
|
|
|
//UINTN
|
|
//ArmPlatformIsPrimaryCore (
|
|
// IN UINTN MpId
|
|
// );
|
|
ArmPlatformIsPrimaryCore FUNCTION
|
|
LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r1)
|
|
ldr r1, [r1]
|
|
and r0, r0, r1
|
|
LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCore, r1)
|
|
ldr r1, [r1]
|
|
cmp r0, r1
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
bx lr
|
|
ENDFUNC
|
|
|
|
END
|
|
|