Index: c/src/lib/libbsp/sh/gensh1/ChangeLog
===================================================================
--- c/src/lib/libbsp/sh/gensh1/ChangeLog	(revision 4909a30e6329ddb3beff3145939bdc82d8c4dc80)
+++ c/src/lib/libbsp/sh/gensh1/ChangeLog	(revision 11a6c974621241c2d556112fe62700b7dd355b5b)
@@ -1,2 +1,11 @@
+2008-09-15	Joel Sherrill <joel.sherrill@oarcorp.com>
+
+	* Makefile.am, configure.ac, include/bsp.h, startup/linkcmds: Use
+	shared bsp_get_work_area() in its own file and rely on BSP Framework
+	to perform more initialization. After factoring this out, it turned
+	out that all SuperH BSPs has the same bsp_start() implementation so
+	this was made shared.
+	* startup/bspstart.c: Removed.
+
 2008-09-10	Joel Sherrill <joel.sherrill@oarcorp.com>
 
Index: c/src/lib/libbsp/sh/gensh1/Makefile.am
===================================================================
--- c/src/lib/libbsp/sh/gensh1/Makefile.am	(revision 4909a30e6329ddb3beff3145939bdc82d8c4dc80)
+++ c/src/lib/libbsp/sh/gensh1/Makefile.am	(revision 11a6c974621241c2d556112fe62700b7dd355b5b)
@@ -36,6 +36,7 @@
 
 startup_SOURCES = ../../shared/bsplibc.c ../../shared/bsppost.c \
-    ../../shared/bsppredriverhook.c startup/bspstart.c startup/bspclean.c \
-    ../../shared/sbrk.c ../../shared/bootcard.c \
+    ../../shared/bsppredriverhook.c ../shared/bspstart.c startup/bspclean.c \
+    ../shared/bspgetworkarea.c ../../shared/bsppretaskinghook.c \
+    ../../shared/sbrk.c ../../shared/bootcard.c ../shared/bsphwinit.c \
     ../../shared/gnatinstallhandler.c
 scitab_SOURCES = scitab.c
Index: c/src/lib/libbsp/sh/gensh1/configure.ac
===================================================================
--- c/src/lib/libbsp/sh/gensh1/configure.ac	(revision 4909a30e6329ddb3beff3145939bdc82d8c4dc80)
+++ c/src/lib/libbsp/sh/gensh1/configure.ac	(revision 11a6c974621241c2d556112fe62700b7dd355b5b)
@@ -20,6 +20,13 @@
 RTEMS_BSPOPTS_HELP([CPU_CLOCK_RATE_HZ],[cpu clock rate in HZ])
 
+RTEMS_BSPOPTS_SET([START_HW_INIT],[*],[])
+RTEMS_BSPOPTS_HELP([START_HW_INIT],
+[If defined, selects whether 'early_hw_init()' is called from 'start.S'; 
+ 'bsp_hw_init()' is always called from 'bspstart.c'])
+
 ## Used in scitab/Makefile.am
 AC_SUBST(CPU_CLOCK_RATE_HZ)
+
+RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION
 
 # Explicitly list all Makefiles here
Index: c/src/lib/libbsp/sh/gensh1/include/bsp.h
===================================================================
--- c/src/lib/libbsp/sh/gensh1/include/bsp.h	(revision 4909a30e6329ddb3beff3145939bdc82d8c4dc80)
+++ c/src/lib/libbsp/sh/gensh1/include/bsp.h	(revision 11a6c974621241c2d556112fe62700b7dd355b5b)
@@ -61,9 +61,4 @@
  */
 
-extern uint32_t         HeapStart ;
-extern uint32_t         HeapEnd ;
-extern uint32_t         WorkSpaceStart ;
-extern uint32_t         WorkSpaceEnd ;
-
 extern void *CPU_Interrupt_stack_low ;
 extern void *CPU_Interrupt_stack_high ;
