blob: 063ee64947b202ece092d74327b7a280de479631 [file] [log] [blame]
Antonio Nino Diaz6766bb12018-10-26 11:12:31 +01001/*
Jimmy Brisson39f9eee2020-08-05 13:44:05 -05002 * Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved.
Antonio Nino Diaz6766bb12018-10-26 11:12:31 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6#include <asm_macros.S>
7#include <platform_def.h>
8
9 .globl plat_my_core_pos
10 .globl poplar_calc_core_pos
11 .globl plat_crash_console_init
12 .globl plat_crash_console_putc
13 .globl plat_crash_console_flush
14 .globl platform_mem_init
15
16 /* -----------------------------------------------------
17 * unsigned int plat_my_core_pos(void)
18 * This function uses poplar_calc_core_pos()
19 * definition to get the index of the calling CPU.
20 * -----------------------------------------------------
21 */
22func plat_my_core_pos
23 mrs x0, mpidr_el1
24 b poplar_calc_core_pos
25endfunc plat_my_core_pos
26
27 /* -----------------------------------------------------
28 * unsigned int poplar_calc_core_pos(u_register_t mpidr)
29 * Helper function to calculate the core position.
30 * With this function: CorePos = (ClusterId * 4) +
31 * CoreId
32 * -----------------------------------------------------
33 */
34func poplar_calc_core_pos
35 and x1, x0, #MPIDR_CPU_MASK
36 and x0, x0, #MPIDR_CLUSTER_MASK
37 add x0, x1, x0, LSR #6
38 ret
39endfunc poplar_calc_core_pos
40
41 /* ---------------------------------------------
42 * int plat_crash_console_init(void)
43 * Function to initialize the crash console
44 * without a C Runtime to print crash report.
45 * Clobber list : x0 - x4
46 * ---------------------------------------------
47 */
48func plat_crash_console_init
49 mov_imm x0, POPLAR_CRASH_UART_BASE
50 mov_imm x1, POPLAR_CRASH_UART_CLK_IN_HZ
51 mov_imm x2, POPLAR_CONSOLE_BAUDRATE
52 b console_pl011_core_init
53endfunc plat_crash_console_init
54
55 /* ---------------------------------------------
56 * int plat_crash_console_putc(int c)
57 * Function to print a character on the crash
58 * console without a C Runtime.
59 * Clobber list : x1, x2
60 * ---------------------------------------------
61 */
62func plat_crash_console_putc
63 mov_imm x1, POPLAR_CRASH_UART_BASE
64 b console_pl011_core_putc
65endfunc plat_crash_console_putc
66
67 /* ---------------------------------------------
Jimmy Brisson39f9eee2020-08-05 13:44:05 -050068 * void plat_crash_console_flush()
Antonio Nino Diaz6766bb12018-10-26 11:12:31 +010069 * Function to force a write of all buffered
70 * data that hasn't been output.
Jimmy Brisson39f9eee2020-08-05 13:44:05 -050071 * Out : void.
Antonio Nino Diaz6766bb12018-10-26 11:12:31 +010072 * Clobber list : r0
73 * ---------------------------------------------
74 */
75func plat_crash_console_flush
76 mov_imm x0, POPLAR_CRASH_UART_BASE
77 b console_pl011_core_flush
78endfunc plat_crash_console_flush
79
80 /* ---------------------------------------------------------------------
81 * We don't need to carry out any memory initialization on ARM
82 * platforms. The Secure RAM is accessible straight away.
83 * ---------------------------------------------------------------------
84 */
85func platform_mem_init
86 ret
87endfunc platform_mem_init