1// 2// Copyright (c) 2011-2014, ARM Limited. All rights reserved. 3// Copyright (c) 2014, Linaro Limited. All rights reserved. 4// 5// This program and the accompanying materials 6// are licensed and made available under the terms and conditions of the BSD License 7// which accompanies this distribution. The full text of the license may be found at 8// http://opensource.org/licenses/bsd-license.php 9// 10// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12// 13 14#include <AsmMacroIoLib.h> 15#include <Base.h> 16#include <Library/ArmLib.h> 17#include <Library/PcdLib.h> 18#include <AutoGen.h> 19 20 INCLUDE AsmMacroIoLib.inc 21 22 EXPORT ArmPlatformPeiBootAction 23 EXPORT ArmPlatformIsPrimaryCore 24 EXPORT ArmPlatformGetPrimaryCoreMpId 25 EXPORT ArmPlatformGetCorePosition 26 EXPORT ArmGetPhysAddrTop 27 28 IMPORT _gPcd_FixedAtBuild_PcdArmPrimaryCore 29 IMPORT _gPcd_FixedAtBuild_PcdArmPrimaryCoreMask 30 IMPORT _gPcd_FixedAtBuild_PcdCoreCount 31 32 AREA VirtHelper, CODE, READONLY 33 34ArmPlatformPeiBootAction FUNCTION 35 bx lr 36 ENDFUNC 37 38//UINTN 39//ArmPlatformGetPrimaryCoreMpId ( 40// VOID 41// ); 42ArmPlatformGetPrimaryCoreMpId FUNCTION 43 LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCore, r0) 44 ldr r0, [r0] 45 bx lr 46 ENDFUNC 47 48//UINTN 49//ArmPlatformIsPrimaryCore ( 50// IN UINTN MpId 51// ); 52ArmPlatformIsPrimaryCore FUNCTION 53 mov r0, #1 54 bx lr 55 ENDFUNC 56 57//UINTN 58//ArmPlatformGetCorePosition ( 59// IN UINTN MpId 60// ); 61// With this function: CorePos = (ClusterId * 4) + CoreId 62ArmPlatformGetCorePosition FUNCTION 63 and r1, r0, #ARM_CORE_MASK 64 and r0, r0, #ARM_CLUSTER_MASK 65 add r0, r1, r0, LSR #6 66 bx lr 67 ENDFUNC 68 69//EFI_PHYSICAL_ADDRESS 70//GetPhysAddrTop ( 71// VOID 72// ); 73ArmGetPhysAddrTop FUNCTION 74 mov r0, #0x00000000 75 mov r1, #0x10000 76 bx lr 77 ENDFUNC 78 79 END 80