From f817b0283cce904d0bcb48cf9e641c2b40ba8f38 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 4 Nov 1999 18:05:09 +0000 Subject: The files in libcpu should not be directly dependent on any BSP. In particular, using bsp.h, or getting information from the BSP which should properly be obtained from RTEMS is forbidden. This is necessary to strengthen the division between the BSP independent parts of RTEMS and the BSPs themselves. This started after comments and analysis by Ralf Corsepius . The changes primarily eliminated the need to include bsp.h and peeking at BSP_Configuration. The use of Cpu_table in each BSP needs to be eliminated. --- c/src/exec/rtems/include/rtems.h | 1 - c/src/exec/sapi/include/rtems/config.h | 46 +++++ c/src/exec/score/cpu/mips/rtems/score/cpu.h | 5 +- c/src/exec/score/cpu/mips64orion/rtems/score/cpu.h | 5 +- c/src/lib/libbsp/mips/p4000/startup/bspstart.c | 1 + .../libbsp/mips64orion/p4000/startup/bspstart.c | 1 + c/src/lib/libbsp/powerpc/mcp750/Makefile.in | 8 +- c/src/lib/libbsp/powerpc/mcp750/clock/Makefile.in | 75 +++++++ c/src/lib/libbsp/powerpc/mcp750/clock/c_clock.c | 215 +++++++++++++++++++++ c/src/lib/libbsp/powerpc/mcp750/wrapup/Makefile.in | 6 +- .../libbsp/powerpc/motorola_powerpc/Makefile.in | 8 +- .../powerpc/motorola_powerpc/clock/Makefile.in | 75 +++++++ .../powerpc/motorola_powerpc/clock/c_clock.c | 215 +++++++++++++++++++++ .../powerpc/motorola_powerpc/wrapup/Makefile.in | 6 +- .../libbsp/powerpc/score603e/wrapup/Makefile.in | 5 +- c/src/lib/libcpu/hppa1.1/clock/Makefile.in | 2 - c/src/lib/libcpu/hppa1.1/clock/clock.c | 11 +- c/src/lib/libcpu/hppa1.1/include/Makefile.in | 4 - c/src/lib/libcpu/hppa1.1/milli/Makefile.in | 2 - c/src/lib/libcpu/hppa1.1/semaphore/semaphore.c | 10 +- c/src/lib/libcpu/hppa1.1/timer/Makefile.in | 2 - c/src/lib/libcpu/m68k/m68040/fpsp/Makefile.in | 2 - c/src/lib/libcpu/mips/clock/ckinit.c | 19 +- c/src/lib/libcpu/mips/timer/timer.c | 1 - c/src/lib/libcpu/mips64orion/clock/ckinit.c | 19 +- c/src/lib/libcpu/mips64orion/include/Makefile.in | 4 - c/src/lib/libcpu/mips64orion/timer/timer.c | 1 - c/src/lib/libcpu/powerpc/mpc505/timer/Makefile.in | 2 - c/src/lib/libcpu/powerpc/mpc750/Makefile.in | 3 +- c/src/lib/libcpu/powerpc/mpc750/wrapup/Makefile.in | 3 +- c/src/lib/libcpu/powerpc/mpc821/clock/Makefile.in | 2 - c/src/lib/libcpu/powerpc/mpc821/clock/clock.c | 7 +- .../mpc821/console-generic/console-generic.c | 1 - .../lib/libcpu/powerpc/mpc821/include/Makefile.in | 4 - c/src/lib/libcpu/powerpc/mpc821/timer/Makefile.in | 2 - c/src/lib/libcpu/powerpc/mpc821/timer/timer.c | 1 - c/src/lib/libcpu/powerpc/mpc821/vectors/align_h.S | 1 - c/src/lib/libcpu/powerpc/mpc860/clock/Makefile.in | 2 - c/src/lib/libcpu/powerpc/mpc860/clock/clock.c | 8 +- .../mpc860/console-generic/console-generic.c | 2 +- .../lib/libcpu/powerpc/mpc860/include/Makefile.in | 4 - c/src/lib/libcpu/powerpc/mpc860/timer/Makefile.in | 2 - c/src/lib/libcpu/powerpc/mpc860/timer/timer.c | 1 - c/src/lib/libcpu/powerpc/mpc860/vectors/align_h.S | 1 - c/src/lib/libcpu/powerpc/ppc403/clock/Makefile.in | 2 - c/src/lib/libcpu/powerpc/ppc403/clock/clock.c | 10 +- c/src/lib/libcpu/powerpc/ppc403/console/console.c | 2 +- .../libcpu/powerpc/ppc403/console/console.c.polled | 2 +- c/src/lib/libcpu/powerpc/ppc403/ictrl/Makefile.in | 2 - c/src/lib/libcpu/powerpc/ppc403/ictrl/ictrl.c | 2 +- .../lib/libcpu/powerpc/ppc403/include/Makefile.in | 4 - c/src/lib/libcpu/powerpc/ppc403/timer/Makefile.in | 2 - c/src/lib/libcpu/powerpc/ppc403/timer/timer.c | 1 - c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.S | 2 +- c/src/lib/libcpu/sh/sh7032/clock/ckinit.c | 10 +- c/src/lib/libcpu/sh/sh7032/console/console.c | 1 + c/src/lib/libcpu/sh/sh7032/include/sci.h | 2 +- c/src/lib/libcpu/sh/sh7032/timer/timer.c | 2 +- c/src/tests/psxtests/psxstat/main.c | 2 + c/src/tests/samples/minimum/init.c | 2 + cpukit/rtems/include/rtems.h | 1 - cpukit/sapi/include/rtems/config.h | 46 +++++ cpukit/score/cpu/mips/rtems/score/cpu.h | 5 +- cpukit/score/cpu/mips64orion/rtems/score/cpu.h | 5 +- scripts/Makefile.am | 1 + scripts/gccnewlib/Makefile.am | 7 +- scripts/gnatnewlib/gnatnewlib.spec.in | 50 +---- scripts/mkgccnewlibspec.in | 8 +- testsuites/psxtests/psxstat/main.c | 2 + testsuites/samples/minimum/init.c | 2 + 70 files changed, 807 insertions(+), 163 deletions(-) create mode 100644 c/src/lib/libbsp/powerpc/mcp750/clock/Makefile.in create mode 100644 c/src/lib/libbsp/powerpc/mcp750/clock/c_clock.c create mode 100644 c/src/lib/libbsp/powerpc/motorola_powerpc/clock/Makefile.in create mode 100644 c/src/lib/libbsp/powerpc/motorola_powerpc/clock/c_clock.c diff --git a/c/src/exec/rtems/include/rtems.h b/c/src/exec/rtems/include/rtems.h index 01c0b8478b..0db253f086 100644 --- a/c/src/exec/rtems/include/rtems.h +++ b/c/src/exec/rtems/include/rtems.h @@ -114,7 +114,6 @@ extern "C" { #define RTEMS_MINIMUN_HETERO_CONVERSION MP_PACKET_MINIMUN_HETERO_CONVERSION - #ifdef __cplusplus } #endif diff --git a/c/src/exec/sapi/include/rtems/config.h b/c/src/exec/sapi/include/rtems/config.h index ac2da06d97..8a2def6082 100644 --- a/c/src/exec/sapi/include/rtems/config.h +++ b/c/src/exec/sapi/include/rtems/config.h @@ -116,6 +116,52 @@ typedef struct { SAPI_EXTERN rtems_configuration_table *_Configuration_Table; SAPI_EXTERN rtems_multiprocessing_table *_Configuration_MP_table; +/* + * Some handy macros to avoid dependencies on either the BSP + * or the exact format of the configuration table. + */ + +#define rtems_configuration_get_work_space_start() \ + (_Configuration_Table->work_space_start) + +#define rtems_configuration_get_work_space_size() \ + (_Configuration_Table->work_space_size) + +#define rtems_configuration_get_maximum_extensions() \ + (_Configuration_Table->maximum_extensions) + +#define rtems_configuration_get_microseconds_per_tick() \ + (_Configuration_Table->microseconds_per_tick) +#define rtems_configuration_get_milliseconds_per_tick() \ + (_Configuration_Table->microseconds_per_tick / 1000) + +#define rtems_configuration_get_ticks_per_timeslice() \ + (_Configuration_Table->ticks_per_timeslice) + +#define rtems_configuration_get_maximum_devices() \ + (_Configuration_Table->maximum_devices) + +#define rtems_configuration_get_number_of_device_drivers() \ + (_Configuration_Table->number_of_device_drivers) + +#define rtems_configuration_get_device_driver_table() \ + (_Configuration_Table->device_driver_table) + +#define rtems_configuration_get_number_of_initial_extensions() \ + (_Configuration_Table->number_of_initial_extensions) + +#define rtems_configuration_get_user_extension_table() \ + (_Configuration_Table->user_extension_table) + +#define rtems_configuration_get_user_multiprocessing_table() \ + (_Configuration_Table->user_multiprocessing_table) + +#define rtems_configuration_get_rtems_api_configuration() \ + (_Configuration_Table->rtems_api_configuration) + +#define rtems_configuration_get_posix_api_configuration() \ + (_Configuration_Table->posix_api_configuration) + #ifdef __cplusplus } #endif diff --git a/c/src/exec/score/cpu/mips/rtems/score/cpu.h b/c/src/exec/score/cpu/mips/rtems/score/cpu.h index ba0e15ab10..0722a81ca6 100644 --- a/c/src/exec/score/cpu/mips/rtems/score/cpu.h +++ b/c/src/exec/score/cpu/mips/rtems/score/cpu.h @@ -435,9 +435,12 @@ typedef struct { void (*stack_free_hook)( void* ); /* end of fields required on all CPUs */ - unsigned32 some_other_cpu_dependent_info; + unsigned32 clicks_per_microsecond; } rtems_cpu_table; +#define rtems_cpu_configuration_get_clicks_per_microsecond() \ + (_CPU_Table.clicks_per_microsecond) + /* * This variable is optional. It is used on CPUs on which it is difficult * to generate an "uninitialized" FP context. It is filled in by diff --git a/c/src/exec/score/cpu/mips64orion/rtems/score/cpu.h b/c/src/exec/score/cpu/mips64orion/rtems/score/cpu.h index ba0e15ab10..0722a81ca6 100644 --- a/c/src/exec/score/cpu/mips64orion/rtems/score/cpu.h +++ b/c/src/exec/score/cpu/mips64orion/rtems/score/cpu.h @@ -435,9 +435,12 @@ typedef struct { void (*stack_free_hook)( void* ); /* end of fields required on all CPUs */ - unsigned32 some_other_cpu_dependent_info; + unsigned32 clicks_per_microsecond; } rtems_cpu_table; +#define rtems_cpu_configuration_get_clicks_per_microsecond() \ + (_CPU_Table.clicks_per_microsecond) + /* * This variable is optional. It is used on CPUs on which it is difficult * to generate an "uninitialized" FP context. It is filled in by diff --git a/c/src/lib/libbsp/mips/p4000/startup/bspstart.c b/c/src/lib/libbsp/mips/p4000/startup/bspstart.c index bdd0c3074d..7634232bd8 100644 --- a/c/src/lib/libbsp/mips/p4000/startup/bspstart.c +++ b/c/src/lib/libbsp/mips/p4000/startup/bspstart.c @@ -116,4 +116,5 @@ void bsp_start( void ) Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */ Cpu_table.postdriver_hook = bsp_postdriver_hook; Cpu_table.interrupt_stack_size = 4096; + Cpu_table.clicks_per_microsecond = CPU_CLOCK_RATE_MHZ; } diff --git a/c/src/lib/libbsp/mips64orion/p4000/startup/bspstart.c b/c/src/lib/libbsp/mips64orion/p4000/startup/bspstart.c index bdd0c3074d..7634232bd8 100644 --- a/c/src/lib/libbsp/mips64orion/p4000/startup/bspstart.c +++ b/c/src/lib/libbsp/mips64orion/p4000/startup/bspstart.c @@ -116,4 +116,5 @@ void bsp_start( void ) Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */ Cpu_table.postdriver_hook = bsp_postdriver_hook; Cpu_table.interrupt_stack_size = 4096; + Cpu_table.clicks_per_microsecond = CPU_CLOCK_RATE_MHZ; } diff --git a/c/src/lib/libbsp/powerpc/mcp750/Makefile.in b/c/src/lib/libbsp/powerpc/mcp750/Makefile.in index 1e61ebe329..0e4a0923d5 100644 --- a/c/src/lib/libbsp/powerpc/mcp750/Makefile.in +++ b/c/src/lib/libbsp/powerpc/mcp750/Makefile.in @@ -22,10 +22,14 @@ SRCS = README all: $(SRCS) +# We only build the Network library if HAS_NETWORKING was defined +NETWORK_yes_V = dec21140 +NETWORK = $(NETWORK_$(HAS_NETWORKING)_V) + # wrapup is the one that actually builds and installs the library # from the individual .rel files built in other directories -SUB_DIRS = console include pci residual openpic irq vectors start startup \ - bootloader dec21140 wrapup +SUB_DIRS = clock console include pci residual openpic irq vectors \ + start startup bootloader $(NETWORK) wrapup Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ diff --git a/c/src/lib/libbsp/powerpc/mcp750/clock/Makefile.in b/c/src/lib/libbsp/powerpc/mcp750/clock/Makefile.in new file mode 100644 index 0000000000..62122d9097 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/mcp750/clock/Makefile.in @@ -0,0 +1,75 @@ +# +# $Id$ +# + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = ../../.. +subdir = powerpc/mcp750/clock + +RTEMS_ROOT = @RTEMS_ROOT@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + +PGM = ${ARCH}/clock.rel + +# C source names, if any, go here -- minus the .c +C_PIECES = c_clock +C_FILES = $(C_PIECES:%=%.c) +C_O_FILES = $(C_PIECES:%=${ARCH}/%.o) + +H_FILES = + +SRCS = $(C_FILES) $(H_FILES) +OBJS = $(C_O_FILES) + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(RTEMS_ROOT)/make/leaf.cfg + +INSTALL_CHANGE = @INSTALL_CHANGE@ +mkinstalldirs = $(SHELL) $(top_srcdir)/@RTEMS_TOPdir@/mkinstalldirs + +INSTALLDIRS = $(PROJECT_INCLUDE)/bsp + +$(INSTALLDIRS): + @$(mkinstalldirs) $(INSTALLDIRS) + +# +# (OPTIONAL) Add local stuff here using += +# + +DEFINES += +CPPFLAGS += +CFLAGS += + +LD_PATHS += +LD_LIBS += +LDFLAGS += + +# +# Add your list of files to delete here. The config files +# already know how to delete some stuff, so you may want +# to just run 'make clean' first to see what gets missed. +# 'make clobber' already includes 'make clean' +# + +CLEAN_ADDITIONS += +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) + +# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile +install: all + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/c/src/lib/libbsp/powerpc/mcp750/clock/c_clock.c b/c/src/lib/libbsp/powerpc/mcp750/clock/c_clock.c new file mode 100644 index 0000000000..b6fafcb7df --- /dev/null +++ b/c/src/lib/libbsp/powerpc/mcp750/clock/c_clock.c @@ -0,0 +1,215 @@ +/* + * 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/wrapup/Makefile.in b/c/src/lib/libbsp/powerpc/mcp750/wrapup/Makefile.in index f4f6d6d6fe..005283840d 100644 --- a/c/src/lib/libbsp/powerpc/mcp750/wrapup/Makefile.in +++ b/c/src/lib/libbsp/powerpc/mcp750/wrapup/Makefile.in @@ -13,7 +13,11 @@ PROJECT_ROOT = @PROJECT_ROOT@ VPATH = @srcdir@ -BSP_PIECES = console irq openpic pci residual startup dec21140 vectors +# We only build the Network library if HAS_NETWORKING was defined +NETWORK_yes_V = dec21140 +NETWORK = $(NETWORK_$(HAS_NETWORKING)_V) + +BSP_PIECES = clock console irq openpic pci residual startup $(NETWORK) vectors GENERIC_PIECES = # bummer; have to use $foreach since % pattern subst rules only replace 1x diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.in b/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.in index 1e61ebe329..0e4a0923d5 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.in +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.in @@ -22,10 +22,14 @@ SRCS = README all: $(SRCS) +# We only build the Network library if HAS_NETWORKING was defined +NETWORK_yes_V = dec21140 +NETWORK = $(NETWORK_$(HAS_NETWORKING)_V) + # wrapup is the one that actually builds and installs the library # from the individual .rel files built in other directories -SUB_DIRS = console include pci residual openpic irq vectors start startup \ - bootloader dec21140 wrapup +SUB_DIRS = clock console include pci residual openpic irq vectors \ + start startup bootloader $(NETWORK) wrapup Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/Makefile.in b/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/Makefile.in new file mode 100644 index 0000000000..62122d9097 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/Makefile.in @@ -0,0 +1,75 @@ +# +# $Id$ +# + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = ../../.. +subdir = powerpc/mcp750/clock + +RTEMS_ROOT = @RTEMS_ROOT@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + +PGM = ${ARCH}/clock.rel + +# C source names, if any, go here -- minus the .c +C_PIECES = c_clock +C_FILES = $(C_PIECES:%=%.c) +C_O_FILES = $(C_PIECES:%=${ARCH}/%.o) + +H_FILES = + +SRCS = $(C_FILES) $(H_FILES) +OBJS = $(C_O_FILES) + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(RTEMS_ROOT)/make/leaf.cfg + +INSTALL_CHANGE = @INSTALL_CHANGE@ +mkinstalldirs = $(SHELL) $(top_srcdir)/@RTEMS_TOPdir@/mkinstalldirs + +INSTALLDIRS = $(PROJECT_INCLUDE)/bsp + +$(INSTALLDIRS): + @$(mkinstalldirs) $(INSTALLDIRS) + +# +# (OPTIONAL) Add local stuff here using += +# + +DEFINES += +CPPFLAGS += +CFLAGS += + +LD_PATHS += +LD_LIBS += +LDFLAGS += + +# +# Add your list of files to delete here. The config files +# already know how to delete some stuff, so you may want +# to just run 'make clean' first to see what gets missed. +# 'make clobber' already includes 'make clean' +# + +CLEAN_ADDITIONS += +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) + +# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile +install: all + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status 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 new file mode 100644 index 0000000000..b6fafcb7df --- /dev/null +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/clock/c_clock.c @@ -0,0 +1,215 @@ +/* + * 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/wrapup/Makefile.in b/c/src/lib/libbsp/powerpc/motorola_powerpc/wrapup/Makefile.in index f4f6d6d6fe..005283840d 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/wrapup/Makefile.in +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/wrapup/Makefile.in @@ -13,7 +13,11 @@ PROJECT_ROOT = @PROJECT_ROOT@ VPATH = @srcdir@ -BSP_PIECES = console irq openpic pci residual startup dec21140 vectors +# We only build the Network library if HAS_NETWORKING was defined +NETWORK_yes_V = dec21140 +NETWORK = $(NETWORK_$(HAS_NETWORKING)_V) + +BSP_PIECES = clock console irq openpic pci residual startup $(NETWORK) vectors GENERIC_PIECES = # bummer; have to use $foreach since % pattern subst rules only replace 1x diff --git a/c/src/lib/libbsp/powerpc/score603e/wrapup/Makefile.in b/c/src/lib/libbsp/powerpc/score603e/wrapup/Makefile.in index 4d6988d22c..e8ce41d7da 100644 --- a/c/src/lib/libbsp/powerpc/score603e/wrapup/Makefile.in +++ b/c/src/lib/libbsp/powerpc/score603e/wrapup/Makefile.in @@ -21,8 +21,9 @@ GENERIC_PIECES = # bummer; have to use $foreach since % pattern subst rules only replace 1x OBJS = $(foreach piece, $(BSP_PIECES), $(wildcard ../$(piece)/$(ARCH)/*.o)) \ $(foreach piece, $(CPU_PIECES), \ - ../../../../libcpu/$(RTEMS_CPU)/$(piece)/$(ARCH)/$(piece).rel) $(foreach \ - piece, $(GENERIC_PIECES), ../../../$(piece)/$(ARCH)/$(piece).rel) + ../../../../libcpu/$(RTEMS_CPU)/$(piece)/$(ARCH)/$(piece).rel) \ + $(foreach piece, $(GENERIC_PIECES), \ + ../../../$(piece)/$(ARCH)/$(piece).rel) LIB = $(ARCH)/libbsp.a include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg diff --git a/c/src/lib/libcpu/hppa1.1/clock/Makefile.in b/c/src/lib/libcpu/hppa1.1/clock/Makefile.in index 185ca8c78e..5670ecbcbd 100644 --- a/c/src/lib/libcpu/hppa1.1/clock/Makefile.in +++ b/c/src/lib/libcpu/hppa1.1/clock/Makefile.in @@ -62,8 +62,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/hppa1.1/clock/clock.c b/c/src/lib/libcpu/hppa1.1/clock/clock.c index 1dcfa665ec..a0588e57fd 100644 --- a/c/src/lib/libcpu/hppa1.1/clock/clock.c +++ b/c/src/lib/libcpu/hppa1.1/clock/clock.c @@ -19,7 +19,6 @@ /* should get this from bsp.h, but it is not installed yet */ rtems_isr_entry set_vector(rtems_isr_entry, rtems_vector_number, int); -extern rtems_configuration_table BSP_Configuration; #include /* for atexit() */ @@ -103,10 +102,9 @@ void Install_clock(rtems_isr_entry clock_isr) Clock_clicks_interrupt = 0; Clock_clicks = 0; - Clock_isrs = BSP_Configuration.microseconds_per_tick / 1000; + Clock_isrs = rtems_configuration_get_milliseconds_per_tick(); - if (BSP_Configuration.ticks_per_timeslice) - { + if ( rtems_configuration_get_ticks_per_timeslice() ) { /* * initialize the interval here * First tick is set to right amount of time in the future @@ -175,7 +173,7 @@ Clock_isr(rtems_vector_number vector) if (Clock_isrs == 1) { rtems_clock_tick(); - Clock_isrs = BSP_Configuration.microseconds_per_tick / 10000; + Clock_isrs = rtems_configuration_get_milliseconds_per_tick(); if (Clock_isrs == 0) Clock_isrs = 1; } @@ -191,8 +189,7 @@ Clock_isr(rtems_vector_number vector) void Clock_exit(void) { - if ( BSP_Configuration.ticks_per_timeslice ) - { + if ( rtems_configuration_get_ticks_per_timeslice() ) { (void) set_vector(0, HPPA_INTERRUPT_EXTERNAL_INTERVAL_TIMER, 1); } } diff --git a/c/src/lib/libcpu/hppa1.1/include/Makefile.in b/c/src/lib/libcpu/hppa1.1/include/Makefile.in index 9efc79396e..a6bbbdafc0 100644 --- a/c/src/lib/libcpu/hppa1.1/include/Makefile.in +++ b/c/src/lib/libcpu/hppa1.1/include/Makefile.in @@ -1,10 +1,6 @@ # # $Id$ # -# Install any include files needed by libcpu. -# Mainly this just means bsp.h which would normally be installed -# after libcpu is built. -# This is a bit of a hack. @SET_MAKE@ srcdir = @srcdir@ diff --git a/c/src/lib/libcpu/hppa1.1/milli/Makefile.in b/c/src/lib/libcpu/hppa1.1/milli/Makefile.in index ae63b98a98..8c07e39d1a 100644 --- a/c/src/lib/libcpu/hppa1.1/milli/Makefile.in +++ b/c/src/lib/libcpu/hppa1.1/milli/Makefile.in @@ -62,8 +62,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/hppa1.1/semaphore/semaphore.c b/c/src/lib/libcpu/hppa1.1/semaphore/semaphore.c index 3819736d03..011827dc75 100644 --- a/c/src/lib/libcpu/hppa1.1/semaphore/semaphore.c +++ b/c/src/lib/libcpu/hppa1.1/semaphore/semaphore.c @@ -16,7 +16,7 @@ * $Id$ */ -#include +#include #include "semaphore.h" @@ -123,7 +123,11 @@ hppa_semaphore_pool_initialize(void *pool_base, * If we are node0, then init all in the pool */ +#if 0 if (cpu_number == 0) +#else + if (_Configuration_Table->User_multiprocessing_table->node == 1) +#endif { /* * Tell other cpus we are not done, jic @@ -139,7 +143,11 @@ hppa_semaphore_pool_initialize(void *pool_base, * Tell other cpus we are done, or wait for it to be done if on another cpu */ +#if 0 if (cpu_number == 0) +#else + if (_Configuration_Table->User_multiprocessing_table->node == 1) +#endif SEM_CONTROL->user = rtems_build_name('D', 'O', 'N', 'E'); else while (SEM_CONTROL->user != rtems_build_name('D', 'O', 'N', 'E')) diff --git a/c/src/lib/libcpu/hppa1.1/timer/Makefile.in b/c/src/lib/libcpu/hppa1.1/timer/Makefile.in index 8b4b6281f4..08bbf81e83 100644 --- a/c/src/lib/libcpu/hppa1.1/timer/Makefile.in +++ b/c/src/lib/libcpu/hppa1.1/timer/Makefile.in @@ -62,8 +62,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/m68k/m68040/fpsp/Makefile.in b/c/src/lib/libcpu/m68k/m68040/fpsp/Makefile.in index e8cf8820c6..f1a418ece2 100644 --- a/c/src/lib/libcpu/m68k/m68040/fpsp/Makefile.in +++ b/c/src/lib/libcpu/m68k/m68040/fpsp/Makefile.in @@ -66,8 +66,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/mips/clock/ckinit.c b/c/src/lib/libcpu/mips/clock/ckinit.c index 60b3187223..c0cdd6f898 100644 --- a/c/src/lib/libcpu/mips/clock/ckinit.c +++ b/c/src/lib/libcpu/mips/clock/ckinit.c @@ -43,13 +43,20 @@ #include #include -#include #define EXT_INT5 0x8000 /* external interrupt 5 */ #include "clock.h" +/* formerly in the BSP */ +#if 0 #define CLOCKS_PER_MICROSECOND ( CPU_CLOCK_RATE_MHZ ) /* equivalent to CPU clock speed in MHz */ +#endif + +#define CLOCKS_PER_MICROSECOND \ + rtems_cpu_configuration_get_clicks_per_microsecond() +/* to avoid including the bsp */ +mips_isr_entry set_vector( rtems_isr_entry, rtems_vector_number, int ); void Clock_exit( void ); rtems_isr Clock_isr( rtems_vector_number vector ); @@ -152,20 +159,20 @@ void Install_clock( */ Clock_driver_ticks = 0; - Clock_isrs = BSP_Configuration.microseconds_per_tick / 1000; + Clock_isrs = rtems_configuration_get_milliseconds_per_tick(); /* * If ticks_per_timeslice is configured as non-zero, then the user * wants a clock tick. */ - if ( BSP_Configuration.ticks_per_timeslice ) { + if ( rtems_configuration_get_ticks_per_timeslice() ) { Old_ticker = (rtems_isr_entry) set_vector( clock_isr, CLOCK_VECTOR, 1 ); /* * Hardware specific initialize goes here */ - mips_timer_rate = BSP_Configuration.microseconds_per_tick * CLOCKS_PER_MICROSECOND; + mips_timer_rate = rtems_configuration_get_microseconds_per_tick() * CLOCKS_PER_MICROSECOND; mips_set_timer( mips_timer_rate ); enable_int(CLOCK_VECTOR_MASK); } @@ -183,11 +190,9 @@ void Install_clock( void Clock_exit( void ) { - if ( BSP_Configuration.ticks_per_timeslice ) { - + if ( rtems_configuration_get_ticks_per_timeslice() ) { /* mips: turn off the timer interrupts */ disable_int(CLOCK_VECTOR_MASK); - } } diff --git a/c/src/lib/libcpu/mips/timer/timer.c b/c/src/lib/libcpu/mips/timer/timer.c index 167a9b3804..dc7c61157e 100644 --- a/c/src/lib/libcpu/mips/timer/timer.c +++ b/c/src/lib/libcpu/mips/timer/timer.c @@ -47,7 +47,6 @@ #include -#include #define CLOCKS_PER_MICROSECOND ( CPU_CLOCK_RATE_MHZ ) #define TIMER_MAX_VALUE 0xffffffff diff --git a/c/src/lib/libcpu/mips64orion/clock/ckinit.c b/c/src/lib/libcpu/mips64orion/clock/ckinit.c index 60b3187223..c0cdd6f898 100644 --- a/c/src/lib/libcpu/mips64orion/clock/ckinit.c +++ b/c/src/lib/libcpu/mips64orion/clock/ckinit.c @@ -43,13 +43,20 @@ #include #include -#include #define EXT_INT5 0x8000 /* external interrupt 5 */ #include "clock.h" +/* formerly in the BSP */ +#if 0 #define CLOCKS_PER_MICROSECOND ( CPU_CLOCK_RATE_MHZ ) /* equivalent to CPU clock speed in MHz */ +#endif + +#define CLOCKS_PER_MICROSECOND \ + rtems_cpu_configuration_get_clicks_per_microsecond() +/* to avoid including the bsp */ +mips_isr_entry set_vector( rtems_isr_entry, rtems_vector_number, int ); void Clock_exit( void ); rtems_isr Clock_isr( rtems_vector_number vector ); @@ -152,20 +159,20 @@ void Install_clock( */ Clock_driver_ticks = 0; - Clock_isrs = BSP_Configuration.microseconds_per_tick / 1000; + Clock_isrs = rtems_configuration_get_milliseconds_per_tick(); /* * If ticks_per_timeslice is configured as non-zero, then the user * wants a clock tick. */ - if ( BSP_Configuration.ticks_per_timeslice ) { + if ( rtems_configuration_get_ticks_per_timeslice() ) { Old_ticker = (rtems_isr_entry) set_vector( clock_isr, CLOCK_VECTOR, 1 ); /* * Hardware specific initialize goes here */ - mips_timer_rate = BSP_Configuration.microseconds_per_tick * CLOCKS_PER_MICROSECOND; + mips_timer_rate = rtems_configuration_get_microseconds_per_tick() * CLOCKS_PER_MICROSECOND; mips_set_timer( mips_timer_rate ); enable_int(CLOCK_VECTOR_MASK); } @@ -183,11 +190,9 @@ void Install_clock( void Clock_exit( void ) { - if ( BSP_Configuration.ticks_per_timeslice ) { - + if ( rtems_configuration_get_ticks_per_timeslice() ) { /* mips: turn off the timer interrupts */ disable_int(CLOCK_VECTOR_MASK); - } } diff --git a/c/src/lib/libcpu/mips64orion/include/Makefile.in b/c/src/lib/libcpu/mips64orion/include/Makefile.in index 2eae888240..60c41999f0 100644 --- a/c/src/lib/libcpu/mips64orion/include/Makefile.in +++ b/c/src/lib/libcpu/mips64orion/include/Makefile.in @@ -1,10 +1,6 @@ # # $Id$ # -# Install any include files needed by libcpu. -# Mainly this just means bsp.h which would normally be installed -# after libcpu is built. -# This is a bit of a hack. @SET_MAKE@ srcdir = @srcdir@ diff --git a/c/src/lib/libcpu/mips64orion/timer/timer.c b/c/src/lib/libcpu/mips64orion/timer/timer.c index 167a9b3804..dc7c61157e 100644 --- a/c/src/lib/libcpu/mips64orion/timer/timer.c +++ b/c/src/lib/libcpu/mips64orion/timer/timer.c @@ -47,7 +47,6 @@ #include -#include #define CLOCKS_PER_MICROSECOND ( CPU_CLOCK_RATE_MHZ ) #define TIMER_MAX_VALUE 0xffffffff diff --git a/c/src/lib/libcpu/powerpc/mpc505/timer/Makefile.in b/c/src/lib/libcpu/powerpc/mpc505/timer/Makefile.in index 888379c3d1..3b1b15f228 100644 --- a/c/src/lib/libcpu/powerpc/mpc505/timer/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc505/timer/Makefile.in @@ -62,8 +62,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/powerpc/mpc750/Makefile.in b/c/src/lib/libcpu/powerpc/mpc750/Makefile.in index 499a88ce34..94355ee0c2 100644 --- a/c/src/lib/libcpu/powerpc/mpc750/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc750/Makefile.in @@ -20,7 +20,8 @@ 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 clock wrapup +SUB_DIRS = exceptions mmu wrapup Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ diff --git a/c/src/lib/libcpu/powerpc/mpc750/wrapup/Makefile.in b/c/src/lib/libcpu/powerpc/mpc750/wrapup/Makefile.in index 11e6d9df59..20d9003998 100644 --- a/c/src/lib/libcpu/powerpc/mpc750/wrapup/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc750/wrapup/Makefile.in @@ -13,7 +13,8 @@ PROJECT_ROOT = @PROJECT_ROOT@ VPATH = @srcdir@ -PROC_SPECIFIC_O_PIECES = exceptions mmu clock +# PROC_SPECIFIC_O_PIECES = exceptions mmu clock +PROC_SPECIFIC_O_PIECES = exceptions mmu GENERIC_PIECES = # bummer; have to use $foreach since % pattern subst rules only replace 1x diff --git a/c/src/lib/libcpu/powerpc/mpc821/clock/Makefile.in b/c/src/lib/libcpu/powerpc/mpc821/clock/Makefile.in index c4178b8077..dfd133eaf1 100644 --- a/c/src/lib/libcpu/powerpc/mpc821/clock/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc821/clock/Makefile.in @@ -62,8 +62,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/powerpc/mpc821/clock/clock.c b/c/src/lib/libcpu/powerpc/mpc821/clock/clock.c index bf11c9bcbb..ce27c426a9 100644 --- a/c/src/lib/libcpu/powerpc/mpc821/clock/clock.c +++ b/c/src/lib/libcpu/powerpc/mpc821/clock/clock.c @@ -36,7 +36,6 @@ * $Id$ */ -#include #include #include @@ -74,7 +73,7 @@ void Install_clock(rtems_isr_entry clock_isr) Clock_driver_ticks = 0; - pit_value = BSP_Configuration.microseconds_per_tick / + pit_value = rtems_configuration_get_microseconds_per_tick() / Cpu_table.clicks_per_usec; if (pit_value == 0) { pit_value = 0xffff; @@ -85,7 +84,7 @@ void Install_clock(rtems_isr_entry clock_isr) if (pit_value > 0xffff) { /* pit is only 16 bits long */ rtems_fatal_error_occurred(-1); } - if (BSP_Configuration.ticks_per_timeslice) { + if ( rtems_configuration_get_ticks_per_timeslice() ) { /* * initialize the interval here @@ -131,7 +130,7 @@ ReInstall_clock(rtems_isr_entry new_clock_isr) void Clock_exit(void) { - if ( BSP_Configuration.ticks_per_timeslice ) { + if ( rtems_configuration_get_ticks_per_timeslice() ) { /* disable PIT and PIT interrupts */ m821.piscr &= ~(M821_PISCR_PTE | M821_PISCR_PIE); diff --git a/c/src/lib/libcpu/powerpc/mpc821/console-generic/console-generic.c b/c/src/lib/libcpu/powerpc/mpc821/console-generic/console-generic.c index 8e8b876379..4b6a3a308b 100644 --- a/c/src/lib/libcpu/powerpc/mpc821/console-generic/console-generic.c +++ b/c/src/lib/libcpu/powerpc/mpc821/console-generic/console-generic.c @@ -42,7 +42,6 @@ * $Id$ */ -#include #include #include #include diff --git a/c/src/lib/libcpu/powerpc/mpc821/include/Makefile.in b/c/src/lib/libcpu/powerpc/mpc821/include/Makefile.in index 0eba787c45..7d0bbf9f31 100644 --- a/c/src/lib/libcpu/powerpc/mpc821/include/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc821/include/Makefile.in @@ -1,10 +1,6 @@ # # $Id$ # -# Install any include files needed by libcpu. -# Mainly this just means bsp.h which would normally be installed -# after libcpu is built. -# This is a bit of a hack. @SET_MAKE@ srcdir = @srcdir@ diff --git a/c/src/lib/libcpu/powerpc/mpc821/timer/Makefile.in b/c/src/lib/libcpu/powerpc/mpc821/timer/Makefile.in index 2bb4b3782a..f1ef92cbe5 100644 --- a/c/src/lib/libcpu/powerpc/mpc821/timer/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc821/timer/Makefile.in @@ -62,8 +62,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/powerpc/mpc821/timer/timer.c b/c/src/lib/libcpu/powerpc/mpc821/timer/timer.c index 0700fea807..d9c42e9565 100644 --- a/c/src/lib/libcpu/powerpc/mpc821/timer/timer.c +++ b/c/src/lib/libcpu/powerpc/mpc821/timer/timer.c @@ -43,7 +43,6 @@ * $Id$ */ -#include #include #include diff --git a/c/src/lib/libcpu/powerpc/mpc821/vectors/align_h.S b/c/src/lib/libcpu/powerpc/mpc821/vectors/align_h.S index 9a785e347d..98b5ea891a 100644 --- a/c/src/lib/libcpu/powerpc/mpc821/vectors/align_h.S +++ b/c/src/lib/libcpu/powerpc/mpc821/vectors/align_h.S @@ -44,7 +44,6 @@ */ #include "asm.h" -/*#include "bsp.h"*/ #define ALIGN_REGS 0x0140 .set CACHE_SIZE,16 # cache line size of 32 bytes diff --git a/c/src/lib/libcpu/powerpc/mpc860/clock/Makefile.in b/c/src/lib/libcpu/powerpc/mpc860/clock/Makefile.in index aa3be76e89..5ac2b435a0 100644 --- a/c/src/lib/libcpu/powerpc/mpc860/clock/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc860/clock/Makefile.in @@ -62,8 +62,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/powerpc/mpc860/clock/clock.c b/c/src/lib/libcpu/powerpc/mpc860/clock/clock.c index d63cd5a5cf..452b939a6d 100644 --- a/c/src/lib/libcpu/powerpc/mpc860/clock/clock.c +++ b/c/src/lib/libcpu/powerpc/mpc860/clock/clock.c @@ -36,7 +36,7 @@ * $Id$ */ -#include +#include #include #include @@ -74,7 +74,7 @@ void Install_clock(rtems_isr_entry clock_isr) Clock_driver_ticks = 0; - pit_value = BSP_Configuration.microseconds_per_tick / + pit_value = rtems_configuration_get_microseconds_per_tick() / Cpu_table.clicks_per_usec; if (pit_value == 0) { pit_value = 0xffff; @@ -85,7 +85,7 @@ void Install_clock(rtems_isr_entry clock_isr) if (pit_value > 0xffff) { /* pit is only 16 bits long */ rtems_fatal_error_occurred(-1); } - if (BSP_Configuration.ticks_per_timeslice) { + if ( rtems_configuration_get_ticks_per_timeslice() ) { /* * initialize the interval here @@ -131,7 +131,7 @@ ReInstall_clock(rtems_isr_entry new_clock_isr) void Clock_exit(void) { - if ( BSP_Configuration.ticks_per_timeslice ) { + if ( rtems_configuration_get_ticks_per_timeslice() ) { /* disable PIT and PIT interrupts */ m860.piscr &= ~(M860_PISCR_PTE | M860_PISCR_PIE); diff --git a/c/src/lib/libcpu/powerpc/mpc860/console-generic/console-generic.c b/c/src/lib/libcpu/powerpc/mpc860/console-generic/console-generic.c index 10a858b07e..604bb8734a 100644 --- a/c/src/lib/libcpu/powerpc/mpc860/console-generic/console-generic.c +++ b/c/src/lib/libcpu/powerpc/mpc860/console-generic/console-generic.c @@ -44,7 +44,7 @@ * $Id$ */ -#include +#include #include #include #include diff --git a/c/src/lib/libcpu/powerpc/mpc860/include/Makefile.in b/c/src/lib/libcpu/powerpc/mpc860/include/Makefile.in index 9bb0657a74..3d3263f522 100644 --- a/c/src/lib/libcpu/powerpc/mpc860/include/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc860/include/Makefile.in @@ -1,10 +1,6 @@ # # $Id$ # -# Install any include files needed by libcpu. -# Mainly this just means bsp.h which would normally be installed -# after libcpu is built. -# This is a bit of a hack. @SET_MAKE@ srcdir = @srcdir@ diff --git a/c/src/lib/libcpu/powerpc/mpc860/timer/Makefile.in b/c/src/lib/libcpu/powerpc/mpc860/timer/Makefile.in index 6b7d7361bb..2a52daf5d7 100644 --- a/c/src/lib/libcpu/powerpc/mpc860/timer/Makefile.in +++ b/c/src/lib/libcpu/powerpc/mpc860/timer/Makefile.in @@ -62,8 +62,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/powerpc/mpc860/timer/timer.c b/c/src/lib/libcpu/powerpc/mpc860/timer/timer.c index c97439f2d6..732ab565a7 100644 --- a/c/src/lib/libcpu/powerpc/mpc860/timer/timer.c +++ b/c/src/lib/libcpu/powerpc/mpc860/timer/timer.c @@ -43,7 +43,6 @@ * $Id$ */ -#include #include #include diff --git a/c/src/lib/libcpu/powerpc/mpc860/vectors/align_h.S b/c/src/lib/libcpu/powerpc/mpc860/vectors/align_h.S index 9a785e347d..98b5ea891a 100644 --- a/c/src/lib/libcpu/powerpc/mpc860/vectors/align_h.S +++ b/c/src/lib/libcpu/powerpc/mpc860/vectors/align_h.S @@ -44,7 +44,6 @@ */ #include "asm.h" -/*#include "bsp.h"*/ #define ALIGN_REGS 0x0140 .set CACHE_SIZE,16 # cache line size of 32 bytes diff --git a/c/src/lib/libcpu/powerpc/ppc403/clock/Makefile.in b/c/src/lib/libcpu/powerpc/ppc403/clock/Makefile.in index b69e86feea..df95503c19 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/clock/Makefile.in +++ b/c/src/lib/libcpu/powerpc/ppc403/clock/Makefile.in @@ -62,8 +62,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/powerpc/ppc403/clock/clock.c b/c/src/lib/libcpu/powerpc/ppc403/clock/clock.c index 99b538dcd3..dfcbea5535 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/clock/clock.c +++ b/c/src/lib/libcpu/powerpc/ppc403/clock/clock.c @@ -37,7 +37,7 @@ * $Id$ */ -#include +#include #include #include @@ -164,11 +164,10 @@ void Install_clock(rtems_isr_entry clock_isr) else if ((pvr & 0xff00) == 0x0100) /* 403GB */ auto_restart = 1; - pit_value = BSP_Configuration.microseconds_per_tick * + pit_value = rtems_configuration_get_microseconds_per_tick() * Cpu_table.clicks_per_usec; - if (BSP_Configuration.ticks_per_timeslice) - { + if ( rtems_configuration_get_ticks_per_timeslice() ) { register rtems_unsigned32 tcr; /* @@ -218,8 +217,7 @@ ReInstall_clock(rtems_isr_entry new_clock_isr) void Clock_exit(void) { - if ( BSP_Configuration.ticks_per_timeslice ) - { + if ( rtems_configuration_get_ticks_per_timeslice() ) { register rtems_unsigned32 tcr; asm volatile ("mfspr %0, 0x3da" : "=r" ((tcr))); /* TCR */ diff --git a/c/src/lib/libcpu/powerpc/ppc403/console/console.c b/c/src/lib/libcpu/powerpc/ppc403/console/console.c index 8d073b672b..b1fc7bfe9c 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/console/console.c +++ b/c/src/lib/libcpu/powerpc/ppc403/console/console.c @@ -56,7 +56,7 @@ #define NO_BSP_INIT -#include +#include #include #include "../ictrl/ictrl.h" #include /* for atexit() */ diff --git a/c/src/lib/libcpu/powerpc/ppc403/console/console.c.polled b/c/src/lib/libcpu/powerpc/ppc403/console/console.c.polled index a623dde95a..e5d3b6fbce 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/console/console.c.polled +++ b/c/src/lib/libcpu/powerpc/ppc403/console/console.c.polled @@ -31,7 +31,7 @@ #define NO_BSP_INIT -#include +#include #include extern rtems_cpu_table Cpu_table; /* owned by BSP */ diff --git a/c/src/lib/libcpu/powerpc/ppc403/ictrl/Makefile.in b/c/src/lib/libcpu/powerpc/ppc403/ictrl/Makefile.in index bb29e2c931..9d8d10ee23 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/ictrl/Makefile.in +++ b/c/src/lib/libcpu/powerpc/ppc403/ictrl/Makefile.in @@ -69,8 +69,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) @$(INSTALL_CHANGE) -m 644 $(H_FILES) $(PROJECT_INCLUDE) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/powerpc/ppc403/ictrl/ictrl.c b/c/src/lib/libcpu/powerpc/ppc403/ictrl/ictrl.c index 11d09f748a..8f808d432d 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/ictrl/ictrl.c +++ b/c/src/lib/libcpu/powerpc/ppc403/ictrl/ictrl.c @@ -21,7 +21,7 @@ */ #include "ictrl.h" -#include +#include #include #include /* for atexit() */ diff --git a/c/src/lib/libcpu/powerpc/ppc403/include/Makefile.in b/c/src/lib/libcpu/powerpc/ppc403/include/Makefile.in index 344f4da03d..aafe051965 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/include/Makefile.in +++ b/c/src/lib/libcpu/powerpc/ppc403/include/Makefile.in @@ -1,10 +1,6 @@ # # $Id$ # -# Install any include files needed by libcpu. -# Mainly this just means bsp.h which would normally be installed -# after libcpu is built. -# This is a bit of a hack. @SET_MAKE@ srcdir = @srcdir@ diff --git a/c/src/lib/libcpu/powerpc/ppc403/timer/Makefile.in b/c/src/lib/libcpu/powerpc/ppc403/timer/Makefile.in index af94bb3abf..68f727435c 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/timer/Makefile.in +++ b/c/src/lib/libcpu/powerpc/ppc403/timer/Makefile.in @@ -62,8 +62,6 @@ ${PGM}: ${SRCS} ${OBJS} all: ${ARCH} $(SRCS) $(PGM) -# the .rel file built here will be put into libbsp.a by -# libbsp/hppa/BSP/wrapup/Makefile install: all Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status diff --git a/c/src/lib/libcpu/powerpc/ppc403/timer/timer.c b/c/src/lib/libcpu/powerpc/ppc403/timer/timer.c index 0881eef128..0ff48aec90 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/timer/timer.c +++ b/c/src/lib/libcpu/powerpc/ppc403/timer/timer.c @@ -34,7 +34,6 @@ * $Id$ */ -#include #include extern rtems_cpu_table Cpu_table; /* owned by BSP */ diff --git a/c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.S b/c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.S index d16298343d..b8ead27032 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.S +++ b/c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.S @@ -44,7 +44,7 @@ */ #include "asm.h" -#include "bsp.h" +#include "rtems.h" .set CACHE_SIZE,16 # cache line size of 32 bytes .set CACHE_SIZE_L2,4 # cache line size, log 2 diff --git a/c/src/lib/libcpu/sh/sh7032/clock/ckinit.c b/c/src/lib/libcpu/sh/sh7032/clock/ckinit.c index 885cdbd752..7aef64ed99 100644 --- a/c/src/lib/libcpu/sh/sh7032/clock/ckinit.c +++ b/c/src/lib/libcpu/sh/sh7032/clock/ckinit.c @@ -22,7 +22,7 @@ * $Id$ */ -#include +#include #include @@ -143,7 +143,7 @@ void Install_clock( */ Clock_driver_ticks = 0; - Clock_isrs_const = BSP_Configuration.microseconds_per_tick / 10000; + Clock_isrs_const = rtems_configuration_get_microseconds_per_tick() / 10000; Clock_isrs = Clock_isrs_const; /* @@ -151,7 +151,7 @@ void Install_clock( * wants a clock tick. */ - if ( BSP_Configuration.ticks_per_timeslice ) { + if ( rtems_configuration_get_ticks_per_timeslice() ) { rtems_interrupt_catch( Clock_isr, CLOCK_VECTOR, &Old_ticker ); /* * Hardware specific initialize goes here @@ -191,7 +191,7 @@ void Install_clock( rtems_fatal_error_occurred( RTEMS_NOT_CONFIGURED); /* set counter limits */ - write16( _ITU_COUNTER0_MICROSECOND * BSP_Configuration.microseconds_per_tick, + write16( _ITU_COUNTER0_MICROSECOND * rtems_configuration_get_microseconds_per_tick(), ITU_GRA0); /* start counter */ @@ -214,7 +214,7 @@ void Install_clock( void Clock_exit( void ) { unsigned8 temp8 = 0; - if ( BSP_Configuration.ticks_per_timeslice ) { + if ( rtems_configuration_get_ticks_per_timeslice() ) { /* turn off the timer interrupts */ /* set interrupt priority to 0 */ diff --git a/c/src/lib/libcpu/sh/sh7032/console/console.c b/c/src/lib/libcpu/sh/sh7032/console/console.c index db308cbb55..6c16adfa5f 100644 --- a/c/src/lib/libcpu/sh/sh7032/console/console.c +++ b/c/src/lib/libcpu/sh/sh7032/console/console.c @@ -30,6 +30,7 @@ */ #include +#include #include #include diff --git a/c/src/lib/libcpu/sh/sh7032/include/sci.h b/c/src/lib/libcpu/sh/sh7032/include/sci.h index 1b1633a488..d897003315 100644 --- a/c/src/lib/libcpu/sh/sh7032/include/sci.h +++ b/c/src/lib/libcpu/sh/sh7032/include/sci.h @@ -26,7 +26,7 @@ #define _sh_sci_h #ifdef __cplusplus -extern"C" { +extern "C" { #endif /* diff --git a/c/src/lib/libcpu/sh/sh7032/timer/timer.c b/c/src/lib/libcpu/sh/sh7032/timer/timer.c index ddf8bfc06b..03ffdd7e56 100644 --- a/c/src/lib/libcpu/sh/sh7032/timer/timer.c +++ b/c/src/lib/libcpu/sh/sh7032/timer/timer.c @@ -29,7 +29,7 @@ * $Id$ */ -#include +#include #include #include diff --git a/c/src/tests/psxtests/psxstat/main.c b/c/src/tests/psxtests/psxstat/main.c index 37658f4feb..57fffc276e 100644 --- a/c/src/tests/psxtests/psxstat/main.c +++ b/c/src/tests/psxtests/psxstat/main.c @@ -32,6 +32,8 @@ rtems_task Init( #define CONFIGURE_TEST_NEEDS_CLOCK_DRIVER #define CONFIGURE_RTEMS_INIT_TASKS_TABLE +#define CONFIGURE_INIT_TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE * 2) + #define CONFIGURE_INIT diff --git a/c/src/tests/samples/minimum/init.c b/c/src/tests/samples/minimum/init.c index 7474b4a1c2..d36c60324a 100644 --- a/c/src/tests/samples/minimum/init.c +++ b/c/src/tests/samples/minimum/init.c @@ -28,6 +28,8 @@ rtems_task Init( #define CONFIGURE_RTEMS_INIT_TASKS_TABLE +#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM + #define CONFIGURE_INIT #include diff --git a/cpukit/rtems/include/rtems.h b/cpukit/rtems/include/rtems.h index 01c0b8478b..0db253f086 100644 --- a/cpukit/rtems/include/rtems.h +++ b/cpukit/rtems/include/rtems.h @@ -114,7 +114,6 @@ extern "C" { #define RTEMS_MINIMUN_HETERO_CONVERSION MP_PACKET_MINIMUN_HETERO_CONVERSION - #ifdef __cplusplus } #endif diff --git a/cpukit/sapi/include/rtems/config.h b/cpukit/sapi/include/rtems/config.h index ac2da06d97..8a2def6082 100644 --- a/cpukit/sapi/include/rtems/config.h +++ b/cpukit/sapi/include/rtems/config.h @@ -116,6 +116,52 @@ typedef struct { SAPI_EXTERN rtems_configuration_table *_Configuration_Table; SAPI_EXTERN rtems_multiprocessing_table *_Configuration_MP_table; +/* + * Some handy macros to avoid dependencies on either the BSP + * or the exact format of the configuration table. + */ + +#define rtems_configuration_get_work_space_start() \ + (_Configuration_Table->work_space_start) + +#define rtems_configuration_get_work_space_size() \ + (_Configuration_Table->work_space_size) + +#define rtems_configuration_get_maximum_extensions() \ + (_Configuration_Table->maximum_extensions) + +#define rtems_configuration_get_microseconds_per_tick() \ + (_Configuration_Table->microseconds_per_tick) +#define rtems_configuration_get_milliseconds_per_tick() \ + (_Configuration_Table->microseconds_per_tick / 1000) + +#define rtems_configuration_get_ticks_per_timeslice() \ + (_Configuration_Table->ticks_per_timeslice) + +#define rtems_configuration_get_maximum_devices() \ + (_Configuration_Table->maximum_devices) + +#define rtems_configuration_get_number_of_device_drivers() \ + (_Configuration_Table->number_of_device_drivers) + +#define rtems_configuration_get_device_driver_table() \ + (_Configuration_Table->device_driver_table) + +#define rtems_configuration_get_number_of_initial_extensions() \ + (_Configuration_Table->number_of_initial_extensions) + +#define rtems_configuration_get_user_extension_table() \ + (_Configuration_Table->user_extension_table) + +#define rtems_configuration_get_user_multiprocessing_table() \ + (_Configuration_Table->user_multiprocessing_table) + +#define rtems_configuration_get_rtems_api_configuration() \ + (_Configuration_Table->rtems_api_configuration) + +#define rtems_configuration_get_posix_api_configuration() \ + (_Configuration_Table->posix_api_configuration) + #ifdef __cplusplus } #endif diff --git a/cpukit/score/cpu/mips/rtems/score/cpu.h b/cpukit/score/cpu/mips/rtems/score/cpu.h index ba0e15ab10..0722a81ca6 100644 --- a/cpukit/score/cpu/mips/rtems/score/cpu.h +++ b/cpukit/score/cpu/mips/rtems/score/cpu.h @@ -435,9 +435,12 @@ typedef struct { void (*stack_free_hook)( void* ); /* end of fields required on all CPUs */ - unsigned32 some_other_cpu_dependent_info; + unsigned32 clicks_per_microsecond; } rtems_cpu_table; +#define rtems_cpu_configuration_get_clicks_per_microsecond() \ + (_CPU_Table.clicks_per_microsecond) + /* * This variable is optional. It is used on CPUs on which it is difficult * to generate an "uninitialized" FP context. It is filled in by diff --git a/cpukit/score/cpu/mips64orion/rtems/score/cpu.h b/cpukit/score/cpu/mips64orion/rtems/score/cpu.h index ba0e15ab10..0722a81ca6 100644 --- a/cpukit/score/cpu/mips64orion/rtems/score/cpu.h +++ b/cpukit/score/cpu/mips64orion/rtems/score/cpu.h @@ -435,9 +435,12 @@ typedef struct { void (*stack_free_hook)( void* ); /* end of fields required on all CPUs */ - unsigned32 some_other_cpu_dependent_info; + unsigned32 clicks_per_microsecond; } rtems_cpu_table; +#define rtems_cpu_configuration_get_clicks_per_microsecond() \ + (_CPU_Table.clicks_per_microsecond) + /* * This variable is optional. It is used on CPUs on which it is difficult * to generate an "uninitialized" FP context. It is filled in by diff --git a/scripts/Makefile.am b/scripts/Makefile.am index d75c44fb3a..fcb851094a 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -1,5 +1,6 @@ AUTOMAKE_OPTIONS = foreign +# add gnatnewlib once that one works. :) SUBDIRS = . binutils gccnewlib gdb rtems noinst_SCRIPTS = \ diff --git a/scripts/gccnewlib/Makefile.am b/scripts/gccnewlib/Makefile.am index 099ee80b17..b56767434f 100644 --- a/scripts/gccnewlib/Makefile.am +++ b/scripts/gccnewlib/Makefile.am @@ -4,6 +4,8 @@ AUTOMAKE_OPTIONS = foreign MKGCCNEWLIBSPEC = $(SHELL) $(top_builddir)/mkgccnewlibspec +C_ONLY_ARG = -a $(top_builddir)/gccnewlib/gccnewlib_c_only.spec.in + MKGCCNEWLIBSPEC_DEPS = \ $(top_builddir)/mkgccnewlibspec gccnewlib.spec.in $(top_builddir)/setup.cache @@ -14,7 +16,7 @@ i386-rtems-$(GCCNEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) $(MKGCCNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . i386-rtems i960-rtems-$(GCCNEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) - $(MKGCCNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . i960-rtems + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . i960-rtems m68k-rtems-$(GCCNEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) $(MKGCCNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . m68k-rtems @@ -38,7 +40,8 @@ sparc-rtems-$(GCCNEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) $(MKGCCNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . sparc-rtems TEMPLATES = \ -gccnewlib.spec.in +gccnewlib.spec.in \ +gccnewlib_c_only.spec.in RPM_SPECS_DATA = \ hppa1.1-rtems-$(GCCNEWLIBVERS).spec \ diff --git a/scripts/gnatnewlib/gnatnewlib.spec.in b/scripts/gnatnewlib/gnatnewlib.spec.in index 2a8fa1ef3b..7b91a4722b 100644 --- a/scripts/gnatnewlib/gnatnewlib.spec.in +++ b/scripts/gnatnewlib/gnatnewlib.spec.in @@ -9,22 +9,22 @@ Vendor: OAR Corporation Distribution: Linux Name: @target_alias@-gcc-newlib -Summary: gcc and newlib C Library for @target_alias@. +Summary: gnat, gcc, and newlib C Library for @target_alias@. Group: rtems Release: @Release@ Copyright: 1999 OARCorp -Provides: @target_alias@-gcc @target_alias@-chill @target_alias@-gcj -Provides: @target_alias@-g77 @target_alias@-objc +Provides: @target_alias@-gcc Requires: @target_alias@-binutils Autoreqprov: on Packager: corsepiu@faw.uni-ulm.de and joel@OARcorp.com -Version: gcc@gcc_version@newlib@newlib_version@ +Version: gnat@gnat_version@newlib@newlib_version@ Source0: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-@gcc_version@.tar.gz Source1: ftp://sourceware.cygnus/com/pub/newlib/newlib-@newlib_version@.tar.gz -Patch0: gcc-@gcc_version@-rtems-@gcc_patch_version@.diff +Source2: ftp://cs.nyu.edu/pub/gnat/gnat-@gnat_version@.tar.gz +Patch0: gcc-@gcc_version@-gnatrtems-@gcc_patch_version@.diff Patch1: newlib-@newlib_version@-rtems-@newlib_patch_version@.diff Buildroot: /tmp @@ -39,7 +39,7 @@ Buildroot: /tmp # your /usr/src/redhat/SOURCES directory ($RPM_SOURCE_DIR). # Or you can try the ftp options of rpm :-) # -NoSource: 0, 1 +NoSource: 0, 1, 2 %description RTEMS is an open source operating system for embedded systems. @@ -56,44 +56,6 @@ This is gcc's and newlib C Library's sources with patches for RTEMS. your /usr/src/redhat/SOURCES directory ($RPM_SOURCE_DIR). Or you can try the ftp options of rpm :-) -%package -n @target_alias@-gcc -Summary: rtems gcc and newlib C Library for @target_alias@ -Group: rtems -Requires: @target_alias@-binutils - -%description -n @target_alias@-gcc -RTEMS is an open source operating system for embedded systems. - -This is gcc and newlib C Library for @target_alias@. - -%package -n @target_alias@-chill -Summary: gcc/chill compiler for @target_alias@ -Group: rtems -Requires: @target_alias@-gcc - -%description -n @target_alias@-chill -RTEMS is an open source operating system for embedded systems. - -This is the gcc/chill compiler and support files for @target_alias@ - -%package -n @target_alias@-gcj -Summary: gcc/java compiler (gcj) for @target_alias@ -Group: rtems -Requires: @target_alias@-gcc - -%description -n @target_alias@-gcj -RTEMS is an open source operating system for embedded systems. - -This is the gcc/java compiler for @target_alias@ - -%package -n @target_alias@-g77 -Summary: gcc/g77 compiler for @target_alias@ -Group: rtems -Requires: @target_alias@-gcc - -%description -n @target_alias@-g77 -RTEMS is an open source operating system for embedded systems. - This is the gcc/g77 compiler for @target_alias@ %package -n @target_alias@-objc diff --git a/scripts/mkgccnewlibspec.in b/scripts/mkgccnewlibspec.in index c27279c368..054cdeac1f 100644 --- a/scripts/mkgccnewlibspec.in +++ b/scripts/mkgccnewlibspec.in @@ -17,6 +17,8 @@ usage() exit 1 ; } +specsrc=${RTEMS_DIR}/gccnewlib/gccnewlib.spec.in + while test $# -ge 2; do case $1 in -cfg) @@ -28,6 +30,10 @@ case $1 in shift dst=$1 shift +-a) # alternate specs file + shift + specsrc=$1 + shift ;; -*) echo "invalid option $1"; @@ -56,7 +62,7 @@ sed -e "s%@Release@%${gccnewlib_rpm_release}%g" \ -e "s%@gcc_patch_version@%${gcc_patch_version}%g" \ -e "s%@newlib_version@%${newlib_version}%g" \ -e "s%@newlib_patch_version@%${newlib_patch_version}%g" \ -< ${RTEMS_DIR}/gccnewlib/gccnewlib.spec.in \ +< ${specsrc} \ > ${specfile} echo Generated ${specfile}. diff --git a/testsuites/psxtests/psxstat/main.c b/testsuites/psxtests/psxstat/main.c index 37658f4feb..57fffc276e 100644 --- a/testsuites/psxtests/psxstat/main.c +++ b/testsuites/psxtests/psxstat/main.c @@ -32,6 +32,8 @@ rtems_task Init( #define CONFIGURE_TEST_NEEDS_CLOCK_DRIVER #define CONFIGURE_RTEMS_INIT_TASKS_TABLE +#define CONFIGURE_INIT_TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE * 2) + #define CONFIGURE_INIT diff --git a/testsuites/samples/minimum/init.c b/testsuites/samples/minimum/init.c index 7474b4a1c2..d36c60324a 100644 --- a/testsuites/samples/minimum/init.c +++ b/testsuites/samples/minimum/init.c @@ -28,6 +28,8 @@ rtems_task Init( #define CONFIGURE_RTEMS_INIT_TASKS_TABLE +#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM + #define CONFIGURE_INIT #include -- cgit v1.2.3