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 34 ArmPlatformPeiBootAction FUNCTION 35 bx lr 36 ENDFUNC 37 38 //UINTN 39 //ArmPlatformGetPrimaryCoreMpId ( 40 // VOID 41 // ); 42 ArmPlatformGetPrimaryCoreMpId 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 // ); 52 ArmPlatformIsPrimaryCore 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 62 ArmPlatformGetCorePosition 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 // ); 73 ArmGetPhysAddrTop FUNCTION 74 mov r0, #0x00000000 75 mov r1, #0x10000 76 bx lr 77 ENDFUNC 78 79 END 80