Home | History | Annotate | Download | only in ARM
      1 #
      2 #  Copyright (c) 2011-2013, 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 
     15 #include <AsmMacroIoLib.h>
     16 #include <Base.h>
     17 #include <Library/ArmLib.h>
     18 #include <Library/PcdLib.h>
     19 #include <AutoGen.h>
     20 
     21 .text
     22 .align 2
     23 
     24 GCC_ASM_EXPORT(ArmPlatformPeiBootAction)
     25 GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore)
     26 GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId)
     27 GCC_ASM_EXPORT(ArmPlatformGetCorePosition)
     28 GCC_ASM_EXPORT(ArmGetPhysAddrTop)
     29 
     30 GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCore)
     31 GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask)
     32 GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdCoreCount)
     33 
     34 ASM_PFX(ArmPlatformPeiBootAction):
     35   bx    lr
     36 
     37 //UINTN
     38 //ArmPlatformGetPrimaryCoreMpId (
     39 //  VOID
     40 //  );
     41 ASM_PFX(ArmPlatformGetPrimaryCoreMpId):
     42   LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCore, r0)
     43   ldr    r0, [r0]
     44   bx     lr
     45 
     46 //UINTN
     47 //ArmPlatformIsPrimaryCore (
     48 //  IN UINTN MpId
     49 //  );
     50 ASM_PFX(ArmPlatformIsPrimaryCore):
     51   mov   r0, #1
     52   bx    lr
     53 
     54 //UINTN
     55 //ArmPlatformGetCorePosition (
     56 //  IN UINTN MpId
     57 //  );
     58 // With this function: CorePos = (ClusterId * 4) + CoreId
     59 ASM_PFX(ArmPlatformGetCorePosition):
     60   and   r1, r0, #ARM_CORE_MASK
     61   and   r0, r0, #ARM_CLUSTER_MASK
     62   add   r0, r1, r0, LSR #6
     63   bx    lr
     64 
     65 //EFI_PHYSICAL_ADDRESS
     66 //GetPhysAddrTop (
     67 //  VOID
     68 //  );
     69 ASM_PFX(ArmGetPhysAddrTop):
     70   mov   r0, #0x00000000
     71   mov   r1, #0x10000
     72   bx    lr
     73 
     74 ASM_FUNCTION_REMOVE_IF_UNREFERENCED
     75