<div><br></div><div><br><div class="gmail_quote"><div dir="ltr">On Fri, 6 Jul 2018 at 1:28 pm, Sebastian Huber <<a href="mailto:sebh@rtems.org">sebh@rtems.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Module:    rtems<br>
Branch:    master<br>
Commit:    dd32e2b2d009de525c1a4ad488899fab355d8fed<br>
Changeset: <a href="http://git.rtems.org/rtems/commit/?id=dd32e2b2d009de525c1a4ad488899fab355d8fed" rel="noreferrer" target="_blank">http://git.rtems.org/rtems/commit/?id=dd32e2b2d009de525c1a4ad488899fab355d8fed</a><br>
<br>
Author:    Sebastian Huber <<a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brains.de</a>><br>
Date:      Fri Jul  6 08:12:40 2018 +0200<br>
<br>
riscv: Implement CPU counter<br>
<br>
Update #3433.<br>
<br>
---<br>
<br>
 bsps/riscv/riscv/clock/clockdrv.c                | 12 ++----------<br>
 cpukit/score/cpu/riscv/Makefile.am               |  1 -<br>
 cpukit/score/cpu/riscv/include/rtems/score/cpu.h | 17 ++++++++++++++++-<br>
 3 files changed, 18 insertions(+), 12 deletions(-)<br>
<br>
diff --git a/bsps/riscv/riscv/clock/clockdrv.c b/bsps/riscv/riscv/clock/clockdrv.c<br>
index 6a5d2db..d2d7a40 100644<br>
--- a/bsps/riscv/riscv/clock/clockdrv.c<br>
+++ b/bsps/riscv/riscv/clock/clockdrv.c<br>
@@ -87,11 +87,6 @@ static uint32_t riscv_clock_get_timecount(struct timecounter *tc)<br>
   return clint->mtime.val_32[0];<br>
 }<br>
<br>
-CPU_Counter_ticks _CPU_Counter_read(void)<br>
-{<br>
-  return riscv_clock_get_timecount(NULL);<br>
-}<br>
-<br>
 static uint32_t riscv_clock_get_timebase_frequency(const void *fdt)<br>
 {<br>
   int node;<br>
@@ -131,12 +126,9 @@ static void riscv_clock_initialize(void)<br>
   rtems_timecounter_install(&riscv_clock_tc);<br>
 }<br>
<br>
-CPU_Counter_ticks _CPU_Counter_difference(<br>
-  CPU_Counter_ticks second,<br>
-  CPU_Counter_ticks first<br>
-)<br>
+uint32_t _CPU_Counter_frequency( void )<br>
 {<br>
-  return second - first;<br>
+  return riscv_clock_get_timebase_frequency(bsp_fdt_get());<br>
 }<br>
<br>
 #define Clock_driver_support_at_tick() riscv_clock_at_tick()<br>
diff --git a/cpukit/score/cpu/riscv/Makefile.am b/cpukit/score/cpu/riscv/Makefile.am<br>
index e771468..3630c03 100644<br>
--- a/cpukit/score/cpu/riscv/Makefile.am<br>
+++ b/cpukit/score/cpu/riscv/Makefile.am<br>
@@ -2,7 +2,6 @@ include $(top_srcdir)/automake/<a href="http://compile.am" rel="noreferrer" target="_blank">compile.am</a><br>
 noinst_LIBRARIES = libscorecpu.a<br>
 libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS)<br>
 libscorecpu_a_SOURCES  = cpu.c<br>
-libscorecpu_a_SOURCES += ../no_cpu/cpucounterfrequency.c<br>
 libscorecpu_a_SOURCES += riscv-exception-handler.S<br>
 libscorecpu_a_SOURCES += riscv-exception-default.c<br>
 libscorecpu_a_SOURCES += riscv-exception-frame-print.c<br>
diff --git a/cpukit/score/cpu/riscv/include/rtems/score/cpu.h b/cpukit/score/cpu/riscv/include/rtems/score/cpu.h<br>
index e79ce25..f84395c 100644<br>
--- a/cpukit/score/cpu/riscv/include/rtems/score/cpu.h<br>
+++ b/cpukit/score/cpu/riscv/include/rtems/score/cpu.h<br>
@@ -370,7 +370,22 @@ typedef uint32_t CPU_Counter_ticks;<br>
<br>
 uint32_t _CPU_Counter_frequency( void );<br>
<br>
-CPU_Counter_ticks _CPU_Counter_read( void );<br>
+static inline CPU_Counter_ticks _CPU_Counter_read( void )<br>
+{<br>
+  unsigned long ticks;<br>
+<br>
+  __asm__ volatile ( "rdtime %0" : "=&r" ( ticks ) );<br>
+</blockquote><div dir="auto">Shouldn’t this be “rdcycle” instead of “rdtime”? </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
+  return (uint32_t) ticks;<br>
+}<br>
+<br>
+static inline CPU_Counter_ticks _CPU_Counter_difference(<br>
+  CPU_Counter_ticks second,<br>
+  CPU_Counter_ticks first<br>
+)<br>
+{<br>
+  return second - first;<br>
+}<br>
<br>
 #ifdef RTEMS_SMP<br>
<br>
<br>
_______________________________________________<br>
vc mailing list<br>
<a href="mailto:vc@rtems.org" target="_blank">vc@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/vc" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/vc</a><br>
</blockquote></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Hesham</div>