summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/h8300/h8sim/startup/linkcmds
blob: 5c2982a873b1e02620947eba78b0a24dfbb6c276 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*
 *  $Id$
 */

/*
 * Declare some sizes.
 */
_RamBase = DEFINED(_RamBase) ? _RamBase : 0x0;
_RamSize = DEFINED(_RamSize) ? _RamSize : 1M;
_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x10000;
_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;

ENTRY("_start")
/* The memory size is 256KB to coincide with the simulator.
   Don't change either without considering the other.  */
MEMORY
{
  /* 0xc4 is a magic entry.  We should have the linker just
  skip over it one day... */
  vectors : o = 0x0000, l = 0xc4
  magicvectors : o = 0xc4, l = 0x3c
  /* We still only use 256k as the main ram size.  */
  ram    : o = 0x0100, l = 0x3fefc
  /* The stack starts at the top of main ram.  */
  topram : o = 0x3fffc, l = 0x4
  /* This holds variables in the "tiny" sections.  */
  tiny   : o = 0xff8000, l = 0x7f00
  /* At the very top of the address space is the 8-bit area.  */
  eight  : o = 0xffff00, l = 0x100
}


SECTIONS
{ 
   .vectors :
   {
        *(.vectors)
   }  > vectors

    .text : 
    { 
	 CREATE_OBJECT_SYMBOLS
	*(.text) 
	 _etext = .;
	
/*
	___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 SIZEOF(.text) + ADDR(.text):
    { 
 	*(.data) 
	CONSTRUCTORS
	 _edata = .;
    }  >ram
    .bss SIZEOF(.data) + ADDR(.data):
    { 
	 _bss_start = .;
	*(.bss)	 
	*(COMMON) 
	. = ALIGN (64);
	. += _StackSize;
	_stack_init = .;
	_clear_end = .;
	_WorkspaceBase = .;
	. += 512K;	/* reserve some memory for workspace */
	_HeapBase = .;
	. += _HeapSize;	/* reserve some memory for heap */
	 _end = .;
	 __end = .;
    } >ram
    .tiny : {
        *(.tiny)
    }  > tiny
    .eight : {
        *(.eight)
    }  > eight
    .stab 0 (NOLOAD) : {
        [ .stab ]
    }
    .stabstr 0 (NOLOAD) : {
        [ .stabstr ]
    }

}