Index: c/src/lib/libbsp/i386/ts_386ex/ChangeLog
===================================================================
--- c/src/lib/libbsp/i386/ts_386ex/ChangeLog	(revision 3a261b9b6d39521121b40f87ab23a41ec84859ae)
+++ c/src/lib/libbsp/i386/ts_386ex/ChangeLog	(revision 17d9f5f9fabf9ffde87c0d1d3993e29e721efad1)
@@ -1,2 +1,7 @@
+2008-09-18	Joel Sherrill <joel.sherrill@oarcorp.com>
+
+	* Makefile.am, configure.ac, startup/bspstart.c, startup/linkcmds: Use
+	top level shared bsp_get_work_area() implementation.
+
 2008-09-18	Joel Sherrill <joel.sherrill@oarcorp.com>
 
Index: c/src/lib/libbsp/i386/ts_386ex/Makefile.am
===================================================================
--- c/src/lib/libbsp/i386/ts_386ex/Makefile.am	(revision 3a261b9b6d39521121b40f87ab23a41ec84859ae)
+++ c/src/lib/libbsp/i386/ts_386ex/Makefile.am	(revision 17d9f5f9fabf9ffde87c0d1d3993e29e721efad1)
@@ -40,5 +40,6 @@
 include_HEADERS += ../../i386/shared/comm/uart.h
 startup_SOURCES = ../../shared/bspclean.c ../../shared/bsplibc.c \
-    ../../shared/bsppredriverhook.c \
+    ../../shared/bsppredriverhook.c ../../shared/bsppretaskinghook.c \
+    ../../shared/bspgetworkarea.c \
     ../../shared/bsppost.c startup/bspstart.c ../../shared/bootcard.c \
     ../../shared/sbrk.c ../../i386/shared/irq/idt.c \
Index: c/src/lib/libbsp/i386/ts_386ex/configure.ac
===================================================================
--- c/src/lib/libbsp/i386/ts_386ex/configure.ac	(revision 3a261b9b6d39521121b40f87ab23a41ec84859ae)
+++ c/src/lib/libbsp/i386/ts_386ex/configure.ac	(revision 17d9f5f9fabf9ffde87c0d1d3993e29e721efad1)
@@ -41,4 +41,6 @@
 [Enables some debugging in the BSP's uart.])
 
+RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION
+
 # Explicitly list all Makefiles here
 AC_CONFIG_FILES([Makefile])
Index: c/src/lib/libbsp/i386/ts_386ex/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/i386/ts_386ex/startup/bspstart.c	(revision 3a261b9b6d39521121b40f87ab23a41ec84859ae)
+++ c/src/lib/libbsp/i386/ts_386ex/startup/bspstart.c	(revision 17d9f5f9fabf9ffde87c0d1d3993e29e721efad1)
@@ -5,5 +5,5 @@
  *  before this routine is invoked.
  *
- *  COPYRIGHT (c) 1989-1999.
+ *  COPYRIGHT (c) 1989-2008.
  *  On-Line Applications Research Corporation (OAR).
  *
@@ -21,49 +21,7 @@
  */
 
-void bsp_clean_up(void);
-
 #include <bsp.h>
 
-/*
- *  Tells us where to put the workspace in case remote debugger is present.
- */
-
-extern uint32_t          rdb_start;
-
-/*
- *  Use the shared implementations of the following routines
- */
-
-void bsp_libc_init( void *, uint32_t, int );
-
-/*
- *  Function:   bsp_pretasking_hook
- *  Created:    95/03/10
- *
- *  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)
-{
-    extern int heap_bottom;
-    uint32_t         heap_start;
-    uint32_t         heap_size;
-
-    heap_start = (uint32_t) &heap_bottom;
-    if (heap_start & (CPU_ALIGNMENT-1))
-      heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
-
-    heap_size = Configuration.work_space_start -(void *) heap_start ;
-    heap_size &= 0xfffffff0;  /* keep it as a multiple of 16 bytes */
-
-    bsp_libc_init((void *) heap_start, heap_size, 0);
-}
+extern void rtems_irq_mngt_init(void);
 
 /*
@@ -72,11 +30,6 @@
  *  This routine does the bulk of the system initialization.
  */
-
 void bsp_start( void )
 {
-  extern void rtems_irq_mngt_init(void);
-
-  Configuration.work_space_start = (void *)
-     RAM_END - rtems_configuration_get_work_space_size();
 
   /*
@@ -89,26 +42,3 @@
    */
   rtems_exception_init_mngt();
-
-  /*
-   *  The following information is very useful when debugging.
-   */
-
-#ifdef BSP_DEBUG
-  printk( "RAM_START = 0x%x\nRAM_END = 0x%x\n", RAM_START, RAM_END );
-  printk( "work_space_start = 0x%x\n",
-     Configuration.work_space_start );
-  printk( "work_space_size = 0x%x\n",
-     rtems_configuration_get_work_space_size() );
-  printk( "microseconds_per_tick = 0x%x\n",
-     rtems_configuration_get_microseconds_per_tick() );
-  printk( "ticks_per_timeslice = 0x%x\n",
-     rtems_configuration_get_ticks_per_timeslice() );
-
-  /*  printk( "_heap_size = 0x%x\n", _heap_size );
-      printk( "_stack_size = 0x%x\n", _stack_size ); */
-#endif
 }
-
-void bsp_clean_up(void) {
-  printk("bsp_cleanup called\n");
-}
Index: c/src/lib/libbsp/i386/ts_386ex/startup/linkcmds
===================================================================
--- c/src/lib/libbsp/i386/ts_386ex/startup/linkcmds	(revision 3a261b9b6d39521121b40f87ab23a41ec84859ae)
+++ c/src/lib/libbsp/i386/ts_386ex/startup/linkcmds	(revision 17d9f5f9fabf9ffde87c0d1d3993e29e721efad1)
@@ -20,5 +20,9 @@
  */
 
-	ENTRY(_init_i386ex) ;
+RamBase = DEFINED(RamBase) ? RamBase : 0x00100000;
+RamSize = DEFINED(RamSize) ? RamSize : 512K;
+HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
+
+ENTRY(_init_i386ex);
 
 SECTIONS
@@ -170,4 +174,6 @@
 	stack_origin = _ebss + stack_size ;
 	heap_bottom  = stack_origin + 4 ;  
+        . = ALIGN(0x10);
+        WorkAreaBase = .;
 
 
