1# 2# Copyright (c) 2011-2013, ARM Limited. All rights reserved. 3# 4# This program and the accompanying materials 5# are licensed and made available under the terms and conditions of the BSD License 6# which accompanies this distribution. The full text of the license may be found at 7# http://opensource.org/licenses/bsd-license.php 8# 9# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11# 12# 13 14#include <AsmMacroIoLibV8.h> 15#include <Library/ArmLib.h> 16 17ASM_FUNC(ArmPlatformPeiBootAction) 18 ret 19 20//UINTN 21//ArmPlatformGetPrimaryCoreMpId ( 22// VOID 23// ); 24ASM_FUNC(ArmPlatformGetPrimaryCoreMpId) 25 MOV32 (w0, FixedPcdGet32 (PcdArmPrimaryCore)) 26 ret 27 28# IN None 29# OUT x0 = number of cores present in the system 30ASM_FUNC(ArmGetCpuCountPerCluster) 31 MOV32 (w0, FixedPcdGet32 (PcdCoreCount)) 32 ret 33 34//UINTN 35//ArmPlatformIsPrimaryCore ( 36// IN UINTN MpId 37// ); 38ASM_FUNC(ArmPlatformIsPrimaryCore) 39 MOV32 (w1, FixedPcdGet32 (PcdArmPrimaryCoreMask)) 40 and x0, x0, x1 41 MOV32 (w1, FixedPcdGet32 (PcdArmPrimaryCore)) 42 cmp w0, w1 43 b.ne 1f 44 mov x0, #1 45 ret 461: 47 mov x0, #0 48 ret 49 50//UINTN 51//ArmPlatformGetCorePosition ( 52// IN UINTN MpId 53// ); 54// With this function: CorePos = (ClusterId * 4) + CoreId 55ASM_FUNC(ArmPlatformGetCorePosition) 56 and x1, x0, #ARM_CORE_MASK 57 and x0, x0, #ARM_CLUSTER_MASK 58 add x0, x1, x0, LSR #6 59 ret 60 61ASM_FUNCTION_REMOVE_IF_UNREFERENCED 62