summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2006-04-05 20:11:57 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2006-04-05 20:11:57 +0000
commit567589659200d32f7308ec7f9b7f3c194b6e88bc (patch)
tree703cf2a61485ff24620a05e39c88fe49dd5b7706 /c
parent2006-04-05 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-567589659200d32f7308ec7f9b7f3c194b6e88bc.tar.bz2
2006-04-05 Victor V. Vengerov <Victor.Vengerov@oktetlabs.ru>
* mpc6xx/clock/c_clock.c: Now works with MPCI SHM driver.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libcpu/powerpc/ChangeLog4
-rw-r--r--c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c17
2 files changed, 17 insertions, 4 deletions
diff --git a/c/src/lib/libcpu/powerpc/ChangeLog b/c/src/lib/libcpu/powerpc/ChangeLog
index 265bac6f9c..f88417ceaa 100644
--- a/c/src/lib/libcpu/powerpc/ChangeLog
+++ b/c/src/lib/libcpu/powerpc/ChangeLog
@@ -1,3 +1,7 @@
+2006-04-05 Victor V. Vengerov <Victor.Vengerov@oktetlabs.ru>
+
+ * mpc6xx/clock/c_clock.c: Now works with MPCI SHM driver.
+
2006-01-20 Till Straumann <strauman@slac.stanford.edu>
* mpc6xx/mmu/pte121.c: consistency check now warns instead
diff --git a/c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c b/c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c
index fd69920071..9fac5a1683 100644
--- a/c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c
+++ b/c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c
@@ -60,6 +60,13 @@ void clockOn(void* unused)
PPC_Set_decrementer( Clock_Decrementer_value );
}
+static void clockHandler(void)
+{
+ rtems_clock_tick();
+}
+
+static void (*clock_handler)(void);
+
/*
* Clock_isr
*
@@ -73,7 +80,6 @@ void clockOn(void* unused)
* Return values: NONE
*
*/
-
void clockIsr(void *unused)
{
int decr;
@@ -91,7 +97,7 @@ int decr;
/*
* Real Time Clock counter/timer is set to automatically reload.
*/
- rtems_clock_tick();
+ clock_handler();
} while ( decr < 0 );
}
@@ -161,6 +167,7 @@ rtems_device_driver Clock_initialize(
* the correct value.
*/
+ clock_handler = clockHandler;
if (!BSP_connect_clock_handler ()) {
printk("Unable to initialize system clock\n");
rtems_fatal_error_occurred(1);
@@ -204,10 +211,12 @@ rtems_device_driver Clock_control(
(rtems_configuration_get_microseconds_per_tick()/1000);
if (args->command == rtems_build_name('I', 'S', 'R', ' '))
- clockIsr(NULL);
+ clockHandler();
else if (args->command == rtems_build_name('N', 'E', 'W', ' '))
{
- Clock_initialize(major, minor, 0);
+ if (clock_handler == NULL)
+ Clock_initialize(major, minor, 0);
+ clock_handler = args->buffer;
}
done:
return RTEMS_SUCCESSFUL;