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