mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-21 12:04:27 +00:00

The MT bit in MPIDR is always set for SGI platforms and so the core position calculation code is updated to take into account the thread affinity value as well. Change-Id: I7b2a52707f607dc3859c6bbcd2b145b7987cb4ed Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com> Signed-off-by: Vishwanatha HG <vishwanatha.hg@arm.com>
41 lines
1.3 KiB
C
41 lines
1.3 KiB
C
/*
|
|
* Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <plat_arm.h>
|
|
#include <platform.h>
|
|
#include <assert.h>
|
|
|
|
#if ARM_PLAT_MT
|
|
#pragma weak plat_arm_get_cpu_pe_count
|
|
#endif
|
|
|
|
/******************************************************************************
|
|
* This function implements a part of the critical interface between the psci
|
|
* generic layer and the platform that allows the former to query the platform
|
|
* to convert an MPIDR to a unique linear index. An error code (-1) is
|
|
* returned in case the MPIDR is invalid.
|
|
*****************************************************************************/
|
|
int plat_core_pos_by_mpidr(u_register_t mpidr)
|
|
{
|
|
if (arm_check_mpidr(mpidr) == 0) {
|
|
#if ARM_PLAT_MT
|
|
assert((read_mpidr_el1() & MPIDR_MT_MASK) != 0);
|
|
#endif
|
|
return plat_arm_calc_core_pos(mpidr);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#if ARM_PLAT_MT
|
|
/******************************************************************************
|
|
* This function returns the PE count within the physical cpu corresponding to
|
|
* `mpidr`. Now one cpu only have one thread, so just return 1.
|
|
*****************************************************************************/
|
|
unsigned int plat_arm_get_cpu_pe_count(u_register_t mpidr)
|
|
{
|
|
return 1;
|
|
}
|
|
#endif /* ARM_PLAT_MT */
|