From 0fab6dded87c36ae119a14f773b636aec3063d4b Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 5 Nov 1999 17:49:56 +0000 Subject: Patch from Eric Valette so this will build independently of a BSP. --- c/src/lib/libbsp/powerpc/mcp750/clock/Makefile.in | 10 +- c/src/lib/libbsp/powerpc/mcp750/clock/c_clock.c | 215 --------------------- c/src/lib/libbsp/powerpc/mcp750/clock/p_clock.c | 37 ++++ .../powerpc/motorola_powerpc/clock/Makefile.in | 10 +- .../powerpc/motorola_powerpc/clock/c_clock.c | 215 --------------------- .../powerpc/motorola_powerpc/clock/p_clock.c | 37 ++++ 6 files changed, 80 insertions(+), 444 deletions(-) delete mode 100644 c/src/lib/libbsp/powerpc/mcp750/clock/c_clock.c create mode 100644 c/src/lib/libbsp/powerpc/mcp750/clock/p_clock.c delete mode 100644 c/src/lib/libbsp/powerpc/motorola_powerpc/clock/c_clock.c create mode 100644 c/src/lib/libbsp/powerpc/motorola_powerpc/clock/p_clock.c (limited to 'c/src/lib/libbsp') diff --git a/c/src/lib/libbsp/powerpc/mcp750/clock/Makefile.in b/c/src/lib/libbsp/powerpc/mcp750/clock/Makefile.in index 62122d9097..2c8535c7f6 100644 --- a/c/src/lib/libbsp/powerpc/mcp750/clock/Makefile.in +++ b/c/src/lib/libbsp/powerpc/mcp750/clock/Makefile.in @@ -16,11 +16,11 @@ VPATH = @srcdir@ PGM = ${ARCH}/clock.rel # C source names, if any, go here -- minus the .c -C_PIECES = c_clock +C_PIECES = p_clock C_FILES = $(C_PIECES:%=%.c) C_O_FILES = $(C_PIECES:%=${ARCH}/%.o) -H_FILES = +H_FILES = SRCS = $(C_FILES) $(H_FILES) OBJS = $(C_O_FILES) @@ -61,11 +61,7 @@ CLOBBER_ADDITIONS += ${PGM}: ${SRCS} ${OBJS} $(make-rel) -preinstall: - @$(mkinstalldirs) $(PROJECT_INCLUDE)/bsp - @$(INSTALL_CHANGE) -m 644 $(H_FILES) $(PROJECT_INCLUDE)/bsp - -all: ${ARCH} $(SRCS) preinstall $(PGM) +all: ${ARCH} $(SRCS) $(PGM) # the .rel file built here will be put into libbsp.a by ../wrapup/Makefile install: all diff --git a/c/src/lib/libbsp/powerpc/mcp750/clock/c_clock.c b/c/src/lib/libbsp/powerpc/mcp750/clock/c_clock.c deleted file mode 100644 index b6fafcb7df..0000000000 --- a/c/src/lib/libbsp/powerpc/mcp750/clock/c_clock.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Clock Tick Device Driver - * - * This routine utilizes the Decrementer Register common to the PPC family. - * - * The tick frequency is directly programmed to the configured number of - * microseconds per tick. - * - * COPYRIGHT (c) 1989-1997. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may in - * the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * Modified to support the MPC750. - * Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr - * - * $Id$ - */ - -#include -#include -#include -#include /* for atexit() */ -#include -#include - -/* - * Clock ticks since initialization - */ - -volatile rtems_unsigned32 Clock_driver_ticks; - -/* - * This is the value programmed into the count down timer. - */ - -rtems_unsigned32 Clock_Decrementer_value; - -/* - * These are set by clock driver during its init - */ - -rtems_device_major_number rtems_clock_major = ~0; -rtems_device_minor_number rtems_clock_minor; - -void clockOff(const rtems_irq_connect_data* unused) -{ - if (BSP_Configuration.ticks_per_timeslice) { - /* - * Nothing to do as we cannot disable all interrupts and - * the decrementer interrupt enable is MSR_EE - */ - } -} -static void clockOn(const rtems_irq_connect_data* unused) -{ - PPC_Set_decrementer( Clock_Decrementer_value ); -} - -/* - * Clock_isr - * - * This is the clock tick interrupt handler. - * - * Input parameters: - * vector - vector number - * - * Output parameters: NONE - * - * Return values: NONE - * - */ -void clockIsr() -{ - /* - * The driver has seen another tick. - */ - - PPC_Set_decrementer( Clock_Decrementer_value ); - - Clock_driver_ticks += 1; - - /* - * Real Time Clock counter/timer is set to automatically reload. - */ - - rtems_clock_tick(); -} - -int clockIsOn(const rtems_irq_connect_data* unused) -{ - unsigned32 msr_value; - - _CPU_MSR_GET( msr_value ); - if (msr_value & MSR_EE) return 1; - return 0; -} - -static rtems_irq_connect_data clockIrqData = {BSP_DECREMENTER, - clockIsr, - clockOn, - clockOff, - clockIsOn}; - - -/* - * Clock_exit - * - * This routine allows the clock driver to exit by masking the interrupt and - * disabling the clock's counter. - * - * Input parameters: NONE - * - * Output parameters: NONE - * - * Return values: NONE - * - */ - -void Clock_exit( void ) -{ - if ( BSP_Configuration.ticks_per_timeslice ) { - BSP_remove_rtems_irq_handler (&clockIrqData); - } -} - -/* - * Clock_initialize - * - * This routine initializes the clock driver. - * - * Input parameters: - * major - clock device major number - * minor - clock device minor number - * parg - pointer to optional device driver arguments - * - * Output parameters: NONE - * - * Return values: - * rtems_device_driver status code - */ - -rtems_device_driver Clock_initialize( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *pargp -) -{ - Clock_Decrementer_value = (BSP_bus_frequency/4000)* - (BSP_Configuration.microseconds_per_tick/1000); - - if (!BSP_install_rtems_irq_handler (&clockIrqData)) { - printk("Unable to initialize system clock\n"); - rtems_fatal_error_occurred(1); - } - /* make major/minor avail to others such as shared memory driver */ - - rtems_clock_major = major; - rtems_clock_minor = minor; - - return RTEMS_SUCCESSFUL; -} /* Clock_initialize */ - -/* - * Clock_control - * - * This routine is the clock device driver control entry point. - * - * Input parameters: - * major - clock device major number - * minor - clock device minor number - * parg - pointer to optional device driver arguments - * - * Output parameters: NONE - * - * Return values: - * rtems_device_driver status code - */ - -rtems_device_driver Clock_control( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *pargp -) -{ - rtems_unsigned32 isrlevel; - rtems_libio_ioctl_args_t *args = pargp; - - if (args == 0) - goto done; - - Clock_Decrementer_value = (BSP_bus_frequency/4000)* - (BSP_Configuration.microseconds_per_tick/1000); - - if (args->command == rtems_build_name('I', 'S', 'R', ' ')) - clockIsr(); - else if (args->command == rtems_build_name('N', 'E', 'W', ' ')) - { - if (!BSP_install_rtems_irq_handler (&clockIrqData)) { - printk("Error installing clock interrupt handler!\n"); - rtems_fatal_error_occurred(1); - } - } -done: - return RTEMS_SUCCESSFUL; -} - - - - - - diff --git a/c/src/lib/libbsp/powerpc/mcp750/clock/p_clock.c b/c/src/lib/libbsp/powerpc/mcp750/clock/p_clock.c new file mode 100644 index 0000000000..5de55190d8 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/mcp750/clock/p_clock.c @@ -0,0 +1,37 @@ +/* + * Clock Tick interrupt conexion code. + * + * COPYRIGHT (c) 1989-1997. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may in + * the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * Modified to support the MPC750. + * Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr + * + * $Id$ + */ + +#include +#include +#include + +static rtems_irq_connect_data clockIrqData = {BSP_DECREMENTER, + clockIsr, + (rtems_irq_enable)clockOn, + (rtems_irq_disable)clockOff, + (rtems_irq_is_enabled) clockIsOn}; + + +int BSP_disconnect_clock_handler (void) +{ + return BSP_remove_rtems_irq_handler (&clockIrqData); +} + +int BSP_connect_clock_handler (void) +{ + return BSP_install_rtems_irq_handler (&clockIrqData); +} diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/Makefile.in b/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/Makefile.in index 62122d9097..2c8535c7f6 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/Makefile.in +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/Makefile.in @@ -16,11 +16,11 @@ VPATH = @srcdir@ PGM = ${ARCH}/clock.rel # C source names, if any, go here -- minus the .c -C_PIECES = c_clock +C_PIECES = p_clock C_FILES = $(C_PIECES:%=%.c) C_O_FILES = $(C_PIECES:%=${ARCH}/%.o) -H_FILES = +H_FILES = SRCS = $(C_FILES) $(H_FILES) OBJS = $(C_O_FILES) @@ -61,11 +61,7 @@ CLOBBER_ADDITIONS += ${PGM}: ${SRCS} ${OBJS} $(make-rel) -preinstall: - @$(mkinstalldirs) $(PROJECT_INCLUDE)/bsp - @$(INSTALL_CHANGE) -m 644 $(H_FILES) $(PROJECT_INCLUDE)/bsp - -all: ${ARCH} $(SRCS) preinstall $(PGM) +all: ${ARCH} $(SRCS) $(PGM) # the .rel file built here will be put into libbsp.a by ../wrapup/Makefile install: all diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/c_clock.c b/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/c_clock.c deleted file mode 100644 index b6fafcb7df..0000000000 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/c_clock.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Clock Tick Device Driver - * - * This routine utilizes the Decrementer Register common to the PPC family. - * - * The tick frequency is directly programmed to the configured number of - * microseconds per tick. - * - * COPYRIGHT (c) 1989-1997. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may in - * the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * Modified to support the MPC750. - * Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr - * - * $Id$ - */ - -#include -#include -#include -#include /* for atexit() */ -#include -#include - -/* - * Clock ticks since initialization - */ - -volatile rtems_unsigned32 Clock_driver_ticks; - -/* - * This is the value programmed into the count down timer. - */ - -rtems_unsigned32 Clock_Decrementer_value; - -/* - * These are set by clock driver during its init - */ - -rtems_device_major_number rtems_clock_major = ~0; -rtems_device_minor_number rtems_clock_minor; - -void clockOff(const rtems_irq_connect_data* unused) -{ - if (BSP_Configuration.ticks_per_timeslice) { - /* - * Nothing to do as we cannot disable all interrupts and - * the decrementer interrupt enable is MSR_EE - */ - } -} -static void clockOn(const rtems_irq_connect_data* unused) -{ - PPC_Set_decrementer( Clock_Decrementer_value ); -} - -/* - * Clock_isr - * - * This is the clock tick interrupt handler. - * - * Input parameters: - * vector - vector number - * - * Output parameters: NONE - * - * Return values: NONE - * - */ -void clockIsr() -{ - /* - * The driver has seen another tick. - */ - - PPC_Set_decrementer( Clock_Decrementer_value ); - - Clock_driver_ticks += 1; - - /* - * Real Time Clock counter/timer is set to automatically reload. - */ - - rtems_clock_tick(); -} - -int clockIsOn(const rtems_irq_connect_data* unused) -{ - unsigned32 msr_value; - - _CPU_MSR_GET( msr_value ); - if (msr_value & MSR_EE) return 1; - return 0; -} - -static rtems_irq_connect_data clockIrqData = {BSP_DECREMENTER, - clockIsr, - clockOn, - clockOff, - clockIsOn}; - - -/* - * Clock_exit - * - * This routine allows the clock driver to exit by masking the interrupt and - * disabling the clock's counter. - * - * Input parameters: NONE - * - * Output parameters: NONE - * - * Return values: NONE - * - */ - -void Clock_exit( void ) -{ - if ( BSP_Configuration.ticks_per_timeslice ) { - BSP_remove_rtems_irq_handler (&clockIrqData); - } -} - -/* - * Clock_initialize - * - * This routine initializes the clock driver. - * - * Input parameters: - * major - clock device major number - * minor - clock device minor number - * parg - pointer to optional device driver arguments - * - * Output parameters: NONE - * - * Return values: - * rtems_device_driver status code - */ - -rtems_device_driver Clock_initialize( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *pargp -) -{ - Clock_Decrementer_value = (BSP_bus_frequency/4000)* - (BSP_Configuration.microseconds_per_tick/1000); - - if (!BSP_install_rtems_irq_handler (&clockIrqData)) { - printk("Unable to initialize system clock\n"); - rtems_fatal_error_occurred(1); - } - /* make major/minor avail to others such as shared memory driver */ - - rtems_clock_major = major; - rtems_clock_minor = minor; - - return RTEMS_SUCCESSFUL; -} /* Clock_initialize */ - -/* - * Clock_control - * - * This routine is the clock device driver control entry point. - * - * Input parameters: - * major - clock device major number - * minor - clock device minor number - * parg - pointer to optional device driver arguments - * - * Output parameters: NONE - * - * Return values: - * rtems_device_driver status code - */ - -rtems_device_driver Clock_control( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *pargp -) -{ - rtems_unsigned32 isrlevel; - rtems_libio_ioctl_args_t *args = pargp; - - if (args == 0) - goto done; - - Clock_Decrementer_value = (BSP_bus_frequency/4000)* - (BSP_Configuration.microseconds_per_tick/1000); - - if (args->command == rtems_build_name('I', 'S', 'R', ' ')) - clockIsr(); - else if (args->command == rtems_build_name('N', 'E', 'W', ' ')) - { - if (!BSP_install_rtems_irq_handler (&clockIrqData)) { - printk("Error installing clock interrupt handler!\n"); - rtems_fatal_error_occurred(1); - } - } -done: - return RTEMS_SUCCESSFUL; -} - - - - - - diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/p_clock.c b/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/p_clock.c new file mode 100644 index 0000000000..5de55190d8 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/p_clock.c @@ -0,0 +1,37 @@ +/* + * Clock Tick interrupt conexion code. + * + * COPYRIGHT (c) 1989-1997. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may in + * the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * Modified to support the MPC750. + * Modifications Copyright (c) 1999 Eric Valette valette@crf.canon.fr + * + * $Id$ + */ + +#include +#include +#include + +static rtems_irq_connect_data clockIrqData = {BSP_DECREMENTER, + clockIsr, + (rtems_irq_enable)clockOn, + (rtems_irq_disable)clockOff, + (rtems_irq_is_enabled) clockIsOn}; + + +int BSP_disconnect_clock_handler (void) +{ + return BSP_remove_rtems_irq_handler (&clockIrqData); +} + +int BSP_connect_clock_handler (void) +{ + return BSP_install_rtems_irq_handler (&clockIrqData); +} -- cgit v1.2.3