arm-trusted-firmware/include/lib/pmf/aarch32/pmf_asm_macros.S
Bence Szépkúti 0531ada537 pmf: Make the runtime instrumentation work on AArch32
Ported the pmf asm macros and the asm code in the bl31 entrypoint
necessary for the instrumentation to AArch32.

Since smc dispatch is handled by the bl32 payload on AArch32, we
provide this service only if AARCH32_SP=sp_min is set.

Signed-off-by: Bence Szépkúti <bence.szepkuti@arm.com>
Change-Id: Id33b7e9762ae86a4f4b40d7f1b37a90e5130c8ac
2019-12-17 16:08:04 +01:00

28 lines
591 B
ArmAsm

/*
* Copyright (c) 2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef PMF_ASM_MACROS_S
#define PMF_ASM_MACROS_S
#define PMF_TS_SIZE 8
/*
* This macro calculates the address of the per-cpu timestamp
* for the given service name and local timestamp id.
* Clobbers: r0 - r4
*/
.macro pmf_calc_timestamp_addr _name, _tid
mov r4, lr
bl plat_my_core_pos
mov lr, r4
ldr r1, =__PERCPU_TIMESTAMP_SIZE__
mov r2, #(\_tid * PMF_TS_SIZE)
mla r0, r0, r1, r2
ldr r1, =pmf_ts_mem_\_name
add r0, r0, r1
.endm
#endif /* PMF_ASM_MACROS_S */