From e669bfa7e66f92f65f8f4c66e7eaf4b505b435f6 Mon Sep 17 00:00:00 2001 From: edolomb Date: Wed, 10 Jan 2018 09:28:25 +0000 Subject: PORT_SUPPORTS_RT for Cortex-A5 and Cortex-A9 git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11245 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/common/ports/ARMCAx-TZ/chcore.h | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/os/common/ports/ARMCAx-TZ/chcore.h b/os/common/ports/ARMCAx-TZ/chcore.h index ca23c296f..e639ae9f4 100644 --- a/os/common/ports/ARMCAx-TZ/chcore.h +++ b/os/common/ports/ARMCAx-TZ/chcore.h @@ -39,7 +39,7 @@ /** * @brief This port supports a realtime counter. */ -#define PORT_SUPPORTS_RT FALSE +#define PORT_SUPPORTS_RT TRUE /** * @brief Natural alignment constant. @@ -508,6 +508,29 @@ static inline void port_wait_for_interrupt(void) { asm volatile ("wfi" : : : "memory"); } +/** + * @brief Returns the current value of the realtime counter. + * + * @return The realtime counter value. + */ +static inline rtcnt_t port_rt_get_counter_value(void) { + +#if ((ARM_CORE == ARM_CORE_CORTEX_A5) || (ARM_CORE == ARM_CORE_CORTEX_A9) || defined(__DOXYGEN__)) + + rtcnt_t cyc; + + __asm volatile("mrc p15, 0, %[p0], c9, c13, 0" : [p0] "=r" (cyc) :); + + return cyc; +#else +/* + * TODO develop same function for ARM_CORE_CORTEX_A8 + */ + return 0; + +#endif +} + #if CH_CFG_ST_TIMEDELTA > 0 #if PORT_USE_ALT_TIMER == FALSE #include "chcore_timer.h" -- cgit v1.2.3