summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
diff options
context:
space:
mode:
authorEric Norum <WENorum@lbl.gov>2008-05-19 19:07:10 +0000
committerEric Norum <WENorum@lbl.gov>2008-05-19 19:07:10 +0000
commitb5b9e75f7da818601b870b8c6aad68456823a795 (patch)
tree9948e1c92254a9e3aa46a9f193fef7d63e23beda /c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
parentUse shared version of bootstrap to set up workspace. (diff)
downloadrtems-b5b9e75f7da818601b870b8c6aad68456823a795.tar.bz2
Back out changes from 2008-05-16 -- they don't seem to work.
Diffstat (limited to 'c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c')
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c b/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
index cc4ed30f67..ebbda06d6e 100644
--- a/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
+++ b/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
@@ -227,14 +227,34 @@ static void handler(int pc)
void bsp_start( void )
{
int i;
+ extern char _WorkspaceBase[];
extern char _RamBase[], _RamSize[];
+ extern unsigned long _M68k_Ramsize;
+
+ _M68k_Ramsize = (unsigned long)_RamSize; /* RAM size set in linker script */
+
+ /*
+ * 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.
+ */
+
+ /*
+ * Set up default exception handler
+ */
+ for (i = 2 ; i < 256 ; i++)
+ if (i != (32+2)) /* Catch all but bootrom system calls */
+ *((void (**)(int))(i * 4)) = handler;
/*
- * Set up default exception handler
+ * 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".
*/
- for (i = 2 ; i < 256 ; i++)
- if (i != (32+2)) /* Catch all but bootrom system calls */
- *((void (**)(int))(i * 4)) = handler;
+
+ Configuration.work_space_start = (void *)_WorkspaceBase;
/*
* Invalidate the cache and disable it