From da3b038fd5e39147792df02d87b61054f94da8a5 Mon Sep 17 00:00:00 2001 From: Deepak Pandey Date: Thu, 11 Oct 2018 13:44:43 +0530 Subject: [PATCH] plat/arm: relocate the jump_if_cpu_midr macro. macro jump_if_cpu_midr is used commonly by many arm platform. It has now been relocated to common place to remove duplication of code. Change-Id: Ic0876097dbc085df4f90eadb4b7687dde7c726da Signed-off-by: Deepak Pandey --- include/lib/cpus/aarch32/cpu_macros.S | 13 +++++++++++++ include/lib/cpus/aarch64/cpu_macros.S | 14 ++++++++++++++ plat/arm/board/juno/aarch32/juno_helpers.S | 16 +--------------- plat/arm/board/juno/aarch64/juno_helpers.S | 14 -------------- plat/arm/css/sgi/aarch64/sgi_helper.S | 16 +--------------- plat/arm/css/sgm/aarch64/css_sgm_helpers.S | 16 +--------------- 6 files changed, 30 insertions(+), 59 deletions(-) diff --git a/include/lib/cpus/aarch32/cpu_macros.S b/include/lib/cpus/aarch32/cpu_macros.S index 7703be339..525e18caf 100644 --- a/include/lib/cpus/aarch32/cpu_macros.S +++ b/include/lib/cpus/aarch32/cpu_macros.S @@ -214,5 +214,18 @@ bl errata_print_msg .endm #endif + /* + * Helper macro that reads the part number of the current CPU and jumps + * to the given label if it matches the CPU MIDR provided. + * + * Clobbers: r0-r1 + */ + .macro jump_if_cpu_midr _cpu_midr, _label + ldcopr r0, MIDR + ubfx r0, r0, #MIDR_PN_SHIFT, #12 + ldr r1, =((\_cpu_midr >> MIDR_PN_SHIFT) & MIDR_PN_MASK) + cmp r0, r1 + beq \_label + .endm #endif /* __CPU_MACROS_S__ */ diff --git a/include/lib/cpus/aarch64/cpu_macros.S b/include/lib/cpus/aarch64/cpu_macros.S index 026a48e32..4672cbc06 100644 --- a/include/lib/cpus/aarch64/cpu_macros.S +++ b/include/lib/cpus/aarch64/cpu_macros.S @@ -272,3 +272,17 @@ cmp \_reg, #1 beq \_label .endm + + /* + * Helper macro that reads the part number of the current + * CPU and jumps to the given label if it matches the CPU + * MIDR provided. + * + * Clobbers x0. + */ + .macro jump_if_cpu_midr _cpu_midr, _label + mrs x0, midr_el1 + ubfx x0, x0, MIDR_PN_SHIFT, #12 + cmp w0, #((\_cpu_midr >> MIDR_PN_SHIFT) & MIDR_PN_MASK) + b.eq \_label + .endm diff --git a/plat/arm/board/juno/aarch32/juno_helpers.S b/plat/arm/board/juno/aarch32/juno_helpers.S index 824002aed..1bc4e309a 100644 --- a/plat/arm/board/juno/aarch32/juno_helpers.S +++ b/plat/arm/board/juno/aarch32/juno_helpers.S @@ -10,6 +10,7 @@ #include #include #include +#include #include #include "../juno_def.h" @@ -33,21 +34,6 @@ beq \_handler .endm - /* -------------------------------------------------------------------- - * Helper macro that reads the part number of the current CPU and jumps - * to the given label if it matches the CPU MIDR provided. - * - * Clobbers r0. - * -------------------------------------------------------------------- - */ - .macro jump_if_cpu_midr _cpu_midr, _label - ldcopr r0, MIDR - ubfx r0, r0, #MIDR_PN_SHIFT, #12 - ldr r1, =((\_cpu_midr >> MIDR_PN_SHIFT) & MIDR_PN_MASK) - cmp r0, r1 - beq \_label - .endm - /* -------------------------------------------------------------------- * Platform reset handler for Juno R0. * diff --git a/plat/arm/board/juno/aarch64/juno_helpers.S b/plat/arm/board/juno/aarch64/juno_helpers.S index 29c2c0a52..edcfc7449 100644 --- a/plat/arm/board/juno/aarch64/juno_helpers.S +++ b/plat/arm/board/juno/aarch64/juno_helpers.S @@ -39,20 +39,6 @@ b.eq \_handler .endm - /* -------------------------------------------------------------------- - * Helper macro that reads the part number of the current CPU and jumps - * to the given label if it matches the CPU MIDR provided. - * - * Clobbers x0. - * -------------------------------------------------------------------- - */ - .macro jump_if_cpu_midr _cpu_midr, _label - mrs x0, midr_el1 - ubfx x0, x0, MIDR_PN_SHIFT, #12 - cmp w0, #((\_cpu_midr >> MIDR_PN_SHIFT) & MIDR_PN_MASK) - b.eq \_label - .endm - /* -------------------------------------------------------------------- * Platform reset handler for Juno R0. * diff --git a/plat/arm/css/sgi/aarch64/sgi_helper.S b/plat/arm/css/sgi/aarch64/sgi_helper.S index dd0fc5bbd..27bae43cf 100644 --- a/plat/arm/css/sgi/aarch64/sgi_helper.S +++ b/plat/arm/css/sgi/aarch64/sgi_helper.S @@ -8,6 +8,7 @@ #include #include #include +#include .globl plat_arm_calc_core_pos .globl plat_reset_handler @@ -48,21 +49,6 @@ func plat_arm_calc_core_pos ret endfunc plat_arm_calc_core_pos - /* ------------------------------------------------------ - * Helper macro that reads the part number of the current - * CPU and jumps to the given label if it matches the CPU - * MIDR provided. - * - * Clobbers x0. - * ----------------------------------------------------- - */ - .macro jump_if_cpu_midr _cpu_midr, _label - mrs x0, midr_el1 - ubfx x0, x0, MIDR_PN_SHIFT, #12 - cmp w0, #((\_cpu_midr >> MIDR_PN_SHIFT) & MIDR_PN_MASK) - b.eq \_label - .endm - /* ----------------------------------------------------- * void plat_reset_handler(void); * diff --git a/plat/arm/css/sgm/aarch64/css_sgm_helpers.S b/plat/arm/css/sgm/aarch64/css_sgm_helpers.S index d9b3df68d..32ca1bbc2 100644 --- a/plat/arm/css/sgm/aarch64/css_sgm_helpers.S +++ b/plat/arm/css/sgm/aarch64/css_sgm_helpers.S @@ -9,6 +9,7 @@ #include #include #include +#include .globl plat_arm_calc_core_pos .globl plat_reset_handler @@ -50,21 +51,6 @@ func plat_arm_calc_core_pos ret endfunc plat_arm_calc_core_pos - /* ------------------------------------------------------ - * Helper macro that reads the part number of the current - * CPU and jumps to the given label if it matches the CPU - * MIDR provided. - * - * Clobbers x0. - * ----------------------------------------------------- - */ - .macro jump_if_cpu_midr _cpu_midr, _label - mrs x0, midr_el1 - ubfx x0, x0, MIDR_PN_SHIFT, #12 - cmp w0, #((\_cpu_midr >> MIDR_PN_SHIFT) & MIDR_PN_MASK) - b.eq \_label - .endm - /* ----------------------------------------------------- * void plat_reset_handler(void); *