Index: c/src/lib/libbsp/sh/gensh1/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/sh/gensh1/startup/bspstart.c	(revision 4909a30e6329ddb3beff3145939bdc82d8c4dc80)
+++ 	(revision )
@@ -1,103 +1,0 @@
-/*
- *  This routine starts the application.  It includes application,
- *  board, and monitor specific initialization and configuration.
- *  The generic CPU dependent initialization has been performed
- *  before this routine is invoked.
- *
- *  Authors: Ralf Corsepius (corsepiu@faw.uni-ulm.de) and
- *           Bernd Becker (becker@faw.uni-ulm.de)
- *
- *  COPYRIGHT (c) 1997-1998, FAW Ulm, Germany
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- *
- *  COPYRIGHT (c) 1998.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.com/license/LICENSE.
- *
- *  $Id$
- */
-
-#include <string.h>
-
-#include <bsp.h>
-#include <rtems/libio.h>
-#include <rtems/libcsupport.h>
-
-uint32_t bsp_clicks_per_second;
-
-/*
- *  Use the shared implementations of the following routines
- */
-
-void bsp_libc_init( void *, uint32_t, int );
-
-/*
- *  Function:   bsp_pretasking_hook
- *
- *  Description:
- *      BSP pretasking hook.  Called just before drivers are initialized.
- *      Used to setup libc and install any BSP extensions.
- *
- *  NOTES:
- *      Must not use libc (to do io) from here, since drivers are
- *      not yet initialized.
- *
- */
-
-void bsp_pretasking_hook(void)
-{
-    bsp_libc_init(&HeapStart, (char *)&HeapEnd - (char *)&HeapStart, 0);
-}
-
-/*
- *  bsp_start
- *
- *  This routine does the bulk of the system initialization.
- */
-
-void bsp_start(void)
-{
-  /*
-     For real boards you need to setup the hardware
-     and need to copy the vector table from rom to ram.
-
-     Depending on the board this can either be done from inside the rom
-     startup code, rtems startup code or here.
-   */
-
-  /*
-   *  Allocate the memory for the RTEMS Work Space.  This can come from
-   *  a variety of places: hard coded address, malloc'ed from outside
-   *  RTEMS world (e.g. simulator or primitive memory manager), or (as
-   *  typically done by stock BSPs) by subtracting the required amount
-   *  of work space from the last physical address on the CPU board.
-   */
-
-  /*
-   *  Need to "allocate" the memory for the RTEMS Workspace and
-   *  tell the RTEMS configuration where it is.  This memory is
-   *  not malloc'ed.  It is just "pulled from the air".
-   */
-
-  Configuration.work_space_start = (void *) &WorkSpaceStart ;
-  rtems_configuration_get_work_space_size()  =
-    (uint32_t) &WorkSpaceEnd -
-    (uint32_t) &WorkSpaceStart ;
-
-  /*
-   *  initialize the CPU table for this BSP
-   */
-
-#if ( CPU_ALLOCATE_INTERRUPT_STACK == FALSE )
-  _CPU_Interrupt_stack_low = &CPU_Interrupt_stack_low ;
-  _CPU_Interrupt_stack_high = &CPU_Interrupt_stack_high ;
-#endif
-  bsp_clicks_per_second = CPU_CLOCK_RATE_HZ;
-}
Index: c/src/lib/libbsp/sh/gensh1/startup/linkcmds
===================================================================
--- c/src/lib/libbsp/sh/gensh1/startup/linkcmds	(revision 4909a30e6329ddb3beff3145939bdc82d8c4dc80)
+++ c/src/lib/libbsp/sh/gensh1/startup/linkcmds	(revision 11a6c974621241c2d556112fe62700b7dd355b5b)
@@ -31,4 +31,7 @@
 OUTPUT_ARCH(sh)
 ENTRY(_start)
+
+_RamBase = DEFINED(_RamBase) ? _RamBase : 0x0a040000;
+_RamSize = DEFINED(_RamSize) ? _RamSize : 512K;
 
 MEMORY
@@ -105,4 +108,5 @@
   .text   .   	 :
   {
+    _start = .;
     *(.text*)
     *(.stub)
@@ -176,11 +180,5 @@
   PROVIDE (end = .);
 
-  _HeapStart = . ;
-  . = . + 1024 * 20 ;
-  PROVIDE( _HeapEnd = . );
-
   _WorkSpaceStart = . ;
-  . = 0x0a080000 ;
-  PROVIDE(_WorkSpaceEnd = .);
 
   _CPU_Interrupt_stack_low  = 0x0f000000 ;
