genode/base-okl4/contrib/generated/x86/linker.ld
2011-12-22 16:19:25 +01:00

149 lines
4.7 KiB
Plaintext

/*
* Copyright (c) 2008 Open Kernel Labs, Inc. (Copyright Holder).
* All rights reserved.
*
* 1. Redistribution and use of OKL4 (Software) in source and binary
* forms, with or without modification, are permitted provided that the
* following conditions are met:
*
* (a) Redistributions of source code must retain this clause 1
* (including paragraphs (a), (b) and (c)), clause 2 and clause 3
* (Licence Terms) and the above copyright notice.
*
* (b) Redistributions in binary form must reproduce the above
* copyright notice and the Licence Terms in the documentation and/or
* other materials provided with the distribution.
*
* (c) Redistributions in any form must be accompanied by information on
* how to obtain complete source code for:
* (i) the Software; and
* (ii) all accompanying software that uses (or is intended to
* use) the Software whether directly or indirectly. Such source
* code must:
* (iii) either be included in the distribution or be available
* for no more than the cost of distribution plus a nominal fee;
* and
* (iv) be licensed by each relevant holder of copyright under
* either the Licence Terms (with an appropriate copyright notice)
* or the terms of a licence which is approved by the Open Source
* Initative. For an executable file, "complete source code"
* means the source code for all modules it contains and includes
* associated build and other files reasonably required to produce
* the executable.
*
* 2. THIS SOFTWARE IS PROVIDED ``AS IS'' AND, TO THE EXTENT PERMITTED BY
* LAW, ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. WHERE ANY WARRANTY IS
* IMPLIED AND IS PREVENTED BY LAW FROM BEING DISCLAIMED THEN TO THE
* EXTENT PERMISSIBLE BY LAW: (A) THE WARRANTY IS READ DOWN IN FAVOUR OF
* THE COPYRIGHT HOLDER (AND, IN THE CASE OF A PARTICIPANT, THAT
* PARTICIPANT) AND (B) ANY LIMITATIONS PERMITTED BY LAW (INCLUDING AS TO
* THE EXTENT OF THE WARRANTY AND THE REMEDIES AVAILABLE IN THE EVENT OF
* BREACH) ARE DEEMED PART OF THIS LICENCE IN A FORM MOST FAVOURABLE TO
* THE COPYRIGHT HOLDER (AND, IN THE CASE OF A PARTICIPANT, THAT
* PARTICIPANT). IN THE LICENCE TERMS, "PARTICIPANT" INCLUDES EVERY
* PERSON WHO HAS CONTRIBUTED TO THE SOFTWARE OR WHO HAS BEEN INVOLVED IN
* THE DISTRIBUTION OR DISSEMINATION OF THE SOFTWARE.
*
* 3. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ANY OTHER PARTICIPANT BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
ENTRY(_start)
BOOTMEM_SIZE = 128K;
_start_text_phys = 0x00100000 + 0x200;
_start_text = _start_text_phys + 0xF0000000;
SECTIONS
{
.text _start_text : AT (ADDR(.text) - 0xF0000000)
{
*(.mb_header)
*(.text)
*(.text.*)
*(.gnu.linkonce.*)
*(.spinlock)
}
.rodata . : AT (ADDR(.rodata) - 0xF0000000)
{
*(.rodata*)
}
.roinit : AT(ADDR(.roinit) - 0xF0000000)
{
*(.roinit*)
}
. = ALIGN(4K);
_start_cpu_local = .;
.cpulocal . : AT (ADDR(.cpulocal) - 0xF0000000)
{
*(.data.cpulocal.tcb)
*(.data.cpulocal.utcb)
*(.data.cpulocal)
*(.data.ia32.cpulocal)
}
_end_cpu_local = .;
. = ALIGN(4K);
.data . : AT (ADDR(.data) - 0xF0000000)
{
*(.data)
*(.data.ia32.idt);
*(.data.ia32.exc_all);
*(.data.ia32.exc_common);
*(.data.*)
_bss_start = .;
*(.bss)
_bss_end = .;
}
. = ALIGN(4K);
.kdebug . : AT(ADDR(.kdebug) - 0xF0000000)
{
*(.kdebug)
*(.kdebug-bss)
*(.kdebug.*)
}
.sets . : AT(ADDR(.sets) - 0xF0000000)
{
. = ALIGN(16);
_start_setlist = .;
*(.setlist)
_end_setlist = .;
. = ALIGN(16);
_start_sets = .;
*(SORT(set_*))
_end_sets = .;
}
_end_text = ALIGN(4K);
_end_text_phys = _end_text - 0xF0000000;
. = ALIGN(4K);
.reserve_bootmem : AT(ADDR(.reserve_bootmem) - 0xF0000000)
{
*(.reserve_bootmem)
}
_start_init = . - 0xF0000000;
.init (. - 0xF0000000) :
{
*(.init)
*(.init.data)
*(.init.smp)
*(.init.*)
}
_end_init = .;
/DISCARD/ :
{
*(*)
*(.eh_frame)
*(.note)
*(.comment)
*(.delete)
}
_end_text_phys = _end_text - 0xF0000000;
_start_bootmem_phys = _start_bootmem - 0xF0000000;
_end_bootmem_phys = _end_bootmem - 0xF0000000;
}