[rtems commit] bsps/arm: Optimize ARMv7-M CPU counter

Sebastian Huber sebh at rtems.org
Tue Apr 9 06:11:37 UTC 2019


Module:    rtems
Branch:    master
Commit:    222570a61b3a75635e47708f8b530fb6bc988cf6
Changeset: http://git.rtems.org/rtems/commit/?id=222570a61b3a75635e47708f8b530fb6bc988cf6

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Apr  9 08:06:01 2019 +0200

bsps/arm: Optimize ARMv7-M CPU counter

Update #3456.

---

 bsps/arm/include/bsp/clock-armv7m.h | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/bsps/arm/include/bsp/clock-armv7m.h b/bsps/arm/include/bsp/clock-armv7m.h
index c570153..3175027 100644
--- a/bsps/arm/include/bsp/clock-armv7m.h
+++ b/bsps/arm/include/bsp/clock-armv7m.h
@@ -50,15 +50,16 @@ static uint32_t _ARMV7M_Clock_counter(ARMV7M_Timecounter *tc)
   uint32_t interval;
   uint32_t counter;
   uint32_t ticks;
-
-  systick = _ARMV7M_Systick;
-  interval = systick->rvr;
+  uint32_t csr;
 
   rtems_interrupt_disable(level);
+  systick = _ARMV7M_Systick;
   counter = systick->cvr;
+  csr = systick->csr;
+  interval = systick->rvr;
   ticks = tc->ticks;
 
-  if ((systick->csr & ARMV7M_SYSTICK_CSR_COUNTFLAG) != 0) {
+  if (RTEMS_PREDICT_FALSE((csr & ARMV7M_SYSTICK_CSR_COUNTFLAG) != 0)) {
     counter = systick->cvr;
     ticks += interval;
     tc->ticks = ticks;




More information about the vc mailing list