summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k/gen68360/startup/init68360.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-01-13 15:06:24 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-01-13 15:06:24 +0000
commitc0ebf023b795036f6f0d8bcf887b3af27c90e85e (patch)
tree5411082380fc1c347202128ff1ff191ac32e2134 /c/src/lib/libbsp/m68k/gen68360/startup/init68360.c
parentFixed spacing. (diff)
downloadrtems-c0ebf023b795036f6f0d8bcf887b3af27c90e85e.tar.bz2
New patch from Eric Norum plus some minor mods by Joel.
Diffstat (limited to 'c/src/lib/libbsp/m68k/gen68360/startup/init68360.c')
-rw-r--r--c/src/lib/libbsp/m68k/gen68360/startup/init68360.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/init68360.c b/c/src/lib/libbsp/m68k/gen68360/startup/init68360.c
index 91297db5eb..8a68524766 100644
--- a/c/src/lib/libbsp/m68k/gen68360/startup/init68360.c
+++ b/c/src/lib/libbsp/m68k/gen68360/startup/init68360.c
@@ -42,7 +42,8 @@ void _Init68360 (void)
{
int i;
m68k_isr_entry *vbr;
- extern void _CopyDataClearBSSAndStart (void);
+ unsigned long ramSize;
+ extern void _CopyDataClearBSSAndStart (unsigned long ramSize);
#if (defined (__mc68040__))
/*
@@ -138,6 +139,7 @@ void _Init68360 (void)
* Wait for chips to power up
* Perform 8 read cycles
*/
+ ramSize = 1 * 1024 * 1024;
m360.memc[1].or = M360_MEMC_OR_TCYC(0) |
M360_MEMC_OR_1MB |
M360_MEMC_OR_DRAM;
@@ -275,6 +277,7 @@ void _Init68360 (void)
/*
* Step 12: Initialize the system RAM
*/
+ ramSize = 2 * 1024 * 1024;
/* first bank 1MByte DRAM */
m360.memc[1].or = M360_MEMC_OR_TCYC(2) | M360_MEMC_OR_1MB |
M360_MEMC_OR_PGME | M360_MEMC_OR_DRAM;
@@ -334,7 +337,7 @@ void _Init68360 (void)
* Disable timers during FREEZE
* Enable bus monitor during FREEZE
* BCLRO* arbitration level 3
- */
+ */
#elif (defined (GEN68360_WITH_SRAM))
/*
@@ -417,6 +420,7 @@ void _Init68360 (void)
* 512Kx32 SRAM on CS1*
* 0 wait states
*/
+ ramSize = 1 * 1024 * 1024;
m360.memc[1].br = (unsigned long)&_RamBase | M360_MEMC_BR_V;
m360.memc[1].or = M360_MEMC_OR_WAITS(0) | M360_MEMC_OR_2MB |
M360_MEMC_OR_32BIT;
@@ -606,6 +610,12 @@ void _Init68360 (void)
*/
m360.memc[1].br |= M360_MEMC_BR_PAREN;
}
+ switch (m360.gmr & 0x001C0000) {
+ default: ramSize = 4 * 1024 * 1024; break;
+ case M360_GMR_PGS(1): ramSize = 1 * 1024 * 1024; break;
+ case M360_GMR_PGS(3): ramSize = 4 * 1024 * 1024; break;
+ case M360_GMR_PGS(5): ramSize = 16 * 1024 * 1024; break;
+ }
/*
* Step 13: Copy the exception vector table to system RAM
@@ -650,6 +660,8 @@ void _Init68360 (void)
/*
* Copy data, clear BSS, switch stacks and call main()
+ * Must pass ramSize as argument since the data/bss segment
+ * may be overwritten.
*/
- _CopyDataClearBSSAndStart ();
+ _CopyDataClearBSSAndStart (ramSize);
}