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