From bde81dcc7bffaad9986fcba688941924240e36a6 Mon Sep 17 00:00:00 2001 From: Varun Wadekar <vwadekar@nvidia.com> Date: Tue, 22 Sep 2015 13:45:07 +0530 Subject: [PATCH] Tegra: use ClusterId for calculating core position This patch modifies platform_get_core_pos() to use the Cluster ID field as well to calculate the final index value. This helps the system to store CPU data for multi-cluster configurations. Change-Id: I76e35f723f741e995c6c9156e9d61b0b2cdd2709 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> --- plat/nvidia/tegra/common/aarch64/tegra_helpers.S | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plat/nvidia/tegra/common/aarch64/tegra_helpers.S b/plat/nvidia/tegra/common/aarch64/tegra_helpers.S index 0474cc1a5..b2fc9a75b 100644 --- a/plat/nvidia/tegra/common/aarch64/tegra_helpers.S +++ b/plat/nvidia/tegra/common/aarch64/tegra_helpers.S @@ -179,6 +179,20 @@ func plat_get_my_entrypoint ret 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 + /* ----------------------------------------------------- * void plat_secondary_cold_boot_setup (void); * -- GitLab