aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorBence Szépkúti <bence.szepkuti@arm.com>2019-11-07 12:09:24 +0100
committerBence Szépkúti <bence.szepkuti@arm.com>2019-12-17 16:08:04 +0100
commit0531ada53798d7e700410c96f1889069c35127b7 (patch)
tree5ed46d2433cc013ae0d124966e5d67ae36454c75 /include
parent9d7251918d338585f74a9122f904d1c0aafdf0f8 (diff)
downloadplatform_external_arm-trusted-firmware-0531ada53798d7e700410c96f1889069c35127b7.tar.gz
platform_external_arm-trusted-firmware-0531ada53798d7e700410c96f1889069c35127b7.tar.bz2
platform_external_arm-trusted-firmware-0531ada53798d7e700410c96f1889069c35127b7.zip
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
Diffstat (limited to 'include')
-rw-r--r--include/lib/pmf/aarch32/pmf_asm_macros.S28
-rw-r--r--include/lib/pmf/aarch64/pmf_asm_macros.S (renamed from include/lib/pmf/pmf_asm_macros.S)0
2 files changed, 28 insertions, 0 deletions
diff --git a/include/lib/pmf/aarch32/pmf_asm_macros.S b/include/lib/pmf/aarch32/pmf_asm_macros.S
new file mode 100644
index 000000000..1dbb408ca
--- /dev/null
+++ b/include/lib/pmf/aarch32/pmf_asm_macros.S
@@ -0,0 +1,28 @@
+/*
+ * 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 */
diff --git a/include/lib/pmf/pmf_asm_macros.S b/include/lib/pmf/aarch64/pmf_asm_macros.S
index 5f3e6b7ec..5f3e6b7ec 100644
--- a/include/lib/pmf/pmf_asm_macros.S
+++ b/include/lib/pmf/aarch64/pmf_asm_macros.S