summaryrefslogtreecommitdiffstats
path: root/bsps/riscv
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-27 14:47:17 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-27 15:06:55 +0200
commitcfc95736ffe1d891e850ed2e702e467b3f10165e (patch)
tree68b0526eb23595e290dcfd5666cec6c8a0333743 /bsps/riscv
parentsamples/minimum: Use default interrupt stack size (diff)
downloadrtems-cfc95736ffe1d891e850ed2e702e467b3f10165e.tar.bz2
riscv: Rework CPU counter support
Update #3433.
Diffstat (limited to 'bsps/riscv')
-rw-r--r--bsps/riscv/riscv/clock/clockdrv.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/bsps/riscv/riscv/clock/clockdrv.c b/bsps/riscv/riscv/clock/clockdrv.c
index 29abc1bbcb..4278a10fdc 100644
--- a/bsps/riscv/riscv/clock/clockdrv.c
+++ b/bsps/riscv/riscv/clock/clockdrv.c
@@ -32,15 +32,16 @@
* SUCH DAMAGE.
*/
-#include <rtems/timecounter.h>
-#include <rtems/score/cpuimpl.h>
-#include <rtems/score/riscv-utility.h>
-
#include <bsp/fatal.h>
#include <bsp/fdt.h>
#include <bsp/irq.h>
#include <bsp/riscv.h>
+#include <rtems/sysinit.h>
+#include <rtems/timecounter.h>
+#include <rtems/score/cpuimpl.h>
+#include <rtems/score/riscv-utility.h>
+
#include <libfdt.h>
/* This is defined in dev/clock/clockimpl.h */
@@ -144,11 +145,24 @@ static void riscv_clock_initialize(void)
rtems_timecounter_install(&tc->base);
}
+volatile uint32_t _RISCV_Counter_register;
+
+static void riscv_counter_initialize(void)
+{
+ _RISCV_Counter_mutable = &riscv_clint->mtime.val_32[0];
+}
+
uint32_t _CPU_Counter_frequency( void )
{
return riscv_clock_get_timebase_frequency(bsp_fdt_get());
}
+RTEMS_SYSINIT_ITEM(
+ riscv_counter_initialize,
+ RTEMS_SYSINIT_CPU_COUNTER,
+ RTEMS_SYSINIT_ORDER_FIRST
+);
+
#define Clock_driver_support_at_tick() riscv_clock_at_tick(&riscv_clock_tc)
#define Clock_driver_support_initialize_hardware() riscv_clock_initialize()