Move pmf headers to include/lib/pmf
authordp-arm <dimitris.papastamos@arm.com>
Mon, 15 Aug 2016 09:33:08 +0000 (10:33 +0100)
committerdp-arm <dimitris.papastamos@arm.com>
Fri, 26 Aug 2016 08:41:44 +0000 (09:41 +0100)
More headers will be needed soon so better to move these to their own
directory to avoid cluttering include/lib.

Change-Id: I6a72dc5b602d6f51954cf60aadd1beb52a268670

Makefile
include/lib/pmf.h [deleted file]
include/lib/pmf/pmf.h [new file with mode: 0644]
include/lib/pmf/pmf_helpers.h [new file with mode: 0644]
include/lib/pmf_helpers.h [deleted file]

index bdfb4f042ad486d6c03a52061a371594d5e355b7..49d7cc4b365f4c76b378a7a4b4b5856022ed3ef5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -250,6 +250,7 @@ INCLUDES            +=      -Iinclude/bl1                           \
                                -Iinclude/lib/cpus/${ARCH}              \
                                -Iinclude/lib/el3_runtime               \
                                -Iinclude/lib/el3_runtime/${ARCH}       \
+                               -Iinclude/lib/pmf                       \
                                -Iinclude/lib/psci                      \
                                -Iinclude/plat/common                   \
                                -Iinclude/services                      \
