bsps: Add and use CLOCK_DRIVER_ISRS_PER_TICK_VALUE

pc386 set CLOCK_DRIVER_ISRS_PER_TICK to a
string rather than a numeric value. Add
CLOCK_DRIVER_ISRS_PER_TICK_VALUE and
other clean up on the clock driver.
This commit is contained in:
Joel Sherrill
2013-08-26 15:26:50 -04:00
committed by Gedare Bloom
parent db0e05ff6f
commit 3109857c88
2 changed files with 5 additions and 18 deletions

View File

@@ -57,12 +57,11 @@ uint64_t pc586_nanoseconds_per_tick;
uint64_t pc586_tsc_at_tick; uint64_t pc586_tsc_at_tick;
/* this driver may need to count ISRs per tick */ /* this driver may need to count ISRs per tick */
#define CLOCK_DRIVER_ISRS_PER_TICK pc386_isrs_per_tick #define CLOCK_DRIVER_ISRS_PER_TICK 1
#define CLOCK_DRIVER_ISRS_PER_TICK_VALUE pc386_isrs_per_tick
/* if so, the driver may use the count in Clock_driver_support_at_tick */ /* The driver uses the count in Clock_driver_support_at_tick */
#ifdef CLOCK_DRIVER_ISRS_PER_TICK
extern volatile uint32_t Clock_driver_isrs; extern volatile uint32_t Clock_driver_isrs;
#endif
#define READ_8254( _lsb, _msb ) \ #define READ_8254( _lsb, _msb ) \
do { outport_byte(TIMER_MODE, TIMER_SEL0|TIMER_LATCH); \ do { outport_byte(TIMER_MODE, TIMER_SEL0|TIMER_LATCH); \
@@ -83,18 +82,7 @@ uint32_t (*Clock_driver_nanoseconds_since_last_tick)(void) = NULL;
*/ */
static void Clock_driver_support_at_tick_tsc(void) static void Clock_driver_support_at_tick_tsc(void)
{ {
#ifdef CLOCK_DRIVER_ISRS_PER_TICK
/*
* The driver is multiple ISRs per clock tick.
*/
if (!Clock_driver_isrs)
pc586_tsc_at_tick = rdtsc();
#else
/*
* The driver is one ISR per clock tick.
*/
pc586_tsc_at_tick = rdtsc(); pc586_tsc_at_tick = rdtsc();
#endif
} }
static void Clock_driver_support_at_tick_empty(void) static void Clock_driver_support_at_tick_empty(void)
@@ -106,8 +94,6 @@ static void Clock_driver_support_at_tick_empty(void)
_old = NULL; \ _old = NULL; \
} while(0) } while(0)
extern volatile uint32_t Clock_driver_isrs;
/* /*
* Get nanoseconds using Pentium-compatible TSC register * Get nanoseconds using Pentium-compatible TSC register
*/ */
@@ -271,6 +257,7 @@ static void clockOff(void)
outport_byte(TIMER_CNTR0, 0); outport_byte(TIMER_CNTR0, 0);
} /* Clock_exit */ } /* Clock_exit */
#define Clock_driver_support_shutdown_hardware() clockOff()
bool Clock_isr_enabled = false; bool Clock_isr_enabled = false;
static void Clock_isr_handler(void *param) static void Clock_isr_handler(void *param)

View File

@@ -183,7 +183,7 @@ rtems_device_driver Clock_initialize(
* If we are counting ISRs per tick, then initialize the counter. * If we are counting ISRs per tick, then initialize the counter.
*/ */
#if CLOCK_DRIVER_ISRS_PER_TICK #if CLOCK_DRIVER_ISRS_PER_TICK
Clock_driver_isrs = CLOCK_DRIVER_ISRS_PER_TICK; Clock_driver_isrs = CLOCK_DRIVER_ISRS_PER_TICK_VALUE;
#endif #endif
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;