/* * Copyright 2022-2025 NXP. * * SPDX-License-Identifier: BSD-3-Clause */ #include #include #include .globl plat_is_my_cpu_primary .globl plat_my_core_pos .globl plat_calc_core_pos .globl plat_arm_calc_core_pos .globl platform_mem_init /* ---------------------------------------------- * unsigned int plat_is_my_cpu_primary(void); * This function checks if this is the primary CPU * ---------------------------------------------- */ func plat_is_my_cpu_primary mrs x0, mpidr_el1 mov_imm x1, MPIDR_AFFINITY_MASK and x0, x0, x1 cmp x0, #PLAT_PRIMARY_CPU cset x0, eq ret endfunc plat_is_my_cpu_primary /* ---------------------------------------------- * unsigned int plat_my_core_pos(void) * This Function uses the plat_calc_core_pos() * to get the index of the calling CPU. * ---------------------------------------------- */ func plat_my_core_pos mrs x0, mpidr_el1 mov x1, #MPIDR_AFFLVL_MASK and x0, x1, x0, lsr #MPIDR_AFF1_SHIFT ret endfunc plat_my_core_pos /* * unsigned int plat_calc_core_pos(uint64_t mpidr) * helper function to calculate the core position. * With this function. */ func plat_calc_core_pos mov x1, #MPIDR_AFFLVL_MASK and x0, x1, x0, lsr #MPIDR_AFF1_SHIFT ret endfunc plat_calc_core_pos func plat_arm_calc_core_pos b plat_core_pos_by_mpidr endfunc plat_arm_calc_core_pos func platform_mem_init ret endfunc platform_mem_init