xref: /rk3399_ARM-atf/include/lib/pmf/aarch64/pmf_asm_macros.S (revision 72e8f2456af54b75a0a1d92aadfce0b4bcde6ba1)
10531ada5SBence Szépkúti/*
2*4c700c15SGovindraj Raja * Copyright (c) 2016-2018, Arm Limited and Contributors. All rights reserved.
30531ada5SBence Szépkúti *
40531ada5SBence Szépkúti * SPDX-License-Identifier: BSD-3-Clause
50531ada5SBence Szépkúti */
60531ada5SBence Szépkúti
70531ada5SBence Szépkúti#ifndef PMF_ASM_MACROS_S
80531ada5SBence Szépkúti#define PMF_ASM_MACROS_S
90531ada5SBence Szépkúti
100531ada5SBence Szépkúti#define PMF_TS_SIZE	8
110531ada5SBence Szépkúti
120531ada5SBence Szépkúti	/*
130531ada5SBence Szépkúti	 * This macro calculates the address of the per-cpu timestamp
140531ada5SBence Szépkúti	 * for the given service name and local timestamp id.
150531ada5SBence Szépkúti	 * Clobbers: x0 - x9
160531ada5SBence Szépkúti	 */
170531ada5SBence Szépkúti	.macro pmf_calc_timestamp_addr _name, _tid
180531ada5SBence Szépkúti	mov	x9, x30
190531ada5SBence Szépkúti	bl	plat_my_core_pos
200531ada5SBence Szépkúti	mov	x30, x9
210531ada5SBence Szépkúti	adr	x2, __PMF_PERCPU_TIMESTAMP_END__
220531ada5SBence Szépkúti	adr	x1, __PMF_TIMESTAMP_START__
230531ada5SBence Szépkúti	sub	x1, x2, x1
240531ada5SBence Szépkúti	mov	x2, #(\_tid * PMF_TS_SIZE)
250531ada5SBence Szépkúti	madd	x0, x0, x1, x2
260531ada5SBence Szépkúti	adr	x1, pmf_ts_mem_\_name
270531ada5SBence Szépkúti	add	x0, x0, x1
280531ada5SBence Szépkúti	.endm
290531ada5SBence Szépkúti
300531ada5SBence Szépkúti#endif /* PMF_ASM_MACROS_S */
31