[1587af6] | 1 | /*
|
---|
| 2 | * This file contains GNU linker directives for a generic MC68360 board.
|
---|
| 3 | * Variations in memory size and allocation can be made by
|
---|
| 4 | * overriding some values with linker command-line arguments.
|
---|
| 5 | *
|
---|
| 6 | * Saskatchewan Accelerator Laboratory
|
---|
| 7 | * University of Saskatchewan
|
---|
| 8 | * Saskatoon, Saskatchewan, CANADA
|
---|
| 9 | * eric@skatter.usask.ca
|
---|
| 10 | *
|
---|
| 11 | * $Id$
|
---|
| 12 | */
|
---|
| 13 |
|
---|
| 14 | /*
|
---|
| 15 | * Declare some sizes.
|
---|
| 16 | * XXX: The assignment of ". += XyzSize;" fails in older gld's if the
|
---|
| 17 | * number used there is not constant. If this happens to you, edit
|
---|
| 18 | * the lines marked XXX below to use a constant value.
|
---|
| 19 | */
|
---|
| 20 | RamSize = DEFINED(RamSize) ? RamSize : 4M;
|
---|
| 21 | HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000;
|
---|
| 22 | StackSize = DEFINED(StackSize) ? StackSize : 0x1000;
|
---|
| 23 |
|
---|
| 24 | /*
|
---|
| 25 | * Declare on-board memory.
|
---|
| 26 | * It would be nice if the ram length could be given as
|
---|
| 27 | * LENGTH=RamSize, but gld doesn't allow non-constant
|
---|
| 28 | * values in the LENGTH expression.
|
---|
| 29 | */
|
---|
| 30 | MEMORY {
|
---|
| 31 | ram : ORIGIN = 0x00000000, LENGTH = 64M
|
---|
| 32 | rom : ORIGIN = 0x0F000000, LENGTH = 1M
|
---|
| 33 | dpram : ORIGIN = 0x0E000000, LENGTH = 8k
|
---|
| 34 | }
|
---|
| 35 |
|
---|
| 36 | /*
|
---|
| 37 | * Declare low-order three octets of Ethernet address.
|
---|
| 38 | */
|
---|
| 39 | ETHERNET_ADDRESS = DEFINED(ETHERNET_ADDRESS) ? ETHERNET_ADDRESS : 0xDEAD12;
|
---|
| 40 |
|
---|
| 41 | /*
|
---|
| 42 | * Load objects
|
---|
| 43 | */
|
---|
| 44 | SECTIONS {
|
---|
| 45 | /*
|
---|
| 46 | * Hardware variations
|
---|
| 47 | */
|
---|
| 48 | _RamSize = RamSize;
|
---|
| 49 | __RamSize = RamSize;
|
---|
| 50 |
|
---|
| 51 | /*
|
---|
| 52 | * Boot PROM
|
---|
| 53 | */
|
---|
| 54 | rom : {
|
---|
| 55 | _RomBase = .;
|
---|
| 56 | __RomBase = .;
|
---|
| 57 | } >rom
|
---|
| 58 |
|
---|
| 59 | /*
|
---|
| 60 | * Dynamic RAM
|
---|
| 61 | */
|
---|
| 62 | ram : {
|
---|
| 63 | _RamBase = .;
|
---|
| 64 | __RamBase = .;
|
---|
| 65 | } >ram
|
---|
| 66 |
|
---|
| 67 | /*
|
---|
| 68 | * Text, data and bss segments
|
---|
| 69 | */
|
---|
| 70 | .text : {
|
---|
| 71 | CREATE_OBJECT_SYMBOLS
|
---|
| 72 | *(.text)
|
---|
| 73 | . = ALIGN (16);
|
---|
| 74 | etext = .;
|
---|
| 75 | _etext = .;
|
---|
| 76 |
|
---|
| 77 | /*
|
---|
| 78 | * C++ constructors
|
---|
| 79 | */
|
---|
| 80 | __CTOR_LIST__ = .;
|
---|
| 81 | LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
|
---|
| 82 | *(.ctors)
|
---|
| 83 | LONG(0)
|
---|
| 84 | __CTOR_END__ = .;
|
---|
| 85 | __DTOR_LIST__ = .;
|
---|
| 86 | LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
|
---|
| 87 | *(.dtors)
|
---|
| 88 | LONG(0)
|
---|
| 89 | __DTOR_END__ = .;
|
---|
| 90 | } >ram
|
---|
| 91 | .data : {
|
---|
| 92 | copy_start = .;
|
---|
| 93 | *(.data)
|
---|
| 94 | . = ALIGN (16);
|
---|
| 95 | _edata = .;
|
---|
| 96 | copy_end = .;
|
---|
| 97 | } >ram
|
---|
| 98 | .bss : {
|
---|
| 99 | M68Kvec = .;
|
---|
| 100 | _M68Kvec = .;
|
---|
| 101 | . += (256 * 4);
|
---|
| 102 | clear_start = .;
|
---|
| 103 | *(.bss)
|
---|
| 104 | *(COMMON)
|
---|
| 105 | . = ALIGN (16);
|
---|
| 106 | _end = .;
|
---|
| 107 |
|
---|
| 108 | _HeapStart = .;
|
---|
| 109 | __HeapStart = .;
|
---|
| 110 | . += HeapSize; /* XXX -- Old gld can't handle this */
|
---|
| 111 | . += StackSize; /* XXX -- Old gld can't handle this */
|
---|
| 112 | /* . += 0x10000; */ /* HeapSize for old gld */
|
---|
| 113 | /* . += 0x1000; */ /* StackSize for old gld */
|
---|
| 114 | . = ALIGN (16);
|
---|
| 115 | stack_init = .;
|
---|
| 116 | clear_end = .;
|
---|
| 117 |
|
---|
| 118 | _WorkspaceBase = .;
|
---|
| 119 | __WorkspaceBase = .;
|
---|
| 120 | } >ram
|
---|
| 121 |
|
---|
| 122 | /*
|
---|
| 123 | * On-chip memory/peripherals
|
---|
| 124 | */
|
---|
| 125 | dpram : {
|
---|
| 126 | m360 = .;
|
---|
| 127 | _m360 = .;
|
---|
| 128 | . += (8 * 1024);
|
---|
| 129 |
|
---|
| 130 | } >dpram
|
---|
| 131 | }
|
---|