summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k/shared/m68kpretaskinghook.c
diff options
context:
space:
mode:
authorEric Norum <WENorum@lbl.gov>2005-01-28 19:35:23 +0000
committerEric Norum <WENorum@lbl.gov>2005-01-28 19:35:23 +0000
commit572484f1aef2d9544b2b3db98362737a597bf093 (patch)
tree7b2b0eef034f4dd98551f1707aec9014b07e0b1c /c/src/lib/libbsp/m68k/shared/m68kpretaskinghook.c
parent2005-01-28 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-572484f1aef2d9544b2b3db98362737a597bf093.tar.bz2
New BSP for Arcturus uCDIMM ColdFire 5282.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/m68k/shared/m68kpretaskinghook.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/c/src/lib/libbsp/m68k/shared/m68kpretaskinghook.c b/c/src/lib/libbsp/m68k/shared/m68kpretaskinghook.c
index 55d12334d7..61588f93b1 100644
--- a/c/src/lib/libbsp/m68k/shared/m68kpretaskinghook.c
+++ b/c/src/lib/libbsp/m68k/shared/m68kpretaskinghook.c
@@ -34,23 +34,27 @@
extern void bsp_libc_init( void *, unsigned long, int );
extern rtems_configuration_table BSP_Configuration;
-extern void *_RamBase;
-extern void *_WorkspaceBase;
-extern void *_HeapSize;
+extern char _RamBase[];
+extern char _WorkspaceBase[];
+extern char _HeapSize[];
unsigned long _M68k_Ramsize;
void bsp_pretasking_hook(void)
{
void *heapStart;
- unsigned long heapSize = (unsigned long)&_HeapSize;
+ unsigned long heapSize = (unsigned long)_HeapSize;
unsigned long ramSpace;
heapStart = (void *)
- ((unsigned long)&_WorkspaceBase + BSP_Configuration.work_space_size);
- ramSpace = (unsigned long) &_RamBase + _M68k_Ramsize - (unsigned long) heapStart;
+ ((unsigned long)_WorkspaceBase + BSP_Configuration.work_space_size);
+ ramSpace = (unsigned long)_RamBase + _M68k_Ramsize - (unsigned long)heapStart;
- if (heapSize == 0)
+ /*
+ * Can't use 'if(heapSize==0)' because the compiler "knows" that nothing
+ * can have an address of 0 and proceeds to optimize-away the test.
+ */
+ if (heapSize < 10)
heapSize = ramSpace;
else if (heapSize > ramSpace)
rtems_fatal_error_occurred (('H'<<24) | ('E'<<16) | ('A'<<8) | 'P');