forked from Imagelibrary/rtems
Update from Eric Norum to include C++ support.
This commit is contained in:
@@ -1,117 +1,131 @@
|
||||
/*
|
||||
* This file contains GNU linker directives for a generic MC68360 board.
|
||||
* Variations in memory size and allocation can be made by
|
||||
* overriding some values with linker command-line arguments.
|
||||
*
|
||||
* Saskatchewan Accelerator Laboratory
|
||||
* University of Saskatchewan
|
||||
* Saskatoon, Saskatchewan, CANADA
|
||||
* eric@skatter.usask.ca
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* 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 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 = 64M
|
||||
rom : ORIGIN = 0x0F000000, LENGTH = 1M
|
||||
dpram : ORIGIN = 0x0E000000, LENGTH = 8k
|
||||
}
|
||||
|
||||
/*
|
||||
* Declare low-order three octets of Ethernet address.
|
||||
*/
|
||||
ETHERNET_ADDRESS = DEFINED(ETHERNET_ADDRESS) ? ETHERNET_ADDRESS : 0xDEAD12;
|
||||
|
||||
/*
|
||||
* Load objects
|
||||
*/
|
||||
SECTIONS {
|
||||
/*
|
||||
* Hardware variations
|
||||
*/
|
||||
_RamSize = RamSize;
|
||||
__RamSize = RamSize;
|
||||
|
||||
/*
|
||||
* Boot PROM
|
||||
*/
|
||||
rom : {
|
||||
_RomBase = .;
|
||||
__RomBase = .;
|
||||
} >rom
|
||||
|
||||
/*
|
||||
* Dynamic RAM
|
||||
*/
|
||||
ram : {
|
||||
_RamBase = .;
|
||||
__RamBase = .;
|
||||
} >ram
|
||||
|
||||
/*
|
||||
* Text, data and bss segments
|
||||
*/
|
||||
.text : {
|
||||
CREATE_OBJECT_SYMBOLS
|
||||
*(.text)
|
||||
. = ALIGN (16);
|
||||
etext = .;
|
||||
_etext = .;
|
||||
} >ram
|
||||
.data : {
|
||||
copy_start = .;
|
||||
*(.data)
|
||||
. = ALIGN (16);
|
||||
_edata = .;
|
||||
copy_end = .;
|
||||
} >ram
|
||||
.bss : {
|
||||
M68Kvec = .;
|
||||
_M68Kvec = .;
|
||||
. += (256 * 4);
|
||||
clear_start = .;
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
. = ALIGN (16);
|
||||
_end = .;
|
||||
|
||||
_HeapStart = .;
|
||||
__HeapStart = .;
|
||||
. += 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 = .;
|
||||
|
||||
_WorkspaceBase = .;
|
||||
__WorkspaceBase = .;
|
||||
} >ram
|
||||
|
||||
/*
|
||||
* On-chip memory/peripherals
|
||||
*/
|
||||
dpram : {
|
||||
m360 = .;
|
||||
_m360 = .;
|
||||
. += (8 * 1024);
|
||||
|
||||
} >dpram
|
||||
}
|
||||
/*
|
||||
* This file contains GNU linker directives for a generic MC68360 board.
|
||||
* Variations in memory size and allocation can be made by
|
||||
* overriding some values with linker command-line arguments.
|
||||
*
|
||||
* Saskatchewan Accelerator Laboratory
|
||||
* University of Saskatchewan
|
||||
* Saskatoon, Saskatchewan, CANADA
|
||||
* eric@skatter.usask.ca
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* 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 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 = 64M
|
||||
rom : ORIGIN = 0x0F000000, LENGTH = 1M
|
||||
dpram : ORIGIN = 0x0E000000, LENGTH = 8k
|
||||
}
|
||||
|
||||
/*
|
||||
* Declare low-order three octets of Ethernet address.
|
||||
*/
|
||||
ETHERNET_ADDRESS = DEFINED(ETHERNET_ADDRESS) ? ETHERNET_ADDRESS : 0xDEAD12;
|
||||
|
||||
/*
|
||||
* Load objects
|
||||
*/
|
||||
SECTIONS {
|
||||
/*
|
||||
* Hardware variations
|
||||
*/
|
||||
_RamSize = RamSize;
|
||||
__RamSize = RamSize;
|
||||
|
||||
/*
|
||||
* Boot PROM
|
||||
*/
|
||||
rom : {
|
||||
_RomBase = .;
|
||||
__RomBase = .;
|
||||
} >rom
|
||||
|
||||
/*
|
||||
* Dynamic RAM
|
||||
*/
|
||||
ram : {
|
||||
_RamBase = .;
|
||||
__RamBase = .;
|
||||
} >ram
|
||||
|
||||
/*
|
||||
* Text, data and bss segments
|
||||
*/
|
||||
.text : {
|
||||
CREATE_OBJECT_SYMBOLS
|
||||
*(.text)
|
||||
. = ALIGN (16);
|
||||
etext = .;
|
||||
_etext = .;
|
||||
|
||||
/*
|
||||
* C++ constructors
|
||||
*/
|
||||
__CTOR_LIST__ = .;
|
||||
LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
|
||||
*(.ctors)
|
||||
LONG(0)
|
||||
__CTOR_END__ = .;
|
||||
__DTOR_LIST__ = .;
|
||||
LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
|
||||
*(.dtors)
|
||||
LONG(0)
|
||||
__DTOR_END__ = .;
|
||||
} >ram
|
||||
.data : {
|
||||
copy_start = .;
|
||||
*(.data)
|
||||
. = ALIGN (16);
|
||||
_edata = .;
|
||||
copy_end = .;
|
||||
} >ram
|
||||
.bss : {
|
||||
M68Kvec = .;
|
||||
_M68Kvec = .;
|
||||
. += (256 * 4);
|
||||
clear_start = .;
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
. = ALIGN (16);
|
||||
_end = .;
|
||||
|
||||
_HeapStart = .;
|
||||
__HeapStart = .;
|
||||
. += 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 = .;
|
||||
|
||||
_WorkspaceBase = .;
|
||||
__WorkspaceBase = .;
|
||||
} >ram
|
||||
|
||||
/*
|
||||
* On-chip memory/peripherals
|
||||
*/
|
||||
dpram : {
|
||||
m360 = .;
|
||||
_m360 = .;
|
||||
. += (8 * 1024);
|
||||
|
||||
} >dpram
|
||||
}
|
||||
|
||||
@@ -1,122 +1,136 @@
|
||||
/*
|
||||
* This file contains GNU linker directives for a generic MC68360 board.
|
||||
* 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 PROM version.
|
||||
* The data segment is placed at the end of the text segment in the PROM.
|
||||
* The start-up code takes care of copying this region to RAM.
|
||||
*
|
||||
* Saskatchewan Accelerator Laboratory
|
||||
* University of Saskatchewan
|
||||
* Saskatoon, Saskatchewan, CANADA
|
||||
* eric@skatter.usask.ca
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* 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 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 = 64M
|
||||
myram : ORIGIN = 4M-512k, LENGTH = 512k
|
||||
rom : ORIGIN = 0x0F000000, LENGTH = 1M
|
||||
dpram : ORIGIN = 0x0E000000, LENGTH = 8k
|
||||
}
|
||||
|
||||
/*
|
||||
* Declare low-order three octets of Ethernet address.
|
||||
*/
|
||||
ETHERNET_ADDRESS = DEFINED(ETHERNET_ADDRESS) ? ETHERNET_ADDRESS : 0xDEAD12;
|
||||
|
||||
/*
|
||||
* Load objects
|
||||
*/
|
||||
SECTIONS {
|
||||
/*
|
||||
* Hardware variations
|
||||
*/
|
||||
_RamSize = RamSize;
|
||||
__RamSize = RamSize;
|
||||
|
||||
/*
|
||||
* Boot PROM
|
||||
*/
|
||||
rom : {
|
||||
_RomBase = .;
|
||||
__RomBase = .;
|
||||
} >rom
|
||||
|
||||
/*
|
||||
* Dynamic RAM
|
||||
*/
|
||||
ram : {
|
||||
_RamBase = .;
|
||||
__RamBase = .;
|
||||
} >ram
|
||||
|
||||
/*
|
||||
* Text, data and bss segments
|
||||
*/
|
||||
.text : AT (0x00000000) {
|
||||
CREATE_OBJECT_SYMBOLS
|
||||
*(.text)
|
||||
. = ALIGN (16);
|
||||
etext = .;
|
||||
_etext = .;
|
||||
} >rom
|
||||
.data : AT(SIZEOF(.text)) {
|
||||
copy_start = .;
|
||||
*(.data)
|
||||
. = ALIGN (16);
|
||||
_edata = .;
|
||||
copy_end = .;
|
||||
} >myram
|
||||
.bss : {
|
||||
M68Kvec = .;
|
||||
_M68Kvec = .;
|
||||
. += (256 * 4);
|
||||
clear_start = .;
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
. = ALIGN (16);
|
||||
_end = .;
|
||||
|
||||
_HeapStart = .;
|
||||
__HeapStart = .;
|
||||
. += 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 = .;
|
||||
|
||||
_WorkspaceBase = .;
|
||||
__WorkspaceBase = .;
|
||||
} >myram
|
||||
|
||||
/*
|
||||
* On-chip memory/peripherals
|
||||
*/
|
||||
dpram : {
|
||||
m360 = .;
|
||||
_m360 = .;
|
||||
. += (8 * 1024);
|
||||
|
||||
} >dpram
|
||||
}
|
||||
/*
|
||||
* This file contains GNU linker directives for a generic MC68360 board.
|
||||
* 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 PROM version.
|
||||
* The data segment is placed at the end of the text segment in the PROM.
|
||||
* The start-up code takes care of copying this region to RAM.
|
||||
*
|
||||
* Saskatchewan Accelerator Laboratory
|
||||
* University of Saskatchewan
|
||||
* Saskatoon, Saskatchewan, CANADA
|
||||
* eric@skatter.usask.ca
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* 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 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 = 64M
|
||||
myram : ORIGIN = 4M-512k, LENGTH = 512k
|
||||
rom : ORIGIN = 0x0F000000, LENGTH = 1M
|
||||
dpram : ORIGIN = 0x0E000000, LENGTH = 8k
|
||||
}
|
||||
|
||||
/*
|
||||
* Declare low-order three octets of Ethernet address.
|
||||
*/
|
||||
ETHERNET_ADDRESS = DEFINED(ETHERNET_ADDRESS) ? ETHERNET_ADDRESS : 0xDEAD12;
|
||||
|
||||
/*
|
||||
* Load objects
|
||||
*/
|
||||
SECTIONS {
|
||||
/*
|
||||
* Hardware variations
|
||||
*/
|
||||
_RamSize = RamSize;
|
||||
__RamSize = RamSize;
|
||||
|
||||
/*
|
||||
* Boot PROM
|
||||
*/
|
||||
rom : {
|
||||
_RomBase = .;
|
||||
__RomBase = .;
|
||||
} >rom
|
||||
|
||||
/*
|
||||
* Dynamic RAM
|
||||
*/
|
||||
ram : {
|
||||
_RamBase = .;
|
||||
__RamBase = .;
|
||||
} >ram
|
||||
|
||||
/*
|
||||
* Text, data and bss segments
|
||||
*/
|
||||
.text : AT (0x00000000) {
|
||||
CREATE_OBJECT_SYMBOLS
|
||||
*(.text)
|
||||
. = ALIGN (16);
|
||||
etext = .;
|
||||
_etext = .;
|
||||
|
||||
/*
|
||||
* C++ constructors
|
||||
*/
|
||||
__CTOR_LIST__ = .;
|
||||
LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
|
||||
*(.ctors)
|
||||
LONG(0)
|
||||
__CTOR_END__ = .;
|
||||
__DTOR_LIST__ = .;
|
||||
LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
|
||||
*(.dtors)
|
||||
LONG(0)
|
||||
__DTOR_END__ = .;
|
||||
} >rom
|
||||
.data : AT(SIZEOF(.text)) {
|
||||
copy_start = .;
|
||||
*(.data)
|
||||
. = ALIGN (16);
|
||||
_edata = .;
|
||||
copy_end = .;
|
||||
} >myram
|
||||
.bss : {
|
||||
M68Kvec = .;
|
||||
_M68Kvec = .;
|
||||
. += (256 * 4);
|
||||
clear_start = .;
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
. = ALIGN (16);
|
||||
_end = .;
|
||||
|
||||
_HeapStart = .;
|
||||
__HeapStart = .;
|
||||
. += 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 = .;
|
||||
|
||||
_WorkspaceBase = .;
|
||||
__WorkspaceBase = .;
|
||||
} >myram
|
||||
|
||||
/*
|
||||
* On-chip memory/peripherals
|
||||
*/
|
||||
dpram : {
|
||||
m360 = .;
|
||||
_m360 = .;
|
||||
. += (8 * 1024);
|
||||
|
||||
} >dpram
|
||||
}
|
||||
|
||||
@@ -106,6 +106,20 @@ SECTIONS {
|
||||
. = ALIGN (16);
|
||||
etext = .;
|
||||
_etext = .;
|
||||
|
||||
/*
|
||||
* C++ constructors
|
||||
*/
|
||||
__CTOR_LIST__ = .;
|
||||
LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
|
||||
*(.ctors)
|
||||
LONG(0)
|
||||
__CTOR_END__ = .;
|
||||
__DTOR_LIST__ = .;
|
||||
LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
|
||||
*(.dtors)
|
||||
LONG(0)
|
||||
__DTOR_END__ = .;
|
||||
} >rom
|
||||
.data : {
|
||||
copy_start = .;
|
||||
|
||||
Reference in New Issue
Block a user