1# 2# Copyright (c) 2011-2013, ARM Limited. All rights reserved. 3# Copyright (c) 2016, 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 15#include <AsmMacroIoLibV8.h> 16#include <Library/ArmLib.h> 17 18ASM_FUNC(ArmPlatformPeiBootAction) 19 ret 20 21//UINTN 22//ArmPlatformGetPrimaryCoreMpId ( 23// VOID 24// ); 25ASM_FUNC(ArmPlatformGetPrimaryCoreMpId) 26 MOV32 (w0, FixedPcdGet32 (PcdArmPrimaryCore)) 27 ret 28 29//UINTN 30//ArmPlatformIsPrimaryCore ( 31// IN UINTN MpId 32// ); 33ASM_FUNC(ArmPlatformIsPrimaryCore) 34 mov x0, #1 35 ret 36 37//UINTN 38//ArmPlatformGetCorePosition ( 39// IN UINTN MpId 40// ); 41// With this function: CorePos = (ClusterId * 4) + CoreId 42ASM_FUNC(ArmPlatformGetCorePosition) 43 and x1, x0, #ARM_CORE_MASK 44 and x0, x0, #ARM_CLUSTER_MASK 45 add x0, x1, x0, LSR #6 46 ret 47 48//EFI_PHYSICAL_ADDRESS 49//GetPhysAddrTop ( 50// VOID 51// ); 52ASM_FUNC(ArmGetPhysAddrTop) 53 mrs x0, id_aa64mmfr0_el1 54 adr x1, .LPARanges 55 and x0, x0, #7 56 ldrb w1, [x1, x0] 57 mov x0, #1 58 lsl x0, x0, x1 59 ret 60 61// 62// Bits 0..2 of the AA64MFR0_EL1 system register encode the size of the 63// physical address space support on this CPU: 64// 0 == 32 bits, 1 == 36 bits, etc etc 65// 6 and 7 are reserved 66// 67.LPARanges: 68 .byte 32, 36, 40, 42, 44, 48, -1, -1 69 70ASM_FUNCTION_REMOVE_IF_UNREFERENCED 71