summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-02-12 10:31:38 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-02-14 10:28:29 +0100
commit24bf11eca11947d961cc9bb5f7d92dabff169e93 (patch)
treeb28f3aa8a21df91e8feaf324613aa76460559837 /c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c
parentbsps/arm: Fix Cortex-A9 MPCore nanoseconds handler (diff)
downloadrtems-24bf11eca11947d961cc9bb5f7d92dabff169e93.tar.bz2
score: Add CPU counter support
Add a CPU counter interface to allow access to a free-running counter. It is useful to measure short time intervals. This can be used for example to enable profiling of critical low-level functions. Add two busy wait functions rtems_counter_delay_ticks() and rtems_counter_delay_nanoseconds() implemented via the CPU counter.
Diffstat (limited to 'c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c')
-rw-r--r--c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c b/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c
index 375b392cd3..54f09fa13f 100644
--- a/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c
+++ b/c/src/lib/libbsp/arm/shared/arm-a9mpcore-clock-config.c
@@ -12,6 +12,8 @@
* http://www.rtems.com/license/LICENSE.
*/
+#include <rtems/counter.h>
+
#include <bsp.h>
#include <bsp/irq.h>
#include <bsp/arm-a9mpcore-regs.h>
@@ -94,6 +96,15 @@ static void a9mpcore_clock_initialize(void)
| A9MPCORE_GT_CTRL_IRQ_EN
| A9MPCORE_GT_CTRL_COMP_EN
| A9MPCORE_GT_CTRL_TMR_EN;
+
+ rtems_counter_initialize_converter((uint32_t) periphclk);
+}
+
+CPU_Counter_ticks _CPU_Counter_read(void)
+{
+ volatile a9mpcore_gt *gt = A9MPCORE_GT;
+
+ return gt->cntrlower;
}
static void a9mpcore_clock_cleanup(void)