]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/AArch64/ArmJunoHelper.S
ArmPlatformPkg/ArmJunoLib: switch to ASM_FUNC() asm macro
[mirror_edk2.git] / ArmPlatformPkg / ArmJunoPkg / Library / ArmJunoLib / AArch64 / ArmJunoHelper.S
CommitLineData
9f38945f
OM
1/** @file\r
2*\r
3* Copyright (c) 2013-2014, ARM Limited. All rights reserved.\r
4*\r
5* This program and the accompanying materials\r
6* are licensed and made available under the terms and conditions of the BSD License\r
7* which accompanies this distribution. The full text of the license may be found at\r
8* http://opensource.org/licenses/bsd-license.php\r
9*\r
10* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12*\r
13**/\r
14\r
15#include <AsmMacroIoLibV8.h>\r
16#include <Library/ArmLib.h>\r
17\r
9f38945f
OM
18//UINTN\r
19//ArmPlatformGetCorePosition (\r
20// IN UINTN MpId\r
21// );\r
22// With this function: CorePos = (ClusterId * 2) + CoreId\r
a0f56915 23ASM_FUNC(ArmPlatformGetCorePosition)\r
9f38945f
OM
24 and x1, x0, #ARM_CORE_MASK\r
25 and x0, x0, #ARM_CLUSTER_MASK\r
26 add x0, x1, x0, LSR #7\r
27 ret\r
28\r
29//UINTN\r
30//ArmPlatformGetPrimaryCoreMpId (\r
31// VOID\r
32// );\r
a0f56915
AB
33ASM_FUNC(ArmPlatformGetPrimaryCoreMpId)\r
34 ldr w0, PrimaryCoreMpid\r
9f38945f
OM
35 ret\r
36\r
37//UINTN\r
38//ArmPlatformIsPrimaryCore (\r
39// IN UINTN MpId\r
40// );\r
a0f56915
AB
41ASM_FUNC(ArmPlatformIsPrimaryCore)\r
42 MOV32 (w1, FixedPcdGet32 (PcdArmPrimaryCoreMask))\r
9f38945f
OM
43 and x0, x0, x1\r
44\r
a0f56915 45 ldr w1, PrimaryCoreMpid\r
9f38945f
OM
46\r
47 cmp w0, w1\r
a0f56915 48 cset x0, eq\r
9f38945f
OM
49 ret\r
50\r
a0f56915 51ASM_FUNC(ArmPlatformPeiBootAction)\r
9f38945f
OM
52 // The trusted firmware passes the primary CPU MPID through x0 register.\r
53 // Save it in a variable.\r
a0f56915 54 adr x1, PrimaryCoreMpid\r
9f38945f
OM
55 str w0, [x1]\r
56 ret\r
57\r
a0f56915 58PrimaryCoreMpid: .word 0x0\r