1/* 2 * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7#include <asm_macros.S> 8#include <lib/el3_runtime/cpu_data.h> 9 10 .globl _cpu_data 11 .globl _cpu_data_by_index 12 13/* ----------------------------------------------------------------- 14 * cpu_data_t *_cpu_data(void) 15 * 16 * Return the cpu_data structure for the current CPU. 17 * ----------------------------------------------------------------- 18 */ 19func _cpu_data 20 /* r12 is pushed to meet the 8 byte stack alignment requirement */ 21 push {r12, lr} 22 bl plat_my_core_pos 23 pop {r12, lr} 24 b _cpu_data_by_index 25endfunc _cpu_data 26 27/* ----------------------------------------------------------------- 28 * cpu_data_t *_cpu_data_by_index(uint32_t cpu_index) 29 * 30 * Return the cpu_data structure for the CPU with given linear index 31 * 32 * This can be called without a valid stack. 33 * clobbers: r0, r1 34 * ----------------------------------------------------------------- 35 */ 36func _cpu_data_by_index 37 mov_imm r1, CPU_DATA_SIZE 38 mul r0, r0, r1 39 ldr r1, =percpu_data 40 add r0, r0, r1 41 bx lr 42endfunc _cpu_data_by_index 43