diff options
Diffstat (limited to 'c/src/lib/libbsp/sparc/erc32/clock/ckinit.c')
-rw-r--r-- | c/src/lib/libbsp/sparc/erc32/clock/ckinit.c | 10 |
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 \ |