/* * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include <arch.h> #include <asm_macros.S> #include <assert_macros.S> #include <platform_def.h> .globl plat_my_core_pos .globl plat_is_my_cpu_primary .globl plat_get_my_entrypoint .weak platform_get_core_pos /* ----------------------------------------------------- * Compatibility wrappers for new platform APIs. * ----------------------------------------------------- */ func plat_my_core_pos mrs x0, mpidr_el1 b platform_get_core_pos endfunc plat_my_core_pos func plat_is_my_cpu_primary mrs x0, mpidr_el1 b platform_is_primary_cpu endfunc plat_is_my_cpu_primary func plat_get_my_entrypoint mrs x0, mpidr_el1 b platform_get_entrypoint endfunc plat_get_my_entrypoint /* ----------------------------------------------------- * int platform_get_core_pos(int mpidr); * With this function: CorePos = (ClusterId * 4) + * CoreId * ----------------------------------------------------- */ func platform_get_core_pos and x1, x0, #MPIDR_CPU_MASK and x0, x0, #MPIDR_CLUSTER_MASK add x0, x1, x0, LSR #6 ret endfunc platform_get_core_pos