1/* 2 * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6#include <arch.h> 7#include <asm_macros.S> 8#include <mt8173_def.h> 9 10 .globl plat_secondary_cold_boot_setup 11 .globl plat_report_exception 12 .globl platform_is_primary_cpu 13 .globl plat_my_core_pos 14 .globl plat_crash_console_init 15 .globl plat_crash_console_putc 16 17 /* ----------------------------------------------------- 18 * void plat_secondary_cold_boot_setup (void); 19 * 20 * This function performs any platform specific actions 21 * needed for a secondary cpu after a cold reset e.g 22 * mark the cpu's presence, mechanism to place it in a 23 * holding pen etc. 24 * ----------------------------------------------------- 25 */ 26func plat_secondary_cold_boot_setup 27 /* MT8173 Oak does not do cold boot for secondary CPU */ 28cb_panic: 29 b cb_panic 30endfunc plat_secondary_cold_boot_setup 31 32func platform_is_primary_cpu 33 and x0, x0, #(MPIDR_CLUSTER_MASK | MPIDR_CPU_MASK) 34 cmp x0, #MT8173_PRIMARY_CPU 35 cset x0, eq 36 ret 37endfunc platform_is_primary_cpu 38 39#if !ENABLE_PLAT_COMPAT 40 /* ----------------------------------------------------- 41 * unsigned int plat_my_core_pos(void); 42 * 43 * result: CorePos = CoreId + (ClusterId << 2) 44 * ----------------------------------------------------- 45 */ 46func plat_my_core_pos 47 mrs x0, mpidr_el1 48 and x1, x0, #MPIDR_CPU_MASK 49 and x0, x0, #MPIDR_CLUSTER_MASK 50 add x0, x1, x0, LSR #6 51 ret 52endfunc plat_my_core_pos 53#endif 54 55 /* --------------------------------------------- 56 * int plat_crash_console_init(void) 57 * Function to initialize the crash console 58 * without a C Runtime to print crash report. 59 * Clobber list : x0 - x4 60 * --------------------------------------------- 61 */ 62func plat_crash_console_init 63 mov_imm x0, MT8173_UART0_BASE 64 mov_imm x1, MT8173_UART_CLOCK 65 mov_imm x2, MT8173_BAUDRATE 66 b console_core_init 67endfunc plat_crash_console_init 68 69 /* --------------------------------------------- 70 * int plat_crash_console_putc(void) 71 * Function to print a character on the crash 72 * console without a C Runtime. 73 * Clobber list : x1, x2 74 * --------------------------------------------- 75 */ 76func plat_crash_console_putc 77 mov_imm x1, MT8173_UART0_BASE 78 b console_core_putc 79endfunc plat_crash_console_putc 80