diff --git a/c/src/lib/libbsp/shared/ChangeLog b/c/src/lib/libbsp/shared/ChangeLog index 23504f6e1a..1ac7dca1fa 100644 --- a/c/src/lib/libbsp/shared/ChangeLog +++ b/c/src/lib/libbsp/shared/ChangeLog @@ -1,3 +1,10 @@ +2008-10-13 Joel Sherrill + + * clock_driver_simidle.c: Ensure ISR nest level and Thread Dispatch + disable level are in the same state they would be in a true ISR. This + ensures that all of the clock tick handling is as similar as possible + in this limited environment. + 2008-10-02 Joel Sherrill * include/tm27.h: Use shared tm27.h stub. diff --git a/c/src/lib/libbsp/shared/clock_driver_simidle.c b/c/src/lib/libbsp/shared/clock_driver_simidle.c index 6d174bff65..39a82c08ff 100644 --- a/c/src/lib/libbsp/shared/clock_driver_simidle.c +++ b/c/src/lib/libbsp/shared/clock_driver_simidle.c @@ -7,7 +7,9 @@ * $Id$ */ +#define __RTEMS_VIOLATE_KERNEL_VISIBILITY__ #include +#include #define CLOCK_VECTOR 0 @@ -40,8 +42,13 @@ Thread clock_driver_sim_idle_body( ) { for( ; ; ) { - if ( clock_driver_enabled ) - rtems_clock_tick(); + if ( clock_driver_enabled ) { + _Thread_Disable_dispatch(); + _ISR_Nest_level++; + rtems_clock_tick(); + _ISR_Nest_level--; + _Thread_Enable_dispatch(); + } } return 0; /* to avoid warning */ }