]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.asm
ArmPlatformPkg/ArmPlatformLib: Added ArmPlatformGetPrimaryCoreMpId()
[mirror_edk2.git] / ArmPlatformPkg / Library / ArmPlatformLibNull / Arm / ArmPlatformHelper.asm
1 //
2 // Copyright (c) 2012, 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 <AsmMacroIoLib.h>
15 #include <Library/ArmLib.h>
16
17 INCLUDE AsmMacroIoLib.inc
18
19 EXPORT ArmPlatformGetCorePosition
20 EXPORT ArmPlatformGetPrimaryCoreMpId
21 EXPORT ArmPlatformIsPrimaryCore
22
23 IMPORT _gPcd_FixedAtBuild_PcdArmPrimaryCore
24 IMPORT _gPcd_FixedAtBuild_PcdArmPrimaryCoreMask
25
26 PRESERVE8
27 AREA ArmPlatformNullHelper, CODE, READONLY
28
29 //UINTN
30 //ArmPlatformGetCorePosition (
31 // IN UINTN MpId
32 // );
33 ArmPlatformGetCorePosition FUNCTION
34 and r1, r0, #ARM_CORE_MASK
35 and r0, r0, #ARM_CLUSTER_MASK
36 add r0, r1, r0, LSR #7
37 bx lr
38 ENDFUNC
39
40 //UINTN
41 //ArmPlatformGetPrimaryCoreMpId (
42 // VOID
43 // );
44 ArmPlatformGetPrimaryCoreMpId FUNCTION
45 LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r0)
46 ldr r0, [r0]
47 bx lr
48 ENDFUNC
49
50 //UINTN
51 //ArmPlatformIsPrimaryCore (
52 // IN UINTN MpId
53 // );
54 ArmPlatformIsPrimaryCore FUNCTION
55 LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r1)
56 ldr r1, [r1]
57 and r0, r0, r1
58 LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCore, r1)
59 ldr r1, [r1]
60 cmp r0, r1
61 moveq r0, #1
62 movne r0, #0
63 bx lr
64 ENDFUNC
65
66 END
67