summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/i386/pc386/clock/ckinit.c
diff options
context:
space:
mode:
authorJennifer Averett <Jennifer.Averett@OARcorp.com>2011-08-01 13:41:37 +0000
committerJennifer Averett <Jennifer.Averett@OARcorp.com>2011-08-01 13:41:37 +0000
commit8a7ed82647347482ae58323981bf3178f8d44f2f (patch)
tree230d9f0c89ed7be79ef30d2df76fbe2449833f8b /c/src/lib/libbsp/i386/pc386/clock/ckinit.c
parent2011-08-01 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-8a7ed82647347482ae58323981bf3178f8d44f2f.tar.bz2
2011-08-01 Jennifer Averett <Jennifer.Averett@OARcorp.com>
PR 1802 * Makefile.am, configure.ac, preinstall.am, clock/ckinit.c, start/start16.S, startup/bspstart.c, startup/ldsegs.S: Add SMP support for i386.
Diffstat (limited to 'c/src/lib/libbsp/i386/pc386/clock/ckinit.c')
-rw-r--r--c/src/lib/libbsp/i386/pc386/clock/ckinit.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/c/src/lib/libbsp/i386/pc386/clock/ckinit.c b/c/src/lib/libbsp/i386/pc386/clock/ckinit.c
index 76e3e82e54..c88d3b86ce 100644
--- a/c/src/lib/libbsp/i386/pc386/clock/ckinit.c
+++ b/c/src/lib/libbsp/i386/pc386/clock/ckinit.c
@@ -234,6 +234,8 @@ static void clockOn(
}
pc386_clock_click_count = US_TO_TICK(pc386_microseconds_per_isr);
+ BSP_irq_enable_at_i8259s( BSP_PERIODIC_TIMER - BSP_IRQ_VECTOR_BASE );
+
#if 0
printk( "configured usecs per tick=%d \n",
rtems_configuration_get_microseconds_per_tick() );
@@ -271,15 +273,33 @@ int clockIsOn(const rtems_irq_connect_data* unused)
rtems_isr Clock_isr(
rtems_vector_number vector
);
+
+bool Clock_isr_enabled = false;
+void Clock_isr_handler(
+ rtems_irq_hdl_param param
+)
+{
+ if ( Clock_isr_enabled )
+ Clock_isr( 0 );
+}
+
static rtems_irq_connect_data clockIrqData = {
BSP_PERIODIC_TIMER,
- (void *)Clock_isr,
+ Clock_isr_handler,
0,
clockOn,
clockOff,
clockIsOn
};
+void Clock_driver_install_handler(void)
+{
+ if (!BSP_install_rtems_irq_handler (&clockIrqData)) {
+ printk("Unable to install system clock ISR handler\n");
+ rtems_fatal_error_occurred(1);
+ }
+}
+
void Clock_driver_support_initialize_hardware(void)
{
bool use_tsc = false;
@@ -318,11 +338,7 @@ void Clock_driver_support_initialize_hardware(void)
Clock_driver_nanoseconds_since_last_tick
);
- if (!BSP_install_rtems_irq_handler (&clockIrqData)) {
- printk("Unable to initialize system clock\n");
- rtems_fatal_error_occurred(1);
- }
-
+ Clock_isr_enabled = true;
}
#define Clock_driver_support_shutdown_hardware() \