1233545Sjchandra/*-
2233545Sjchandra * Copyright (c) 2003-2012 Broadcom Corporation
3233545Sjchandra * All Rights Reserved
4233545Sjchandra *
5233545Sjchandra * Redistribution and use in source and binary forms, with or without
6233545Sjchandra * modification, are permitted provided that the following conditions
7233545Sjchandra * are met:
8233545Sjchandra *
9233545Sjchandra * 1. Redistributions of source code must retain the above copyright
10233545Sjchandra *    notice, this list of conditions and the following disclaimer.
11233545Sjchandra * 2. Redistributions in binary form must reproduce the above copyright
12233545Sjchandra *    notice, this list of conditions and the following disclaimer in
13233545Sjchandra *    the documentation and/or other materials provided with the
14233545Sjchandra *    distribution.
15233545Sjchandra *
16233545Sjchandra * THIS SOFTWARE IS PROVIDED BY BROADCOM ``AS IS'' AND ANY EXPRESS OR
17233545Sjchandra * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18233545Sjchandra * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19233545Sjchandra * ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM OR CONTRIBUTORS BE LIABLE
20233545Sjchandra * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21233545Sjchandra * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22233545Sjchandra * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23233545Sjchandra * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24233545Sjchandra * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25233545Sjchandra * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26233545Sjchandra * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27233545Sjchandra *
28233545Sjchandra * $FreeBSD$
29233545Sjchandra */
30233545Sjchandra
31233545SjchandraENTRY(_start)
32233545SjchandraOUTPUT_FORMAT(elf32-tradbigmips)
33233545Sjchandra__DYNAMIC  =  0;
34233545Sjchandra
35233545SjchandraSECTIONS
36233545Sjchandra{
37233545Sjchandra	. = 0x0;
38233545Sjchandra	_loadaddr = .	;
39233545Sjchandra
40233545Sjchandra	/* ----------------------------------------- */
41233545Sjchandra
42233545Sjchandra	.text : {
43233545Sjchandra		_ftext = . ;
44233545Sjchandra		PROVIDE (eprol = .);
45233545Sjchandra		_shim_reg = . ;
46233545Sjchandra		*(.text)
47233545Sjchandra		*(.text.*)
48233545Sjchandra		*(.gnu.linkonce.t*)
49233545Sjchandra		*(.mips16.fn.*)
50233545Sjchandra		*(.mips16.call.*)
51233545Sjchandra	}
52233545Sjchandra	.init : {
53233545Sjchandra		KEEP(*(.init))
54233545Sjchandra		*(.init)
55233545Sjchandra	}
56233545Sjchandra	.fini : {
57233545Sjchandra		*(.fini)
58233545Sjchandra	}
59233545Sjchandra	.rel.sdata : {
60233545Sjchandra		PROVIDE (__runtime_reloc_start = .);
61233545Sjchandra		*(.rel.sdata)
62233545Sjchandra		PROVIDE (__runtime_reloc_stop = .);
63233545Sjchandra	}
64233545Sjchandra	PROVIDE (etext = .);
65233545Sjchandra	.ctors    :
66233545Sjchandra	{
67233545Sjchandra		KEEP (*crtbegin.o(.ctors))
68233545Sjchandra		KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
69233545Sjchandra		KEEP (*(SORT(.ctors.*)))
70233545Sjchandra		KEEP (*(.ctors))
71233545Sjchandra	}
72233545Sjchandra	.dtors    :
73233545Sjchandra	{
74233545Sjchandra		KEEP (*crtbegin.o(.dtors))
75233545Sjchandra		KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
76233545Sjchandra		KEEP (*(SORT(.dtors.*)))
77233545Sjchandra		KEEP (*(.dtors))
78233545Sjchandra	}
79233545Sjchandra	. = .;
80233545Sjchandra	.rodata : {
81233545Sjchandra		*(.rdata)
82233545Sjchandra		*(.rodata)
83233545Sjchandra		*(.rodata.*)
84233545Sjchandra		*(.gnu.linkonce.r*)
85233545Sjchandra	}
86233545Sjchandra	. = . + (0x1000 - .) ;
87233545Sjchandra
88233545Sjchandra	/* ----------------------------------------- */
89233545Sjchandra
90233545Sjchandra	. = 0x8000 ;
91233545Sjchandra	magicstart = . ;
92233545Sjchandra	.magicregs : {
93233545Sjchandra		*(.magicregs)
94233545Sjchandra	}
95233545Sjchandra	magicend = . ;
96233545Sjchandra
97233545Sjchandra	/* ----------------------------------------- */
98233545Sjchandra
99233545Sjchandra	. = 0x18000 ;
100233545Sjchandra	shmemstart = . ;
101233545Sjchandra	.sharedmem : {
102233545Sjchandra		*(.sharedmem)
103233545Sjchandra	}
104233545Sjchandra	shmemend = . ;
105233545Sjchandra
106233545Sjchandra	/* ----------------------------------------- */
107233545Sjchandra
108233545Sjchandra	. = 0xFF800 ;
109233545Sjchandra	.data : {
110233545Sjchandra		*(.data)
111233545Sjchandra		*(.data.*)
112233545Sjchandra		*(.gnu.linkonce.d*)
113233545Sjchandra	}
114233545Sjchandra	. = ALIGN(8);
115233545Sjchandra	.lit8 : {
116233545Sjchandra		*(.lit8)
117233545Sjchandra	}
118233545Sjchandra	.lit4 : {
119233545Sjchandra		*(.lit4)
120233545Sjchandra	}
121233545Sjchandra	.sdata : {
122233545Sjchandra		*(.sdata)
123233545Sjchandra		*(.sdata.*)
124233545Sjchandra		*(.gnu.linkonce.s*)
125233545Sjchandra	}
126233545Sjchandra	. = ALIGN (8);
127233545Sjchandra	PROVIDE (edata  =  .);
128233545Sjchandra	_edata  =  .;
129233545Sjchandra	_fbss = .;
130233545Sjchandra	.sbss : {
131233545Sjchandra		*(.sbss)
132233545Sjchandra		*(.scommon)
133233545Sjchandra	}
134233545Sjchandra	.bss : {
135233545Sjchandra		_bss_start = . ;
136233545Sjchandra		*(.bss)
137233545Sjchandra		*(COMMON)
138233545Sjchandra	}
139233545Sjchandra	_bss_end = . ;
140233545Sjchandra	_end = .;
141233545Sjchandra
142233545Sjchandra	_gp = . ;
143233545Sjchandra	__global = _gp ;
144233545Sjchandra	. = ALIGN (8);
145233545Sjchandra
146233545Sjchandra	PROVIDE(__stackmarker = .) ;
147233545Sjchandra
148233545Sjchandra	. = 0xFFA00 ;
149233545Sjchandra
150233545Sjchandra	/* 32 + 4(argc) + 4(argv), aligned to 64 */
151233545Sjchandra	PROVIDE(__stack =  . - 64);
152233545Sjchandra
153233545Sjchandra	/* ----------------------------------------- */
154233545Sjchandra
155233545Sjchandra	. = 0xFFE00 ;
156233545Sjchandra	.pktbuf : {
157233545Sjchandra		*(.pktbuf)
158233545Sjchandra	}
159233545Sjchandra	. = . + (0x100000 - .) ;
160233545Sjchandra
161233545Sjchandra	PROVIDE(_endaddr = 0x0 + 0x100000);
162233545Sjchandra}
163