summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sh/gensh4
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2001-10-15 18:01:50 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2001-10-15 18:01:50 +0000
commit6ce599cdf62258ce2eaf7a2a9c9c3407cf74cee3 (patch)
treedfe1a4bc2745cf2b2d58c381ce421fdd6caa1205 /c/src/lib/libbsp/sh/gensh4
parent2001-10-15 Ralf Corsepius <corsepiu@faw.uni-ulm.de> (diff)
downloadrtems-6ce599cdf62258ce2eaf7a2a9c9c3407cf74cee3.tar.bz2
2001-10-13 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Remove AC_SUBST(CPU_CLOCK_RATE_HZ), add START_HW_INIT-support macros, add console/Makefile. * Makefile.am: Add console SUBDIR. * hw_init/Makefile.am: Fix C_FILES, remove AM_CPPFLAGS/HZ. * include/Makefile.am: Add bspopts.h. * include/bsp.h: Comment out SH4_CPU_HZ_Frequency. * startup/bspstart.c: Comment out SH4_CPU_HZ_Frequency. * startup/linkcmds: Comment out OUTPUT_FORMAT for coff compatibility. * wrapup/Makefile.am: Add console to BSP_PIECES. * console/Makefile.am: New. * console/console.c: Moved from libcpu/sh/sh7750/sci/console.c.
Diffstat (limited to 'c/src/lib/libbsp/sh/gensh4')
-rw-r--r--c/src/lib/libbsp/sh/gensh4/ChangeLog15
-rw-r--r--c/src/lib/libbsp/sh/gensh4/Makefile.am2
-rw-r--r--c/src/lib/libbsp/sh/gensh4/configure.ac12
-rw-r--r--c/src/lib/libbsp/sh/gensh4/console/Makefile.am32
-rw-r--r--c/src/lib/libbsp/sh/gensh4/console/console.c486
-rw-r--r--c/src/lib/libbsp/sh/gensh4/hw_init/Makefile.am5
-rw-r--r--c/src/lib/libbsp/sh/gensh4/include/Makefile.am2
-rw-r--r--c/src/lib/libbsp/sh/gensh4/include/bsp.h2
-rw-r--r--c/src/lib/libbsp/sh/gensh4/startup/bspstart.c2
-rw-r--r--c/src/lib/libbsp/sh/gensh4/startup/linkcmds3
-rw-r--r--c/src/lib/libbsp/sh/gensh4/wrapup/Makefile.am2
11 files changed, 554 insertions, 9 deletions
diff --git a/c/src/lib/libbsp/sh/gensh4/ChangeLog b/c/src/lib/libbsp/sh/gensh4/ChangeLog
index a4d54adca7..3b0396d9a5 100644
--- a/c/src/lib/libbsp/sh/gensh4/ChangeLog
+++ b/c/src/lib/libbsp/sh/gensh4/ChangeLog
@@ -1,3 +1,18 @@
+2001-10-13 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
+
+ * configure.ac: Remove AC_SUBST(CPU_CLOCK_RATE_HZ), add
+ START_HW_INIT-support macros, add console/Makefile.
+ * Makefile.am: Add console SUBDIR.
+ * hw_init/Makefile.am: Fix C_FILES, remove AM_CPPFLAGS/HZ.
+ * include/Makefile.am: Add bspopts.h.
+ * include/bsp.h: Comment out SH4_CPU_HZ_Frequency.
+ * startup/bspstart.c: Comment out SH4_CPU_HZ_Frequency.
+ * startup/linkcmds: Comment out OUTPUT_FORMAT for coff
+ compatibility.
+ * wrapup/Makefile.am: Add console to BSP_PIECES.
+ * console/Makefile.am: New.
+ * console/console.c: Moved from libcpu/sh/sh7750/sci/console.c.
+
2001-10-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Add bspopts.h; Add CPU_CLOCK_RATE_HZ.
diff --git a/c/src/lib/libbsp/sh/gensh4/Makefile.am b/c/src/lib/libbsp/sh/gensh4/Makefile.am
index 253fbb8310..5eb0b28573 100644
--- a/c/src/lib/libbsp/sh/gensh4/Makefile.am
+++ b/c/src/lib/libbsp/sh/gensh4/Makefile.am
@@ -7,7 +7,7 @@ ACLOCAL_AMFLAGS = -I ../../../../../../aclocal
## wrapup is the one that actually builds and installs the library
## from the individual .rel files built in other directories
-SUBDIRS = include start startup hw_init wrapup
+SUBDIRS = include start startup console hw_init wrapup
include $(top_srcdir)/../../bsp.am
diff --git a/c/src/lib/libbsp/sh/gensh4/configure.ac b/c/src/lib/libbsp/sh/gensh4/configure.ac
index 5fd3653223..bdbfa85cec 100644
--- a/c/src/lib/libbsp/sh/gensh4/configure.ac
+++ b/c/src/lib/libbsp/sh/gensh4/configure.ac
@@ -22,12 +22,21 @@ RTEMS_CANONICAL_HOST
## bsp-specific options
CPU_CLOCK_RATE_HZ=${CPU_CLOCK_RATE_HZ-96000000}
-AC_SUBST(CPU_CLOCK_RATE_HZ)
AC_DEFINE_UNQUOTED(
[CPU_CLOCK_RATE_HZ],
[$CPU_CLOCK_RATE_HZ],
[cpu clock rate in HZ])
+# START_HW_INIT
+# This switch selects whether 'early_hw_init()' is called from
+# 'start.S'; 'bsp_hw_init()' is always called from 'bspstart.c'
+#
+START_HW_INIT=${START_HW_INIT-1}
+AC_DEFINE_UNQUOTED(
+ [START_HW_INIT],
+ [$START_HW_INIT],
+ [Whether to call early_hw_init from start.S])
+
AM_CONFIG_HEADER(include/bspopts.h)
RTEMS_PROJECT_ROOT
@@ -37,6 +46,7 @@ include/Makefile
start/Makefile
startup/Makefile
hw_init/Makefile
+console/Makefile
wrapup/Makefile
])
AC_OUTPUT
diff --git a/c/src/lib/libbsp/sh/gensh4/console/Makefile.am b/c/src/lib/libbsp/sh/gensh4/console/Makefile.am
new file mode 100644
index 0000000000..81c2d41de8
--- /dev/null
+++ b/c/src/lib/libbsp/sh/gensh4/console/Makefile.am
@@ -0,0 +1,32 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+
+PGM = $(ARCH)/console.rel
+
+C_FILES = console.c
+C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
+
+OBJS = $(C_O_FILES)
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../../../../../../automake/compile.am
+include $(top_srcdir)/../../../../../../automake/lib.am
+
+#
+# (OPTIONAL) Add local stuff here using +=
+#
+
+$(PGM): $(OBJS)
+ $(make-rel)
+
+# the .rel file built here will be put into libbsp.a by
+# ../wrapup/Makefile
+
+all-local: $(ARCH) $(OBJS) $(PGM)
+
+.PRECIOUS: $(PGM)
+
+include $(top_srcdir)/../../../../../../automake/local.am
diff --git a/c/src/lib/libbsp/sh/gensh4/console/console.c b/c/src/lib/libbsp/sh/gensh4/console/console.c
new file mode 100644
index 0000000000..126e88949c
--- /dev/null
+++ b/c/src/lib/libbsp/sh/gensh4/console/console.c
@@ -0,0 +1,486 @@
+/*
+ * Console driver for SH-4 UART modules
+ *
+ * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia
+ * Author: Alexandra Kossovsky <sasha@oktet.ru>
+ *
+ * COPYRIGHT (c) 1989-1998.
+ * On-Line Applications Research Corporation (OAR).
+ * Copyright assigned to U.S. Government, 1994.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ *
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <bsp.h>
+
+#include <termios.h>
+#include <rtems/libio.h>
+#include "sh/sh4uart.h"
+
+/* Descriptor structures for two on-chip UART channels */
+sh4uart sh4_uarts[2];
+
+/* Console operations mode:
+ * 0 - raw (non-termios) polled input/output
+ * 1 - termios-based polled input/output
+ * 2 - termios-based interrupt-driven input/output
+ * 3 - non-termios over gdb stub
+ */
+int console_mode = 3;
+#define CONSOLE_MODE_RAW (0)
+#define CONSOLE_MODE_POLL (1)
+#define CONSOLE_MODE_INT (2)
+#define CONSOLE_MODE_IPL (3)
+
+/* Wrapper functions for SH-4 UART generic driver */
+
+/* console_poll_read --
+ * wrapper for poll read function
+ *
+ * PARAMETERS:
+ * minor - minor device number
+ *
+ * RETURNS:
+ * character code readed from UART, or -1 if there is no characters
+ * available
+ */
+static int
+console_poll_read(int minor)
+{
+ return sh4uart_poll_read(&sh4_uarts[minor]);
+}
+
+/* console_interrupt_write --
+ * wrapper for interrupt write function
+ *
+ * PARAMETERS:
+ * minor - minor device number
+ * buf - output buffer
+ * len - output buffer length
+ *
+ * RETURNS:
+ * result code
+ */
+static int
+console_interrupt_write(int minor, const char *buf, int len)
+{
+ return sh4uart_interrupt_write(&sh4_uarts[minor], buf, len);
+}
+
+/* console_poll_write --
+ * wrapper for polling mode write function
+ *
+ * PARAMETERS:
+ * minor - minor device number
+ * buf - output buffer
+ * len - output buffer length
+ *
+ * RETURNS:
+ * result code
+ */
+static int
+console_poll_write(int minor, const char *buf, int len)
+{
+ return sh4uart_poll_write(&sh4_uarts[minor], buf, len);
+}
+
+/* console_set_attributes --
+ * wrapper for hardware-dependent termios attributes setting
+ *
+ * PARAMETERS:
+ * minor - minor device number
+ * t - pointer to the termios structure
+ *
+ * RETURNS:
+ * result code
+ */
+static int
+console_set_attributes(int minor, const struct termios *t)
+{
+ return sh4uart_set_attributes(&sh4_uarts[minor], t);
+}
+
+/* console_stop_remote_tx --
+ * wrapper for stopping data flow from remote party.
+ *
+ * PARAMETERS:
+ * minor - minor device number
+ *
+ * RETURNS:
+ * result code
+ */
+static int
+console_stop_remote_tx(int minor)
+{
+ if (minor < sizeof(sh4_uarts)/sizeof(sh4_uarts[0]))
+ return sh4uart_stop_remote_tx(&sh4_uarts[minor]);
+ else
+ return RTEMS_INVALID_NUMBER;
+}
+
+/* console_start_remote_tx --
+ * wrapper for resuming data flow from remote party.
+ *
+ * PARAMETERS:
+ * minor - minor device number
+ *
+ */
+static int
+console_start_remote_tx(int minor)
+{
+ if (minor < sizeof(sh4_uarts)/sizeof(sh4_uarts[0]))
+ return sh4uart_start_remote_tx(&sh4_uarts[minor]);
+ else
+ return RTEMS_INVALID_NUMBER;
+}
+
+/* console_first_open --
+ * wrapper for UART controller initialization functions
+ *
+ * PARAMETERS:
+ * major - major device number
+ * minor - minor device number
+ * arg - libio device open argument
+ *
+ * RETURNS:
+ * error code
+ */
+static int
+console_first_open(int major, int minor, void *arg)
+{
+ rtems_libio_open_close_args_t *args = arg;
+ rtems_status_code sc;
+
+ sc = sh4uart_init(&sh4_uarts[minor], /* uart */
+ args->iop->data1, /* tty */
+ minor+1, /* channel */
+ (console_mode == CONSOLE_MODE_INT));
+
+ if (sc == RTEMS_SUCCESSFUL)
+ sc = sh4uart_reset(&sh4_uarts[minor]);
+
+ return sc;
+}
+
+/* console_last_close --
+ * wrapper for UART controller close function
+ *
+ * PARAMETERS:
+ * major - major device number
+ * minor - minor device number
+ * arg - libio device close argument
+ *
+ * RETURNS:
+ * error code
+ */
+static int
+console_last_close(int major, int minor, void *arg)
+{
+ return sh4uart_disable(&sh4_uarts[minor]);
+}
+
+/* console_reserve_resources --
+ * reserve termios resources for 2 UART channels
+ *
+ * PARAMETERS:
+ * configuration -- pointer to the RTEMS configuration table
+ *
+ * RETURNS:
+ * none
+ */
+void
+console_reserve_resources(rtems_configuration_table *configuration)
+{
+ if ((console_mode != CONSOLE_MODE_RAW) &&
+ (console_mode != CONSOLE_MODE_IPL))
+ rtems_termios_reserve_resources (configuration, 2);
+}
+
+/* console_initialize --
+ * This routine initializes the console IO drivers and register devices
+ * in RTEMS I/O system.
+ *
+ * PARAMETERS:
+ * major - major console device number
+ * minor - minor console device number (not used)
+ * arg - device initialize argument
+ *
+ * RETURNS:
+ * RTEMS error code (RTEMS_SUCCESSFUL if device initialized successfuly)
+ */
+rtems_device_driver
+console_initialize(rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg)
+{
+ rtems_status_code status;
+
+#ifdef SH4_WITH_IPL
+ /* booting from flash we cannot have IPL console */
+ if (boot_mode != SH4_BOOT_MODE_IPL && console_mode == CONSOLE_MODE_IPL)
+ console_mode = CONSOLE_MODE_INT;
+
+ /* break out from gdb if neccessary */
+ if (boot_mode == SH4_BOOT_MODE_IPL && console_mode != CONSOLE_MODE_IPL)
+ ipl_finish();
+#endif
+
+ /*
+ * Set up TERMIOS
+ */
+ if ((console_mode != CONSOLE_MODE_RAW) &&
+ (console_mode != CONSOLE_MODE_IPL))
+ rtems_termios_initialize ();
+
+ /*
+ * Register the devices
+ */
+ status = rtems_io_register_name ("/dev/console", major, 0);
+ if (status != RTEMS_SUCCESSFUL)
+ rtems_fatal_error_occurred (status);
+
+ status = rtems_io_register_name ("/dev/aux", major, 1);
+ if (status != RTEMS_SUCCESSFUL)
+ rtems_fatal_error_occurred (status);
+
+ if (console_mode == CONSOLE_MODE_RAW)
+ {
+ rtems_status_code sc;
+ sc = sh4uart_init(&sh4_uarts[0], /* uart */
+ NULL, /* tty */
+ 1, /* UART channel number */
+ 0); /* Poll-mode */
+
+ if (sc == RTEMS_SUCCESSFUL)
+ sc = sh4uart_reset(&sh4_uarts[0]);
+
+ sc = sh4uart_init(&sh4_uarts[1], /* uart */
+ NULL, /* tty */
+ 2, /* UART channel number */
+ 0); /* Poll-mode */
+
+ if (sc == RTEMS_SUCCESSFUL)
+ sc = sh4uart_reset(&sh4_uarts[1]);
+
+ return sc;
+ }
+
+ return RTEMS_SUCCESSFUL;
+}
+
+/* console_open --
+ * Open console device driver. Pass appropriate termios callback
+ * functions to termios library.
+ *
+ * PARAMETERS:
+ * major - major device number for console devices
+ * minor - minor device number for console
+ * arg - device opening argument
+ *
+ * RETURNS:
+ * RTEMS error code
+ */
+rtems_device_driver
+console_open(rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg)
+{
+ static const rtems_termios_callbacks intr_callbacks = {
+ console_first_open, /* firstOpen */
+ console_last_close, /* lastClose */
+ NULL, /* pollRead */
+ console_interrupt_write, /* write */
+ console_set_attributes, /* setAttributes */
+ console_stop_remote_tx, /* stopRemoteTx */
+ console_start_remote_tx, /* startRemoteTx */
+ 1 /* outputUsesInterrupts */
+ };
+ static const rtems_termios_callbacks poll_callbacks = {
+ console_first_open, /* firstOpen */
+ console_last_close, /* lastClose */
+ console_poll_read, /* pollRead */
+ console_poll_write, /* write */
+ console_set_attributes, /* setAttributes */
+ console_stop_remote_tx, /* stopRemoteTx */
+ console_start_remote_tx, /* startRemoteTx */
+ 0 /* outputUsesInterrupts */
+ };
+
+ switch (console_mode)
+ {
+ case CONSOLE_MODE_RAW:
+ case CONSOLE_MODE_IPL:
+ return RTEMS_SUCCESSFUL;
+
+ case CONSOLE_MODE_INT:
+ return rtems_termios_open(major, minor, arg, &intr_callbacks);
+
+ case CONSOLE_MODE_POLL:
+ return rtems_termios_open(major, minor, arg, &poll_callbacks);
+
+ default:
+ rtems_fatal_error_occurred(0xC07A1310);
+ }
+
+ return RTEMS_INTERNAL_ERROR;
+}
+
+/* console_close --
+ * Close console device.
+ *
+ * PARAMETERS:
+ * major - major device number for console devices
+ * minor - minor device number for console
+ * arg - device close argument
+ *
+ * RETURNS:
+ * RTEMS error code
+ */
+rtems_device_driver
+console_close(rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg)
+{
+ if ((console_mode != CONSOLE_MODE_RAW) &&
+ (console_mode != CONSOLE_MODE_IPL))
+ return rtems_termios_close (arg);
+ else
+ return RTEMS_SUCCESSFUL;
+}
+
+/* console_read --
+ * Read from the console device
+ *
+ * PARAMETERS:
+ * major - major device number for console devices
+ * minor - minor device number for console
+ * arg - device read argument
+ *
+ * RETURNS:
+ * RTEMS error code
+ */
+rtems_device_driver
+console_read(rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg)
+{
+ if ((console_mode != CONSOLE_MODE_RAW) &&
+ (console_mode != CONSOLE_MODE_IPL))
+ {
+ return rtems_termios_read (arg);
+ }
+ else
+ {
+ rtems_libio_rw_args_t *argp = arg;
+ char *buf = argp->buffer;
+ int count = argp->count;
+ int n = 0;
+ int c;
+ while (n < count)
+ {
+ do {
+ c = (console_mode == CONSOLE_MODE_RAW) ?
+ sh4uart_poll_read(&sh4_uarts[minor]) :
+ ipl_console_poll_read(minor);
+ } while (c == -1);
+ if (c == '\r')
+ c = '\n';
+ *(buf++) = c;
+ n++;
+ if (c == '\n')
+ break;
+ }
+ argp->bytes_moved = n;
+ return RTEMS_SUCCESSFUL;
+ }
+}
+
+/* console_write --
+ * Write to the console device
+ *
+ * PARAMETERS:
+ * major - major device number for console devices
+ * minor - minor device number for console
+ * arg - device write argument
+ *
+ * RETURNS:
+ * RTEMS error code
+ */
+rtems_device_driver
+console_write(rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg)
+{
+ switch (console_mode)
+ {
+ case CONSOLE_MODE_POLL:
+ case CONSOLE_MODE_INT:
+ return rtems_termios_write (arg);
+ case CONSOLE_MODE_RAW:
+ {
+ rtems_libio_rw_args_t *argp = arg;
+ char cr = '\r';
+ char *buf = argp->buffer;
+ int count = argp->count;
+ int i;
+
+ for (i = 0; i < count; i++)
+ {
+ if (*buf == '\n')
+ sh4uart_poll_write(&sh4_uarts[minor], &cr, 1);
+ sh4uart_poll_write(&sh4_uarts[minor], buf, 1);
+ buf++;
+ }
+ argp->bytes_moved = count;
+ return RTEMS_SUCCESSFUL;
+ }
+#ifdef SH4_WITH_IPL
+ case CONSOLE_MODE_IPL:
+ {
+ rtems_libio_rw_args_t *argp = arg;
+ char *buf = argp->buffer;
+ int count = argp->count;
+ ipl_console_poll_write(minor, buf, count);
+ argp->bytes_moved = count;
+ return RTEMS_SUCCESSFUL;
+ }
+#endif
+ default: /* Unreachable */
+ return RTEMS_NOT_DEFINED;
+ }
+}
+
+/* console_control --
+ * Handle console device I/O control (IOCTL)
+ *
+ * PARAMETERS:
+ * major - major device number for console devices
+ * minor - minor device number for console
+ * arg - device ioctl argument
+ *
+ * RETURNS:
+ * RTEMS error code
+ */
+rtems_device_driver
+console_control(rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg)
+{
+ if ((console_mode != CONSOLE_MODE_RAW) &&
+ (console_mode != CONSOLE_MODE_IPL))
+ {
+ return rtems_termios_ioctl (arg);
+ }
+ else
+ {
+ return RTEMS_SUCCESSFUL;
+ }
+}
+
+
+
diff --git a/c/src/lib/libbsp/sh/gensh4/hw_init/Makefile.am b/c/src/lib/libbsp/sh/gensh4/hw_init/Makefile.am
index 81fdc58949..82a6fe05ec 100644
--- a/c/src/lib/libbsp/sh/gensh4/hw_init/Makefile.am
+++ b/c/src/lib/libbsp/sh/gensh4/hw_init/Makefile.am
@@ -8,10 +8,7 @@ VPATH = @srcdir@:@srcdir@/../../shared:@srcdir@/../../../shared
PGM = $(ARCH)/hw_init.rel
-#C_FILES = hw_init.c bsplibc.c bsppost.c bspstart.c bspclean.c sbrk.c \
-# bootcard.c main.c gnatinstallhandler.c
C_FILES = hw_init.c
-
C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
OBJS = $(C_O_FILES)
@@ -24,7 +21,7 @@ include $(top_srcdir)/../../../../../../automake/lib.am
# (OPTIONAL) Add local stuff here using +=
#
-AM_CPPFLAGS += -DHZ=$(HZ)
+## FIXME: This is gcc-specific.
AM_CFLAGS += -fomit-frame-pointer
$(PGM): $(OBJS)
diff --git a/c/src/lib/libbsp/sh/gensh4/include/Makefile.am b/c/src/lib/libbsp/sh/gensh4/include/Makefile.am
index d54ee94993..a0f599c75d 100644
--- a/c/src/lib/libbsp/sh/gensh4/include/Makefile.am
+++ b/c/src/lib/libbsp/sh/gensh4/include/Makefile.am
@@ -4,7 +4,7 @@
AUTOMAKE_OPTIONS = foreign 1.4
-include_HEADERS = bsp.h coverhd.h sdram.h
+include_HEADERS = bsp.h bspopts.h coverhd.h sdram.h
$(PROJECT_INCLUDE)/%.h: %.h
$(INSTALL_DATA) $< $@
diff --git a/c/src/lib/libbsp/sh/gensh4/include/bsp.h b/c/src/lib/libbsp/sh/gensh4/include/bsp.h
index 332cd11296..7633dbfeba 100644
--- a/c/src/lib/libbsp/sh/gensh4/include/bsp.h
+++ b/c/src/lib/libbsp/sh/gensh4/include/bsp.h
@@ -134,10 +134,12 @@ extern unsigned32 WorkSpaceEnd ;
extern void *CPU_Interrupt_stack_low ;
extern void *CPU_Interrupt_stack_high ;
+#if OBSOLETE
/*
* This variable is nesessary for console driver.
*/
extern rtems_unsigned32 SH4_CPU_HZ_Frequency;
+#endif
/*
* Defined in start.S
diff --git a/c/src/lib/libbsp/sh/gensh4/startup/bspstart.c b/c/src/lib/libbsp/sh/gensh4/startup/bspstart.c
index 08b1cc320a..ff2798730f 100644
--- a/c/src/lib/libbsp/sh/gensh4/startup/bspstart.c
+++ b/c/src/lib/libbsp/sh/gensh4/startup/bspstart.c
@@ -46,10 +46,12 @@ rtems_cpu_table Cpu_table;
char *rtems_progname;
+#if OBSOLETE
/*
* This variable is nesessary for console driver.
*/
unsigned32 SH4_CPU_HZ_Frequency = CPU_CLOCK_RATE_HZ;
+#endif
/*
* Use the shared implementations of the following routines
diff --git a/c/src/lib/libbsp/sh/gensh4/startup/linkcmds b/c/src/lib/libbsp/sh/gensh4/startup/linkcmds
index 6a0342b538..431cc83069 100644
--- a/c/src/lib/libbsp/sh/gensh4/startup/linkcmds
+++ b/c/src/lib/libbsp/sh/gensh4/startup/linkcmds
@@ -16,9 +16,10 @@
* $Id$
*/
-
+/*
OUTPUT_FORMAT("elf32-shl", "elf32-shl",
"elf32-shl")
+ */
OUTPUT_ARCH(sh)
ENTRY(_start)
/* Do we need any of these for elf?
diff --git a/c/src/lib/libbsp/sh/gensh4/wrapup/Makefile.am b/c/src/lib/libbsp/sh/gensh4/wrapup/Makefile.am
index 4b54756366..674e70d569 100644
--- a/c/src/lib/libbsp/sh/gensh4/wrapup/Makefile.am
+++ b/c/src/lib/libbsp/sh/gensh4/wrapup/Makefile.am
@@ -6,7 +6,7 @@
AUTOMAKE_OPTIONS = foreign 1.4
-BSP_PIECES = startup hw_init
+BSP_PIECES = startup hw_init console
# pieces to pick up out of libcpu/sh/sh7750
CPU_PIECES = clock sci timer score