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 ++++ c/src/lib/libcpu/powerpc/mpc750/Makefile.in | 3 +- c/src/lib/libcpu/powerpc/mpc750/clock/Makefile.in | 7 +- c/src/lib/libcpu/powerpc/mpc750/clock/c_clock.c | 23 +-- 9 files changed, 94 insertions(+), 463 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') 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); +} diff --git a/c/src/lib/libcpu/powerpc/mpc750/Makefile.in b/c/src/lib/libcpu/powerpc/mpc750/Makefile.in index 94355ee0c2..499a88ce34 100644 --- a/c/src/lib/libcpu/powerpc/mpc750/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc750/Makefile.in @@ -20,8 +20,7 @@ INSTALL_CHANGE = @INSTALL_CHANGE@ # wrapup is the one that actually builds and installs the library # from the individual .rel files built in other directories -# SUB_DIRS = exceptions mmu clock wrapup -SUB_DIRS = exceptions mmu wrapup +SUB_DIRS = exceptions mmu clock wrapup Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ diff --git a/c/src/lib/libcpu/powerpc/mpc750/clock/Makefile.in b/c/src/lib/libcpu/powerpc/mpc750/clock/Makefile.in index 25bf64f6ca..0c3a02fb35 100644 --- a/c/src/lib/libcpu/powerpc/mpc750/clock/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc750/clock/Makefile.in @@ -18,7 +18,7 @@ C_PIECES = c_clock C_FILES = $(C_PIECES:%=%.c) C_O_FILES = $(C_PIECES:%=${ARCH}/%.o) -H_FILES = +H_FILES = $(srcdir)/c_clock.h # Assembly source names, if any, go here -- minus the .S S_PIECES = @@ -55,7 +55,10 @@ LDFLAGS += CLEAN_ADDITIONS += CLOBBER_ADDITIONS += -all: ${ARCH} $(SRCS) $(OBJS) +all: ${ARCH} $(SRCS) preinstall $(OBJS) + +preinstall: $(INSTALLDIRS) $(H_FILES) + @$(INSTALL_CHANGE) -m 644 $(H_FILES) $(PROJECT_INCLUDE)/libcpu # the .rel file built here will be put into libbsp.a by ../wrapup/Makefile install: all diff --git a/c/src/lib/libcpu/powerpc/mpc750/clock/c_clock.c b/c/src/lib/libcpu/powerpc/mpc750/clock/c_clock.c index b6fafcb7df..b3d93f8f34 100644 --- a/c/src/lib/libcpu/powerpc/mpc750/clock/c_clock.c +++ b/c/src/lib/libcpu/powerpc/mpc750/clock/c_clock.c @@ -20,12 +20,12 @@ * $Id$ */ -#include -#include +#include #include #include /* for atexit() */ #include #include +#include /* * Clock ticks since initialization @@ -46,7 +46,7 @@ rtems_unsigned32 Clock_Decrementer_value; rtems_device_major_number rtems_clock_major = ~0; rtems_device_minor_number rtems_clock_minor; -void clockOff(const rtems_irq_connect_data* unused) +void clockOff(void* unused) { if (BSP_Configuration.ticks_per_timeslice) { /* @@ -55,7 +55,7 @@ void clockOff(const rtems_irq_connect_data* unused) */ } } -static void clockOn(const rtems_irq_connect_data* unused) +void clockOn(void* unused) { PPC_Set_decrementer( Clock_Decrementer_value ); } @@ -90,7 +90,7 @@ void clockIsr() rtems_clock_tick(); } -int clockIsOn(const rtems_irq_connect_data* unused) +int clockIsOn(void* unused) { unsigned32 msr_value; @@ -99,12 +99,6 @@ int clockIsOn(const rtems_irq_connect_data* unused) return 0; } -static rtems_irq_connect_data clockIrqData = {BSP_DECREMENTER, - clockIsr, - clockOn, - clockOff, - clockIsOn}; - /* * Clock_exit @@ -123,7 +117,7 @@ static rtems_irq_connect_data clockIrqData = {BSP_DECREMENTER, void Clock_exit( void ) { if ( BSP_Configuration.ticks_per_timeslice ) { - BSP_remove_rtems_irq_handler (&clockIrqData); + (void) BSP_disconnect_clock_handler (); } } @@ -152,7 +146,7 @@ rtems_device_driver Clock_initialize( Clock_Decrementer_value = (BSP_bus_frequency/4000)* (BSP_Configuration.microseconds_per_tick/1000); - if (!BSP_install_rtems_irq_handler (&clockIrqData)) { + if (!BSP_connect_clock_handler ()) { printk("Unable to initialize system clock\n"); rtems_fatal_error_occurred(1); } @@ -186,7 +180,6 @@ rtems_device_driver Clock_control( void *pargp ) { - rtems_unsigned32 isrlevel; rtems_libio_ioctl_args_t *args = pargp; if (args == 0) @@ -199,7 +192,7 @@ rtems_device_driver Clock_control( clockIsr(); else if (args->command == rtems_build_name('N', 'E', 'W', ' ')) { - if (!BSP_install_rtems_irq_handler (&clockIrqData)) { + if (!BSP_connect_clock_handler ()) { printk("Error installing clock interrupt handler!\n"); rtems_fatal_error_occurred(1); } -- cgit v1.2.3