diff options
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libbsp/arm/shared/armv7m/clock/armv7m-clock-config.c | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/shared/armv7m/startup/armv7m-cpucounter.c | 8 |
2 files changed, 6 insertions, 10 deletions
diff --git a/c/src/lib/libbsp/arm/shared/armv7m/clock/armv7m-clock-config.c b/c/src/lib/libbsp/arm/shared/armv7m/clock/armv7m-clock-config.c index 16a6b83262..afef7daa09 100644 --- a/c/src/lib/libbsp/arm/shared/armv7m/clock/armv7m-clock-config.c +++ b/c/src/lib/libbsp/arm/shared/armv7m/clock/armv7m-clock-config.c @@ -123,7 +123,6 @@ static void _ARMV7M_Systick_handler_install(void) static void _ARMV7M_Systick_initialize(void) { - volatile ARMV7M_DWT *dwt = _ARMV7M_DWT; volatile ARMV7M_Systick *systick = _ARMV7M_Systick; #ifdef BSP_ARMV7M_SYSTICK_FREQUENCY uint64_t freq = BSP_ARMV7M_SYSTICK_FREQUENCY; @@ -132,7 +131,7 @@ static void _ARMV7M_Systick_initialize(void) #endif uint64_t us_per_tick = rtems_configuration_get_microseconds_per_tick(); uint64_t interval = (freq * us_per_tick) / 1000000ULL; - uint32_t dwt_ctrl; + bool cyccnt_enabled; systick->rvr = (uint32_t) interval; systick->cvr = 0; @@ -140,9 +139,8 @@ static void _ARMV7M_Systick_initialize(void) | ARMV7M_SYSTICK_CSR_TICKINT | ARMV7M_SYSTICK_CSR_CLKSOURCE; - dwt_ctrl = dwt->ctrl; - if ((dwt_ctrl & ARMV7M_DWT_CTRL_NOCYCCNT) == 0) { - dwt->ctrl = dwt_ctrl | ARMV7M_DWT_CTRL_CYCCNTENA; + cyccnt_enabled = _ARMV7M_DWT_Enable_CYCCNT(); + if (cyccnt_enabled) { _ARMV7M_TC.base.tc.tc_get_timecount = _ARMV7M_TC_dwt_get_timecount; _ARMV7M_TC.base.tc.tc_counter_mask = 0xffffffff; _ARMV7M_TC.base.tc.tc_frequency = freq; diff --git a/c/src/lib/libbsp/arm/shared/armv7m/startup/armv7m-cpucounter.c b/c/src/lib/libbsp/arm/shared/armv7m/startup/armv7m-cpucounter.c index 16e971f85a..7d2581879f 100644 --- a/c/src/lib/libbsp/arm/shared/armv7m/startup/armv7m-cpucounter.c +++ b/c/src/lib/libbsp/arm/shared/armv7m/startup/armv7m-cpucounter.c @@ -28,12 +28,11 @@ CPU_Counter_ticks _CPU_Counter_read(void) static void armv7m_cpu_counter_initialize(void) { - volatile ARMV7M_DWT *dwt = _ARMV7M_DWT; - uint32_t dwt_ctrl; + bool cyccnt_enabled; - dwt_ctrl = dwt->ctrl; + cyccnt_enabled = _ARMV7M_DWT_Enable_CYCCNT(); - if ((dwt_ctrl & ARMV7M_DWT_CTRL_NOCYCCNT) == 0) { + if (cyccnt_enabled) { #ifdef BSP_ARMV7M_SYSTICK_FREQUENCY uint64_t freq = BSP_ARMV7M_SYSTICK_FREQUENCY; #else @@ -41,7 +40,6 @@ static void armv7m_cpu_counter_initialize(void) uint64_t freq = ARMV7M_SYSTICK_CALIB_TENMS_GET(systick->calib) * 100ULL; #endif - dwt->ctrl = dwt_ctrl | ARMV7M_DWT_CTRL_CYCCNTENA; rtems_counter_initialize_converter(freq); } else { bsp_fatal(BSP_ARM_ARMV7M_CPU_COUNTER_INIT); |