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