summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-04-09 08:06:01 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-04-09 08:06:46 +0200
commit222570a61b3a75635e47708f8b530fb6bc988cf6 (patch)
treeb4e6679f3158a8a88289b9f65cccf50e5aa5dbe2
parentRemove superfluous run-time check (diff)
downloadrtems-222570a61b3a75635e47708f8b530fb6bc988cf6.tar.bz2
bsps/arm: Optimize ARMv7-M CPU counter
Update #3456.
-rw-r--r--bsps/arm/include/bsp/clock-armv7m.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/bsps/arm/include/bsp/clock-armv7m.h b/bsps/arm/include/bsp/clock-armv7m.h
index c570153c33..317502734e 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;