summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/sparc/erc32/clock/ckinit.c')
-rw-r--r--c/src/lib/libbsp/sparc/erc32/clock/ckinit.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c b/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c
index e1175909f8..9987de285b 100644
--- a/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c
+++ b/c/src/lib/libbsp/sparc/erc32/clock/ckinit.c
@@ -49,11 +49,17 @@ extern int CLOCK_SPEED;
uint32_t bsp_clock_nanoseconds_since_last_tick(void)
{
uint32_t clicks;
+ uint32_t usecs;
clicks = ERC32_MEC.Real_Time_Clock_Counter;
- return (uint32_t)
- (rtems_configuration_get_microseconds_per_tick() - clicks) * 1000;
+ if ( ERC32_Is_interrupt_pending( ERC32_INTERRUPT_REAL_TIME_CLOCK ) ) {
+ clicks = ERC32_MEC.Real_Time_Clock_Counter;
+ usecs = (2*rtems_configuration_get_microseconds_per_tick() - clicks);
+ } else {
+ usecs = (rtems_configuration_get_microseconds_per_tick() - clicks);
+ }
+ return usecs * 1000;
}
#define Clock_driver_nanoseconds_since_last_tick \