forked from Imagelibrary/rtems
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:
committed by
Gedare Bloom
parent
db0e05ff6f
commit
3109857c88
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user