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
|
||||
*/
|
||||
|
@ -10,6 +10,12 @@
|
|||
|
||||
.globl plat_secondary_cold_boot_setup
|
||||
.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);
|
||||
|
@ -47,3 +53,76 @@ func plat_is_my_cpu_primary
|
|||
cset x0, eq
|
||||
ret x9
|
||||
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
|
||||
*/
|
||||
|
||||
#include <plat_arm.h>
|
||||
#include <platform.h>
|
||||
#include "zynqmp_private.h"
|
||||
|
||||
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)
|
||||
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/cadence/uart/aarch64/cdns_console.S \
|
||||
drivers/console/aarch64/console.S \
|
||||
plat/arm/common/aarch64/arm_helpers.S \
|
||||
plat/arm/common/arm_cci.c \
|
||||
plat/arm/common/arm_common.c \
|
||||
plat/arm/common/arm_gicv2.c \
|
||||
|
|
|
@ -145,13 +145,11 @@
|
|||
# error "invalid ZYNQMP_CONSOLE"
|
||||
#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 */
|
||||
#define PLAT_ARM_CRASH_UART_CLK_IN_HZ 100000000 /* FIXME */
|
||||
|
||||
#define ZYNQMP_CRASH_UART_CLK_IN_HZ 100000000 /* FIXME */
|
||||
/* Must be non zero */
|
||||
#define ZYNQMP_UART_BAUDRATE 115200
|
||||
#define ARM_CONSOLE_BAUDRATE ZYNQMP_UART_BAUDRATE
|
||||
#define ZYNQMP_UART_BAUDRATE 115200
|
||||
|
||||
/* Silicon version detection */
|
||||
#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
|
||||
*/
|
||||
|
@ -9,9 +9,12 @@
|
|||
|
||||
#include <bl_common.h>
|
||||
#include <interrupt_mgmt.h>
|
||||
#include <stdint.h>
|
||||
|
||||
void zynqmp_config_setup(void);
|
||||
|
||||
unsigned int zynqmp_calc_core_pos(u_register_t mpidr);
|
||||
|
||||
/* ZynqMP specific functions */
|
||||
unsigned int zynqmp_get_uart_clk(void);
|
||||
unsigned int zynqmp_get_bootmode(void);
|
||||
|
|
Loading…
Reference in New Issue