zynqmp: Remove dependency on arm_helpers.S
Non-Arm platforms shouldn't use Arm platform code. This patch copies the implementation of the functions in arm_helpers.S to zynqmp_helpers.S to remove this dependency of zynqmp on Arm platforms. Change-Id: Ia85f303c4c63bcf0ffa57c7f3ef9d88376729b6b Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
This commit is contained in:
parent
2ebacb880b
commit
bde25ae28f
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -10,6 +10,12 @@
|
||||||
|
|
||||||
.globl plat_secondary_cold_boot_setup
|
.globl plat_secondary_cold_boot_setup
|
||||||
.globl plat_is_my_cpu_primary
|
.globl plat_is_my_cpu_primary
|
||||||
|
.globl zynqmp_calc_core_pos
|
||||||
|
.globl plat_my_core_pos
|
||||||
|
.globl plat_crash_console_init
|
||||||
|
.globl plat_crash_console_putc
|
||||||
|
.globl plat_crash_console_flush
|
||||||
|
.globl platform_mem_init
|
||||||
|
|
||||||
/* -----------------------------------------------------
|
/* -----------------------------------------------------
|
||||||
* void plat_secondary_cold_boot_setup (void);
|
* void plat_secondary_cold_boot_setup (void);
|
||||||
|
@ -47,3 +53,76 @@ func plat_is_my_cpu_primary
|
||||||
cset x0, eq
|
cset x0, eq
|
||||||
ret x9
|
ret x9
|
||||||
endfunc plat_is_my_cpu_primary
|
endfunc plat_is_my_cpu_primary
|
||||||
|
|
||||||
|
/* -----------------------------------------------------
|
||||||
|
* unsigned int plat_my_core_pos(void)
|
||||||
|
* This function uses the zynqmp_calc_core_pos()
|
||||||
|
* definition to get the index of the calling CPU.
|
||||||
|
* -----------------------------------------------------
|
||||||
|
*/
|
||||||
|
func plat_my_core_pos
|
||||||
|
mrs x0, mpidr_el1
|
||||||
|
b zynqmp_calc_core_pos
|
||||||
|
endfunc plat_my_core_pos
|
||||||
|
|
||||||
|
/* -----------------------------------------------------
|
||||||
|
* unsigned int zynqmp_calc_core_pos(u_register_t mpidr)
|
||||||
|
* Helper function to calculate the core position.
|
||||||
|
* With this function: CorePos = (ClusterId * 4) +
|
||||||
|
* CoreId
|
||||||
|
* -----------------------------------------------------
|
||||||
|
*/
|
||||||
|
func zynqmp_calc_core_pos
|
||||||
|
and x1, x0, #MPIDR_CPU_MASK
|
||||||
|
and x0, x0, #MPIDR_CLUSTER_MASK
|
||||||
|
add x0, x1, x0, LSR #6
|
||||||
|
ret
|
||||||
|
endfunc zynqmp_calc_core_pos
|
||||||
|
|
||||||
|
/* ---------------------------------------------
|
||||||
|
* int plat_crash_console_init(void)
|
||||||
|
* Function to initialize the crash console
|
||||||
|
* without a C Runtime to print crash report.
|
||||||
|
* Clobber list : x0 - x4
|
||||||
|
* ---------------------------------------------
|
||||||
|
*/
|
||||||
|
func plat_crash_console_init
|
||||||
|
mov_imm x0, ZYNQMP_CRASH_UART_BASE
|
||||||
|
mov_imm x1, ZYNQMP_CRASH_UART_CLK_IN_HZ
|
||||||
|
mov_imm x2, ZYNQMP_UART_BAUDRATE
|
||||||
|
b console_core_init
|
||||||
|
endfunc plat_crash_console_init
|
||||||
|
|
||||||
|
/* ---------------------------------------------
|
||||||
|
* int plat_crash_console_putc(int c)
|
||||||
|
* Function to print a character on the crash
|
||||||
|
* console without a C Runtime.
|
||||||
|
* Clobber list : x1, x2
|
||||||
|
* ---------------------------------------------
|
||||||
|
*/
|
||||||
|
func plat_crash_console_putc
|
||||||
|
mov_imm x1, ZYNQMP_CRASH_UART_BASE
|
||||||
|
b console_core_putc
|
||||||
|
endfunc plat_crash_console_putc
|
||||||
|
|
||||||
|
/* ---------------------------------------------
|
||||||
|
* int plat_crash_console_flush()
|
||||||
|
* Function to force a write of all buffered
|
||||||
|
* data that hasn't been output.
|
||||||
|
* Out : return -1 on error else return 0.
|
||||||
|
* Clobber list : r0
|
||||||
|
* ---------------------------------------------
|
||||||
|
*/
|
||||||
|
func plat_crash_console_flush
|
||||||
|
mov_imm x0, ZYNQMP_CRASH_UART_BASE
|
||||||
|
b console_core_flush
|
||||||
|
endfunc plat_crash_console_flush
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------
|
||||||
|
* We don't need to carry out any memory initialization on ARM
|
||||||
|
* platforms. The Secure RAM is accessible straight away.
|
||||||
|
* ---------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
func platform_mem_init
|
||||||
|
ret
|
||||||
|
endfunc platform_mem_init
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <plat_arm.h>
|
#include <platform.h>
|
||||||
|
#include "zynqmp_private.h"
|
||||||
|
|
||||||
int plat_core_pos_by_mpidr(u_register_t mpidr)
|
int plat_core_pos_by_mpidr(u_register_t mpidr)
|
||||||
{
|
{
|
||||||
|
@ -14,5 +15,5 @@ int plat_core_pos_by_mpidr(u_register_t mpidr)
|
||||||
if ((mpidr & MPIDR_CPU_MASK) >= PLATFORM_CORE_COUNT)
|
if ((mpidr & MPIDR_CPU_MASK) >= PLATFORM_CORE_COUNT)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return plat_arm_calc_core_pos(mpidr);
|
return zynqmp_calc_core_pos(mpidr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,6 @@ PLAT_BL_COMMON_SOURCES := lib/xlat_tables/xlat_tables_common.c \
|
||||||
drivers/arm/gic/v2/gicv2_helpers.c \
|
drivers/arm/gic/v2/gicv2_helpers.c \
|
||||||
drivers/cadence/uart/aarch64/cdns_console.S \
|
drivers/cadence/uart/aarch64/cdns_console.S \
|
||||||
drivers/console/aarch64/console.S \
|
drivers/console/aarch64/console.S \
|
||||||
plat/arm/common/aarch64/arm_helpers.S \
|
|
||||||
plat/arm/common/arm_cci.c \
|
plat/arm/common/arm_cci.c \
|
||||||
plat/arm/common/arm_common.c \
|
plat/arm/common/arm_common.c \
|
||||||
plat/arm/common/arm_gicv2.c \
|
plat/arm/common/arm_gicv2.c \
|
||||||
|
|
|
@ -145,13 +145,11 @@
|
||||||
# error "invalid ZYNQMP_CONSOLE"
|
# error "invalid ZYNQMP_CONSOLE"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PLAT_ARM_CRASH_UART_BASE ZYNQMP_UART_BASE
|
#define ZYNQMP_CRASH_UART_BASE ZYNQMP_UART_BASE
|
||||||
/* impossible to call C routine how it is done now - hardcode any value */
|
/* impossible to call C routine how it is done now - hardcode any value */
|
||||||
#define PLAT_ARM_CRASH_UART_CLK_IN_HZ 100000000 /* FIXME */
|
#define ZYNQMP_CRASH_UART_CLK_IN_HZ 100000000 /* FIXME */
|
||||||
|
|
||||||
/* Must be non zero */
|
/* Must be non zero */
|
||||||
#define ZYNQMP_UART_BAUDRATE 115200
|
#define ZYNQMP_UART_BAUDRATE 115200
|
||||||
#define ARM_CONSOLE_BAUDRATE ZYNQMP_UART_BAUDRATE
|
|
||||||
|
|
||||||
/* Silicon version detection */
|
/* Silicon version detection */
|
||||||
#define ZYNQMP_SILICON_VER_MASK 0xF000
|
#define ZYNQMP_SILICON_VER_MASK 0xF000
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -9,9 +9,12 @@
|
||||||
|
|
||||||
#include <bl_common.h>
|
#include <bl_common.h>
|
||||||
#include <interrupt_mgmt.h>
|
#include <interrupt_mgmt.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
void zynqmp_config_setup(void);
|
void zynqmp_config_setup(void);
|
||||||
|
|
||||||
|
unsigned int zynqmp_calc_core_pos(u_register_t mpidr);
|
||||||
|
|
||||||
/* ZynqMP specific functions */
|
/* ZynqMP specific functions */
|
||||||
unsigned int zynqmp_get_uart_clk(void);
|
unsigned int zynqmp_get_uart_clk(void);
|
||||||
unsigned int zynqmp_get_bootmode(void);
|
unsigned int zynqmp_get_bootmode(void);
|
||||||
|
|
Loading…
Reference in New Issue