summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom63
1 files changed, 51 insertions, 12 deletions
diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom
index ef1c3ee6e2..64d5fe91a1 100644
--- a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom
+++ b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom
@@ -1,7 +1,10 @@
/*
* This file contains GNU linker directives for a generic MC68360 board.
- * These linker directives are for producing a PROM version..
- * To create the PROM image from the linkter output you must use objcopy
+ * Variations in hardware type and dynamic memory size can be made
+ * by overriding some values with linker command-line arguments.
+ *
+ * These linker directives are for producing a BOOTP PROM.
+ * To create the PROM image from the linker output you must use objcopy
* (--adjust-section-vma) to place the data segment at the end of the text
* segment in the PROM. The start-up code takes care of copying this region
* to RAM.
@@ -20,29 +23,64 @@
OUTPUT_FORMAT(coff-m68k)
/*
- * Declare on-board memory
+ * Declare some sizes.
+ * XXX: The assignment of ". += XyzSize;" fails in older gld's if the
+ * number used there is not constant. If this happens to you, edit
+ * the lines marked XXX below to use a constant value.
+ */
+RamSize = DEFINED(RamSize) ? RamSize : 4M;
+HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000;
+StackSize = DEFINED(StackSize) ? StackSize : 0x1000;
+
+/*
+ * Declare hardware type
+ */
+MC68360HardwareTypeMotorolaGeneric = 0;
+MC68360HardwareTypeAtlasHSB = 1;
+MC68360HardwareType = DEFINED(MC68360HardwareType) ? MC68360HardwareType : 0;
+
+/*
+ * Declare on-board memory.
+ * It would be nice if the ram length could be given as
+ * LENGTH=RamSize, but gld doesn't allow non-constant
+ * values in the LENGTH expression.
*/
MEMORY {
- ram : ORIGIN = 0x00000000, LENGTH = 4M
+ ram : ORIGIN = 0x00000000, LENGTH = 64M
rom : ORIGIN = 0xFF000000, LENGTH = 1M
dpram : ORIGIN = 0xFE000000, LENGTH = 8k
}
/*
- * Declare some sizes
+ * Declare low-order three octets of Ethernet address.
*/
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000;
-StackSize = DEFINED(StackSize) ? StackSize : 0x1000;
+ETHERNET_ADDRESS = DEFINED(ETHERNET_ADDRESS) ? ETHERNET_ADDRESS : 0xDEAD12;
/*
- * Declare low-order three octets of Ethernet address
+ * Declare hardware type.
+ * Acceptable values are:
+ * 0 - Generic system as described in the MC68360 User's Manual
+ * (MC68360UM/AD Rev. 1).
+ * 1 - ATLAS Computer Equipment Incorporated ACE360/HSB.
*/
-ETHERNET_ADDRESS = DEFINED(ETHERNET_ADDRESS) ? ETHERNET_ADDRESS : 0xDEAD12;
+MC68360HardwareType = DEFINED(MC68360HardwareType) ? MC68360HardwareType : 0;
/*
* Load objects
*/
SECTIONS {
+ /*
+ * Hardware variations
+ */
+ _RamSize = RamSize;
+ __RamSize = RamSize;
+ _MC68360HardwareType = MC68360HardwareType;
+ __MC68360HardwareType = MC68360HardwareType;
+ _MC68360HardwareTypeMotorolaGeneric = MC68360HardwareTypeMotorolaGeneric;
+ __MC68360HardwareTypeMotorolaGeneric = MC68360HardwareTypeMotorolaGeneric;
+ _MC68360HardwareTypeAtlasHSB = MC68360HardwareTypeAtlasHSB;
+ __MC68360HardwareTypeAtlasHSB = MC68360HardwareTypeAtlasHSB;
+
/*
* Boot PROM
*/
@@ -88,8 +126,10 @@ SECTIONS {
_HeapStart = .;
__HeapStart = .;
- . += HeapSize;
- . += StackSize;
+ . += HeapSize; /* XXX -- Old gld can't handle this */
+ . += StackSize; /* XXX -- Old gld can't handle this */
+ /* . += 0x10000; */ /* HeapSize for old gld */
+ /* . += 0x1000; */ /* StackSize for old gld */
. = ALIGN (16);
stack_init = .;
clear_end = .;
@@ -107,5 +147,4 @@ SECTIONS {
. += (8 * 1024);
} >dpram
-
}