diff --git a/GorgonMeducer.perf_counter.pdsc b/GorgonMeducer.perf_counter.pdsc
index 54b5c00..842b0f9 100644
--- a/GorgonMeducer.perf_counter.pdsc
+++ b/GorgonMeducer.perf_counter.pdsc
@@ -297,6 +297,10 @@
+
+
+#define __RTE_PERFC_PORTING_USER_DEFINED__ 1
+
diff --git a/systick_wrapper_gnu.s b/systick_wrapper_gnu.s
index 54182ce..b2e0ac6 100644
--- a/systick_wrapper_gnu.s
+++ b/systick_wrapper_gnu.s
@@ -14,6 +14,11 @@
;* limitations under the License. *
;* *
;****************************************************************************/
+#if defined(_RTE_)
+# include "RTE_Components.h"
+#endif
+
+#if !defined(__RTE_PERFC_PORTING_USER_DEFINED__)
#if !__PERFC_CFG_DISABLE_DEFAULT_SYSTICK_PORTING__
.syntax unified
@@ -43,4 +48,6 @@ $Sub$$SysTick_Handler:
__ensure_systick_wrapper:
bx lr
+#endif
+
#endif
\ No newline at end of file
diff --git a/template/perfc_port_user.c b/template/perfc_port_user.c
index 5f4a64a..8111c85 100644
--- a/template/perfc_port_user.c
+++ b/template/perfc_port_user.c
@@ -44,6 +44,24 @@
/*============================ GLOBAL VARIABLES ==============================*/
/*============================ LOCAL VARIABLES ===============================*/
/*============================ PROTOTYPES ====================================*/
+/* low level interface for porting */
+extern
+uint32_t perfc_port_get_system_freq(void);
+extern
+int64_t perfc_port_get_system_timer_top(void);
+extern
+bool perfc_port_is_system_timer_ovf_pending(void);
+extern
+void perfc_port_init_system_timer(bool bTimerOccupied);
+extern
+int64_t perfc_port_get_system_timer_elapsed(void);
+extern
+void perfc_port_clear_system_timer_ovf_pending(void);
+extern
+void perfc_port_stop_system_timer_counting(void);
+extern
+void perfc_port_clear_system_timer_counter(void);
+
/*============================ IMPLEMENTATION ================================*/
/*============================ INCLUDES ======================================*/