diff --git a/include/lib/pmf.h b/include/lib/pmf.h
deleted file mode 100644 (file)
index 5f953b5..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * Neither the name of ARM nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef __PMF_H__
-#define __PMF_H__
-
-#include <cassert.h>
-#include <pmf_helpers.h>
-
-/*
- * Constants used for/by PMF services.
- */
-#define PMF_ARM_TIF_IMPL_ID    (0x41000000)
-#define PMF_TID_SHIFT          0
-#define PMF_TID_MASK           (0xFF << PMF_TID_SHIFT)
-#define PMF_SVC_ID_SHIFT       10
-#define PMF_SVC_ID_MASK                (0x3F << PMF_SVC_ID_SHIFT)
-#define PMF_IMPL_ID_SHIFT      24
-#define PMF_IMPL_ID_MASK       (0xFF << PMF_IMPL_ID_SHIFT)
-
-/*
- * Flags passed to PMF_REGISTER_SERVICE
- */
-#define PMF_STORE_ENABLE       (1 << 0)
-#define PMF_DUMP_ENABLE                (1 << 1)
-
-/*
- * Flags passed to PMF_GET_TIMESTAMP_XXX
- * and PMF_CAPTURE_TIMESTAMP
- */
-#define PMF_CACHE_MAINT                (1 << 0)
-#define PMF_NO_CACHE_MAINT     0
-
-/*
- * Defines for PMF SMC function ids.
- */
-#define PMF_SMC_GET_TIMESTAMP_32       0x82000010
-#define PMF_SMC_GET_TIMESTAMP_64       0xC2000010
-#define PMF_NUM_SMC_CALLS              2
-
-/*
- * The macros below are used to identify
- * PMF calls from the SMC function ID.
- */
-#define PMF_FID_MASK   0xffe0u
-#define PMF_FID_VALUE  0u
-#define is_pmf_fid(_fid)       (((_fid) & PMF_FID_MASK) == PMF_FID_VALUE)
-
-/* Following are the supported PMF service IDs */
-#define PMF_PSCI_STAT_SVC_ID   0
-
-#if ENABLE_PMF
-/*
- * Convenience macros for capturing time-stamp.
- */
-#define PMF_DECLARE_CAPTURE_TIMESTAMP(_name)                   \
-       void pmf_capture_timestamp_with_cache_maint_ ## _name(  \
-                               unsigned int tid,               \
-                               unsigned long long ts);         \
-       void pmf_capture_timestamp_ ## _name(                   \
-                               unsigned int tid,               \
-                               unsigned long long ts);
-
-#define PMF_CAPTURE_TIMESTAMP(_name, _tid, _flags)                     \
-       do {                                                            \
-               unsigned long long ts = read_cntpct_el0();              \
-               if ((_flags) & PMF_CACHE_MAINT)                         \
-                       pmf_capture_timestamp_with_cache_maint_ ## _name((_tid), ts);\
-               else                                                    \
-                       pmf_capture_timestamp_ ## _name((_tid), ts);    \
-       } while (0)
-
-#define PMF_CAPTURE_AND_GET_TIMESTAMP(_name, _tid, _flags, _tsval)     \
-       do {                                                            \
-               (_tsval) = read_cntpct_el0();                           \
-               CASSERT(sizeof(_tsval) == sizeof(unsigned long long), invalid_tsval_size);\
-               if ((_flags) & PMF_CACHE_MAINT)                         \
-                       pmf_capture_timestamp_with_cache_maint_ ## _name((_tid), (_tsval));\
-               else                                                    \
-                       pmf_capture_timestamp_ ## _name((_tid), (_tsval));\
-       } while (0)
-
-#define PMF_WRITE_TIMESTAMP(_name, _tid, _flags, _wrval)               \
-       do {                                                            \
-               CASSERT(sizeof(_wrval) == sizeof(unsigned long long), invalid_wrval_size);\
-               if ((_flags) & PMF_CACHE_MAINT)                         \
-                       pmf_capture_timestamp_with_cache_maint_ ## _name((_tid), (_wrval));\
-               else                                                    \
-                       pmf_capture_timestamp_ ## _name((_tid), (_wrval));\
-       } while (0)
-
-/*
- * Convenience macros for retrieving time-stamp.
- */
-#define PMF_DECLARE_GET_TIMESTAMP(_name)                       \
-       unsigned long long pmf_get_timestamp_by_index_ ## _name(\
-               unsigned int tid,                               \
-               unsigned int cpuid,                             \
-               unsigned int flags);                            \
-       unsigned long long pmf_get_timestamp_by_mpidr_ ## _name(\
-               unsigned int tid,                               \
-               u_register_t mpidr,                             \
-               unsigned int flags);
-
-#define PMF_GET_TIMESTAMP_BY_MPIDR(_name, _tid, _mpidr, _flags, _tsval)\
-       _tsval = pmf_get_timestamp_by_mpidr_ ## _name(_tid, _mpidr, _flags)
-
-#define PMF_GET_TIMESTAMP_BY_INDEX(_name, _tid, _cpuid, _flags, _tsval)\
-       _tsval = pmf_get_timestamp_by_index_ ## _name(_tid, _cpuid, _flags)
-
-/* Convenience macros to register a PMF service.*/
-/*
- * This macro is used to register a PMF Service. It allocates PMF memory
- * and defines default service-specific PMF functions.
- */
-#define PMF_REGISTER_SERVICE(_name, _svcid, _totalid, _flags)  \
-       PMF_ALLOCATE_TIMESTAMP_MEMORY(_name, _totalid)          \
-       PMF_DEFINE_CAPTURE_TIMESTAMP(_name, _flags)             \
-       PMF_DEFINE_GET_TIMESTAMP(_name)
-
-/*
- * This macro is used to register a PMF service, including an
- * SMC interface to that service.
- */
-#define PMF_REGISTER_SERVICE_SMC(_name, _svcid, _totalid, _flags)\
-       PMF_REGISTER_SERVICE(_name, _svcid, _totalid, _flags)   \
-       PMF_DEFINE_SERVICE_DESC(_name, PMF_ARM_TIF_IMPL_ID,     \
-                       _svcid, _totalid, NULL,                 \
-                       pmf_get_timestamp_by_mpidr_ ## _name)
-
-/*
- * This macro is used to register a PMF service that has an SMC interface
- * but provides its own service-specific PMF functions.
- */
-#define PMF_REGISTER_SERVICE_SMC_OWN(_name, _implid, _svcid, _totalid, \
-                _init, _getts)                                         \
-       PMF_DEFINE_SERVICE_DESC(_name, _implid, _svcid, _totalid,       \
-                _init, _getts)
-
-#else
-
-#define PMF_REGISTER_SERVICE(_name, _svcid, _totalid, _flags)
-#define PMF_REGISTER_SERVICE_SMC(_name, _svcid, _totalid, _flags)
-#define PMF_REGISTER_SERVICE_SMC_OWN(_name, _implid, _svcid, _totalid, \
-                               _init, _getts)
-#define PMF_DECLARE_CAPTURE_TIMESTAMP(_name)
-#define PMF_DECLARE_GET_TIMESTAMP(_name)
-#define PMF_CAPTURE_TIMESTAMP(_name, _tid, _flags)
-#define PMF_GET_TIMESTAMP_BY_MPIDR(_name, _tid, _mpidr, _flags, _tsval)
-#define PMF_GET_TIMESTAMP_BY_INDEX(_name, _tid, _cpuid, _flags, _tsval)
-
-#endif /* ENABLE_PMF */
-
-/*******************************************************************************
- * Function & variable prototypes
- ******************************************************************************/
-/* PMF common functions */
-int pmf_get_timestamp_smc(unsigned int tid,
-               u_register_t mpidr,
-               unsigned int flags,
-               unsigned long long *ts);
-int pmf_setup(void);
-uintptr_t pmf_smc_handler(unsigned int smc_fid,
-               u_register_t x1,
-               u_register_t x2,
-               u_register_t x3,
-               u_register_t x4,
-               void *cookie,
-               void *handle,
-               u_register_t flags);
-
-#endif /* __PMF_H__ */
diff --git a/include/lib/pmf/pmf.h b/include/lib/pmf/pmf.h
new file mode 100644 (file)
index 0000000..5f953b5
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+ * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of ARM nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific
+ * prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __PMF_H__
+#define __PMF_H__
+
+#include <cassert.h>
+#include <pmf_helpers.h>
+
+/*
+ * Constants used for/by PMF services.
+ */
+#define PMF_ARM_TIF_IMPL_ID    (0x41000000)
+#define PMF_TID_SHIFT          0
+#define PMF_TID_MASK           (0xFF << PMF_TID_SHIFT)
+#define PMF_SVC_ID_SHIFT       10
+#define PMF_SVC_ID_MASK                (0x3F << PMF_SVC_ID_SHIFT)
+#define PMF_IMPL_ID_SHIFT      24
+#define PMF_IMPL_ID_MASK       (0xFF << PMF_IMPL_ID_SHIFT)
+
+/*
+ * Flags passed to PMF_REGISTER_SERVICE
+ */
+#define PMF_STORE_ENABLE       (1 << 0)
+#define PMF_DUMP_ENABLE                (1 << 1)
+
+/*
+ * Flags passed to PMF_GET_TIMESTAMP_XXX
+ * and PMF_CAPTURE_TIMESTAMP
+ */
+#define PMF_CACHE_MAINT                (1 << 0)
+#define PMF_NO_CACHE_MAINT     0
+
+/*
+ * Defines for PMF SMC function ids.
+ */
+#define PMF_SMC_GET_TIMESTAMP_32       0x82000010
+#define PMF_SMC_GET_TIMESTAMP_64       0xC2000010
+#define PMF_NUM_SMC_CALLS              2
+
+/*
+ * The macros below are used to identify
+ * PMF calls from the SMC function ID.
+ */
+#define PMF_FID_MASK   0xffe0u
+#define PMF_FID_VALUE  0u
+#define is_pmf_fid(_fid)       (((_fid) & PMF_FID_MASK) == PMF_FID_VALUE)
+
+/* Following are the supported PMF service IDs */
+#define PMF_PSCI_STAT_SVC_ID   0
+
+#if ENABLE_PMF
+/*
+ * Convenience macros for capturing time-stamp.
+ */
+#define PMF_DECLARE_CAPTURE_TIMESTAMP(_name)                   \
+       void pmf_capture_timestamp_with_cache_maint_ ## _name(  \
+                               unsigned int tid,               \
+                               unsigned long long ts);         \
+       void pmf_capture_timestamp_ ## _name(                   \
+                               unsigned int tid,               \
+                               unsigned long long ts);
+
+#define PMF_CAPTURE_TIMESTAMP(_name, _tid, _flags)                     \
+       do {                                                            \
+               unsigned long long ts = read_cntpct_el0();              \
+               if ((_flags) & PMF_CACHE_MAINT)                         \
+                       pmf_capture_timestamp_with_cache_maint_ ## _name((_tid), ts);\
+               else                                                    \
+                       pmf_capture_timestamp_ ## _name((_tid), ts);    \
+       } while (0)
+
+#define PMF_CAPTURE_AND_GET_TIMESTAMP(_name, _tid, _flags, _tsval)     \
+       do {                                                            \
+               (_tsval) = read_cntpct_el0();                           \
+               CASSERT(sizeof(_tsval) == sizeof(unsigned long long), invalid_tsval_size);\
+               if ((_flags) & PMF_CACHE_MAINT)                         \
+                       pmf_capture_timestamp_with_cache_maint_ ## _name((_tid), (_tsval));\
+               else                                                    \
+                       pmf_capture_timestamp_ ## _name((_tid), (_tsval));\
+       } while (0)
+
+#define PMF_WRITE_TIMESTAMP(_name, _tid, _flags, _wrval)               \
+       do {                                                            \
+               CASSERT(sizeof(_wrval) == sizeof(unsigned long long), invalid_wrval_size);\
+               if ((_flags) & PMF_CACHE_MAINT)                         \
+                       pmf_capture_timestamp_with_cache_maint_ ## _name((_tid), (_wrval));\
+               else                                                    \
+                       pmf_capture_timestamp_ ## _name((_tid), (_wrval));\
+       } while (0)
+
+/*
+ * Convenience macros for retrieving time-stamp.
+ */
+#define PMF_DECLARE_GET_TIMESTAMP(_name)                       \
+       unsigned long long pmf_get_timestamp_by_index_ ## _name(\
+               unsigned int tid,                               \
+               unsigned int cpuid,                             \
+               unsigned int flags);                            \
+       unsigned long long pmf_get_timestamp_by_mpidr_ ## _name(\
+               unsigned int tid,                               \
+               u_register_t mpidr,                             \
+               unsigned int flags);
+
+#define PMF_GET_TIMESTAMP_BY_MPIDR(_name, _tid, _mpidr, _flags, _tsval)\
+       _tsval = pmf_get_timestamp_by_mpidr_ ## _name(_tid, _mpidr, _flags)
+
+#define PMF_GET_TIMESTAMP_BY_INDEX(_name, _tid, _cpuid, _flags, _tsval)\
+       _tsval = pmf_get_timestamp_by_index_ ## _name(_tid, _cpuid, _flags)
+
+/* Convenience macros to register a PMF service.*/
+/*
+ * This macro is used to register a PMF Service. It allocates PMF memory
+ * and defines default service-specific PMF functions.
+ */
+#define PMF_REGISTER_SERVICE(_name, _svcid, _totalid, _flags)  \
+       PMF_ALLOCATE_TIMESTAMP_MEMORY(_name, _totalid)          \
+       PMF_DEFINE_CAPTURE_TIMESTAMP(_name, _flags)             \
+       PMF_DEFINE_GET_TIMESTAMP(_name)
+
+/*
+ * This macro is used to register a PMF service, including an
+ * SMC interface to that service.
+ */
+#define PMF_REGISTER_SERVICE_SMC(_name, _svcid, _totalid, _flags)\
+       PMF_REGISTER_SERVICE(_name, _svcid, _totalid, _flags)   \
+       PMF_DEFINE_SERVICE_DESC(_name, PMF_ARM_TIF_IMPL_ID,     \
+                       _svcid, _totalid, NULL,                 \
+                       pmf_get_timestamp_by_mpidr_ ## _name)
+
+/*
+ * This macro is used to register a PMF service that has an SMC interface
+ * but provides its own service-specific PMF functions.
+ */
+#define PMF_REGISTER_SERVICE_SMC_OWN(_name, _implid, _svcid, _totalid, \
+                _init, _getts)                                         \
+       PMF_DEFINE_SERVICE_DESC(_name, _implid, _svcid, _totalid,       \
+                _init, _getts)
+
+#else
+
+#define PMF_REGISTER_SERVICE(_name, _svcid, _totalid, _flags)
+#define PMF_REGISTER_SERVICE_SMC(_name, _svcid, _totalid, _flags)
+#define PMF_REGISTER_SERVICE_SMC_OWN(_name, _implid, _svcid, _totalid, \
+                               _init, _getts)
+#define PMF_DECLARE_CAPTURE_TIMESTAMP(_name)
+#define PMF_DECLARE_GET_TIMESTAMP(_name)
+#define PMF_CAPTURE_TIMESTAMP(_name, _tid, _flags)
+#define PMF_GET_TIMESTAMP_BY_MPIDR(_name, _tid, _mpidr, _flags, _tsval)
+#define PMF_GET_TIMESTAMP_BY_INDEX(_name, _tid, _cpuid, _flags, _tsval)
+
+#endif /* ENABLE_PMF */
+
+/*******************************************************************************
+ * Function & variable prototypes
+ ******************************************************************************/
+/* PMF common functions */
+int pmf_get_timestamp_smc(unsigned int tid,
+               u_register_t mpidr,
+               unsigned int flags,
+               unsigned long long *ts);
+int pmf_setup(void);
+uintptr_t pmf_smc_handler(unsigned int smc_fid,
+               u_register_t x1,
+               u_register_t x2,
+               u_register_t x3,
+               u_register_t x4,
+               void *cookie,
+               void *handle,
+               u_register_t flags);
+
+#endif /* __PMF_H__ */
diff --git a/include/lib/pmf/pmf_helpers.h b/include/lib/pmf/pmf_helpers.h
new file mode 100644 (file)
index 0000000..1b8c507
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of ARM nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific
+ * prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __PMF_HELPERS_H__
+#define __PMF_HELPERS_H__
+
+#include <arch_helpers.h>
+#include <assert.h>
+#include <platform.h>
+#include <pmf.h>
+#include <stdint.h>
+#include <stddef.h>
+
+/*
+ * Prototype for PMF service functions.
+ */
+typedef int (*pmf_svc_init_t)(void);
+typedef unsigned long long (*pmf_svc_get_ts_t)(unsigned int tid,
+                u_register_t mpidr,
+                unsigned int flags);
+
+/*
+ * This is the definition of PMF service desc.
+ */
+typedef struct pmf_svc_desc {
+       /* Structure version information */
+       param_header_t h;
+
+       /* Name of the PMF service */
+       const char *name;
+
+       /* PMF service config: Implementer id, Service id and total id*/
+       unsigned int svc_config;
+
+       /* PMF service initialization handler */
+       pmf_svc_init_t init;
+
+       /* PMF service time-stamp retrieval handler */
+       pmf_svc_get_ts_t get_ts;
+} pmf_svc_desc_t;
+
+/*
+ * Convenience macro to allocate memory for a PMF service.
+ */
+#define PMF_ALLOCATE_TIMESTAMP_MEMORY(_name, _total_id)                        \
+       static unsigned long long pmf_ts_mem_ ## _name[_total_id]       \
+       __section("pmf_timestamp_array") __used;
+
+/*
+ * Convenience macro to validate tid index for the given TS array.
+ */
+#define PMF_VALIDATE_TID(_name, _tid)  \
+       assert((_tid & PMF_TID_MASK) < (ARRAY_SIZE(pmf_ts_mem_ ## _name)))
+
+/*
+ * Convenience macros for capturing time-stamp.
+ */
+#define PMF_DEFINE_CAPTURE_TIMESTAMP(_name, _flags)                    \
+       void pmf_capture_timestamp_ ## _name(                           \
+                       unsigned int tid,                               \
+                       unsigned long long ts)                          \
+       {                                                               \
+               CASSERT(_flags, select_proper_config);                  \
+               PMF_VALIDATE_TID(_name, tid);                           \
+               uintptr_t base_addr = (uintptr_t) pmf_ts_mem_ ## _name; \
+               if ((_flags) & PMF_STORE_ENABLE)                        \
+                       __pmf_store_timestamp(base_addr, tid, ts);      \
+               if ((_flags) & PMF_DUMP_ENABLE)                         \
+                       __pmf_dump_timestamp(tid, ts);                  \
+       }                                                               \
+       void pmf_capture_timestamp_with_cache_maint_ ## _name(          \
+                       unsigned int tid,                               \
+                       unsigned long long ts)                          \
+       {                                                               \
+               CASSERT(_flags, select_proper_config);                  \
+               PMF_VALIDATE_TID(_name, tid);                           \
+               uintptr_t base_addr = (uintptr_t) pmf_ts_mem_ ## _name; \
+               if ((_flags) & PMF_STORE_ENABLE)                        \
+                       __pmf_store_timestamp_with_cache_maint(base_addr, tid, ts);\
+               if ((_flags) & PMF_DUMP_ENABLE)                         \
+                       __pmf_dump_timestamp(tid, ts);                  \
+       }
+
+/*
+ * Convenience macros for retrieving time-stamp.
+ */
+#define PMF_DEFINE_GET_TIMESTAMP(_name)                                        \
+       unsigned long long pmf_get_timestamp_by_index_ ## _name(        \
+               unsigned int tid, unsigned int cpuid, unsigned int flags)\
+       {                                                               \
+               PMF_VALIDATE_TID(_name, tid);                           \
+               uintptr_t base_addr = (uintptr_t) pmf_ts_mem_ ## _name; \
+               return __pmf_get_timestamp(base_addr, tid, cpuid, flags);\
+       }                                                               \
+       unsigned long long pmf_get_timestamp_by_mpidr_ ## _name(        \
+               unsigned int tid, u_register_t mpidr, unsigned int flags)\
+       {                                                               \
+               PMF_VALIDATE_TID(_name, tid);                           \
+               uintptr_t base_addr = (uintptr_t) pmf_ts_mem_ ## _name; \
+               return __pmf_get_timestamp(base_addr, tid,              \
+                       plat_core_pos_by_mpidr(mpidr), flags);          \
+       }
+
+/*
+ * Convenience macro to register a PMF service.
+ * This is needed for services that require SMC handling.
+ */
+#define PMF_DEFINE_SERVICE_DESC(_name, _implid, _svcid, _totalid,      \
+               _init, _getts_by_mpidr)                                 \
+       static const pmf_svc_desc_t __pmf_desc_ ## _name                \
+       __section("pmf_svc_descs") __used = {                           \
+               .h.type = PARAM_EP,                                     \
+               .h.version = VERSION_1,                                 \
+               .h.size = sizeof(pmf_svc_desc_t),                       \
+               .h.attr = 0,                                            \
+               .name = #_name,                                         \
+               .svc_config = ((((_implid) << PMF_IMPL_ID_SHIFT) &      \
+                                               PMF_IMPL_ID_MASK) |     \
+                               (((_svcid) << PMF_SVC_ID_SHIFT) &       \
+                                               PMF_SVC_ID_MASK) |      \
+                               (((_totalid) << PMF_TID_SHIFT) &        \
+                                               PMF_TID_MASK)),         \
+               .init = _init,                                          \
+               .get_ts = _getts_by_mpidr                               \
+       };
+
+/* PMF internal functions */
+void __pmf_dump_timestamp(unsigned int tid, unsigned long long ts);
+void __pmf_store_timestamp(uintptr_t base_addr,
+               unsigned int tid,
+               unsigned long long ts);
+void __pmf_store_timestamp_with_cache_maint(uintptr_t base_addr,
+               unsigned int tid,
+               unsigned long long ts);
+unsigned long long __pmf_get_timestamp(uintptr_t base_addr,
+               unsigned int tid,
+               unsigned int cpuid,
+               unsigned int flags);
+#endif /* __PMF_HELPERS_H__ */
diff --git a/include/lib/pmf_helpers.h b/include/lib/pmf_helpers.h
deleted file mode 100644 (file)
index 1b8c507..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * Neither the name of ARM nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef __PMF_HELPERS_H__
-#define __PMF_HELPERS_H__
-
-#include <arch_helpers.h>
-#include <assert.h>
-#include <platform.h>
-#include <pmf.h>
-#include <stdint.h>
-#include <stddef.h>
-
-/*
- * Prototype for PMF service functions.
- */
-typedef int (*pmf_svc_init_t)(void);
-typedef unsigned long long (*pmf_svc_get_ts_t)(unsigned int tid,
-                u_register_t mpidr,
-                unsigned int flags);
-
-/*
- * This is the definition of PMF service desc.
- */
-typedef struct pmf_svc_desc {
-       /* Structure version information */
-       param_header_t h;
-
-       /* Name of the PMF service */
-       const char *name;
-
-       /* PMF service config: Implementer id, Service id and total id*/
-       unsigned int svc_config;
-
-       /* PMF service initialization handler */
-       pmf_svc_init_t init;
-
-       /* PMF service time-stamp retrieval handler */
-       pmf_svc_get_ts_t get_ts;
-} pmf_svc_desc_t;
-
-/*
- * Convenience macro to allocate memory for a PMF service.
- */
-#define PMF_ALLOCATE_TIMESTAMP_MEMORY(_name, _total_id)                        \
-       static unsigned long long pmf_ts_mem_ ## _name[_total_id]       \
-       __section("pmf_timestamp_array") __used;
-
-/*
- * Convenience macro to validate tid index for the given TS array.
- */
-#define PMF_VALIDATE_TID(_name, _tid)  \
-       assert((_tid & PMF_TID_MASK) < (ARRAY_SIZE(pmf_ts_mem_ ## _name)))
-
-/*
- * Convenience macros for capturing time-stamp.
- */
-#define PMF_DEFINE_CAPTURE_TIMESTAMP(_name, _flags)                    \
-       void pmf_capture_timestamp_ ## _name(                           \
-                       unsigned int tid,                               \
-                       unsigned long long ts)                          \
-       {                                                               \
-               CASSERT(_flags, select_proper_config);                  \
-               PMF_VALIDATE_TID(_name, tid);                           \
-               uintptr_t base_addr = (uintptr_t) pmf_ts_mem_ ## _name; \
-               if ((_flags) & PMF_STORE_ENABLE)                        \
-                       __pmf_store_timestamp(base_addr, tid, ts);      \
-               if ((_flags) & PMF_DUMP_ENABLE)                         \
-                       __pmf_dump_timestamp(tid, ts);                  \
-       }                                                               \
-       void pmf_capture_timestamp_with_cache_maint_ ## _name(          \
-                       unsigned int tid,                               \
-                       unsigned long long ts)                          \
-       {                                                               \
-               CASSERT(_flags, select_proper_config);                  \
-               PMF_VALIDATE_TID(_name, tid);                           \
-               uintptr_t base_addr = (uintptr_t) pmf_ts_mem_ ## _name; \
-               if ((_flags) & PMF_STORE_ENABLE)                        \
-                       __pmf_store_timestamp_with_cache_maint(base_addr, tid, ts);\
-               if ((_flags) & PMF_DUMP_ENABLE)                         \
-                       __pmf_dump_timestamp(tid, ts);                  \
-       }
-
-/*
- * Convenience macros for retrieving time-stamp.
- */
-#define PMF_DEFINE_GET_TIMESTAMP(_name)                                        \
-       unsigned long long pmf_get_timestamp_by_index_ ## _name(        \
-               unsigned int tid, unsigned int cpuid, unsigned int flags)\
-       {                                                               \
-               PMF_VALIDATE_TID(_name, tid);                           \
-               uintptr_t base_addr = (uintptr_t) pmf_ts_mem_ ## _name; \
-               return __pmf_get_timestamp(base_addr, tid, cpuid, flags);\
-       }                                                               \
-       unsigned long long pmf_get_timestamp_by_mpidr_ ## _name(        \
-               unsigned int tid, u_register_t mpidr, unsigned int flags)\
-       {                                                               \
-               PMF_VALIDATE_TID(_name, tid);                           \
-               uintptr_t base_addr = (uintptr_t) pmf_ts_mem_ ## _name; \
-               return __pmf_get_timestamp(base_addr, tid,              \
-                       plat_core_pos_by_mpidr(mpidr), flags);          \
-       }
-
-/*
- * Convenience macro to register a PMF service.
- * This is needed for services that require SMC handling.
- */
-#define PMF_DEFINE_SERVICE_DESC(_name, _implid, _svcid, _totalid,      \
-               _init, _getts_by_mpidr)                                 \
-       static const pmf_svc_desc_t __pmf_desc_ ## _name                \
-       __section("pmf_svc_descs") __used = {                           \
-               .h.type = PARAM_EP,                                     \
-               .h.version = VERSION_1,                                 \
-               .h.size = sizeof(pmf_svc_desc_t),                       \
-               .h.attr = 0,                                            \
-               .name = #_name,                                         \
-               .svc_config = ((((_implid) << PMF_IMPL_ID_SHIFT) &      \
-                                               PMF_IMPL_ID_MASK) |     \
-                               (((_svcid) << PMF_SVC_ID_SHIFT) &       \
-                                               PMF_SVC_ID_MASK) |      \
-                               (((_totalid) << PMF_TID_SHIFT) &        \
-                                               PMF_TID_MASK)),         \
-               .init = _init,                                          \
-               .get_ts = _getts_by_mpidr                               \
-       };
-
-/* PMF internal functions */
-void __pmf_dump_timestamp(unsigned int tid, unsigned long long ts);
-void __pmf_store_timestamp(uintptr_t base_addr,
-               unsigned int tid,
-               unsigned long long ts);
-void __pmf_store_timestamp_with_cache_maint(uintptr_t base_addr,
-               unsigned int tid,
-               unsigned long long ts);
-unsigned long long __pmf_get_timestamp(uintptr_t base_addr,
-               unsigned int tid,
-               unsigned int cpuid,
-               unsigned int flags);
-#endif /* __PMF_HELPERS_H__ */