/* * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include <asm_macros.S> #include <cpu_data.h> .globl _cpu_data .globl _cpu_data_by_index /* ----------------------------------------------------------------- * cpu_data_t *_cpu_data(void) * * Return the cpu_data structure for the current CPU. * ----------------------------------------------------------------- */ func _cpu_data /* r12 is pushed to meet the 8 byte stack alignment requirement */ push {r12, lr} bl plat_my_core_pos pop {r12, lr} b _cpu_data_by_index endfunc _cpu_data /* ----------------------------------------------------------------- * cpu_data_t *_cpu_data_by_index(uint32_t cpu_index) * * Return the cpu_data structure for the CPU with given linear index * * This can be called without a valid stack. * clobbers: r0, r1 * ----------------------------------------------------------------- */ func _cpu_data_by_index mov_imm r1, CPU_DATA_SIZE mul r0, r0, r1 ldr r1, =percpu_data add r0, r0, r1 bx lr endfunc _cpu_data_by_index