Home | History | Annotate | Download | only in ARM
      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