blob: 5e19e62f708c3fb242b3b93bddcc540aec89a500 [file] [log] [blame]
dp-arma97bd892016-08-15 10:35:54 +01001/*
Antonio Nino Diazf0b14cf2018-10-04 09:55:23 +01002 * Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved.
dp-arma97bd892016-08-15 10:35:54 +01003 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
dp-arma97bd892016-08-15 10:35:54 +01005 */
6
7#ifndef __PMF_ASM_MACROS_S__
8#define __PMF_ASM_MACROS_S__
9
10#define PMF_TS_SIZE 8
11
12 /*
dp-armb28965e2016-09-08 11:51:49 +010013 * This macro calculates the address of the per-cpu timestamp
14 * for the given service name and local timestamp id.
dp-arma97bd892016-08-15 10:35:54 +010015 * Clobbers: x0 - x9
16 */
Antonio Nino Diazf0b14cf2018-10-04 09:55:23 +010017 .macro pmf_calc_timestamp_addr _name, _tid
dp-arma97bd892016-08-15 10:35:54 +010018 mov x9, x30
19 bl plat_my_core_pos
20 mov x30, x9
Soby Mathewfcaf1bd2018-10-12 16:40:28 +010021 adr x2, __PMF_PERCPU_TIMESTAMP_END__
22 adr x1, __PMF_TIMESTAMP_START__
23 sub x1, x2, x1
dp-arma97bd892016-08-15 10:35:54 +010024 mov x2, #(\_tid * PMF_TS_SIZE)
25 madd x0, x0, x1, x2
Soby Mathewfcaf1bd2018-10-12 16:40:28 +010026 adr x1, pmf_ts_mem_\_name
dp-arma97bd892016-08-15 10:35:54 +010027 add x0, x0, x1
28 .endm
29
30#endif /* __PMF_ASM_MACROS_S__ */