99 lines
2.2 KiB
Plaintext
99 lines
2.2 KiB
Plaintext
/*
|
|
* This is a pile of crap that tells the linker how to link the kernel,
|
|
* because it's too stupid to be able to work it out on its own.
|
|
*/
|
|
ENTRY(__start)
|
|
|
|
_DYNAMIC_LINK = 0;
|
|
SECTIONS
|
|
{
|
|
/*
|
|
* Base address for the kernel.
|
|
*/
|
|
. = 0x80000200;
|
|
|
|
/*
|
|
* Read-only loaded sections.
|
|
*/
|
|
|
|
/* code */
|
|
.text : { *(.text) }
|
|
|
|
/* linker-provided symbol for end of code */
|
|
_etext = .;
|
|
|
|
/* read-only data */
|
|
.rodata : { *(.rodata) *(.rodata.*) }
|
|
|
|
/* MIPS register-usage blather */
|
|
.reginfo : { *(.reginfo) }
|
|
|
|
/*
|
|
* Move to a fresh page. This method puts read-only and
|
|
* read-write material on separate pages without having to
|
|
* waste space on page-alignment in the on-disk file; the
|
|
* on-disk page that contains both text and data is mapped
|
|
* twice.
|
|
*
|
|
* For mips kernels we can't write-protect the text anyhow so
|
|
* there's no point doing it.
|
|
*/
|
|
/* . = . + 0x1000; */
|
|
|
|
/*
|
|
* Read-write loaded sections.
|
|
*/
|
|
|
|
/* initialized data */
|
|
.data : {
|
|
*(.data)
|
|
CONSTRUCTORS
|
|
}
|
|
|
|
/* Value for GP register */
|
|
_gp = ALIGN(16) + 0x7ff0;
|
|
|
|
/* Small data accessed via GP register */
|
|
.lit8 : { *(.lit8) }
|
|
.lit4 : { *(.lit4) }
|
|
.sdata : { *(.sdata) }
|
|
|
|
/* cleared-to-zero data */
|
|
.sbss : { *(.sbss *.scommon) }
|
|
.bss : { *(.bss) *(COMMON) }
|
|
|
|
/* linker-provided symbol for end of program */
|
|
_end = .;
|
|
|
|
/*
|
|
* Debug info
|
|
*/
|
|
|
|
/* stabs debug sections */
|
|
.stab 0: { *(.stab) }
|
|
.stabstr 0: { *(.stabstr) }
|
|
|
|
/* DWARF debug sections */
|
|
.debug 0: { *(.debug) }
|
|
.line 0: { *(.line) }
|
|
.debug_srcinfo 0: { *(.debug_srcinfo) }
|
|
.debug_sfnames 0: { *(.debug_sfnames) }
|
|
.debug_aranges 0: { *(.debug_aranges) }
|
|
.debug_pubnames 0: { *(.debug_pubnames) }
|
|
.debug_info 0: { *(.debug_info .gnu.linkonce.wi.*) }
|
|
.debug_abbrev 0: { *(.debug_abbrev) }
|
|
.debug_line 0: { *(.debug_line) }
|
|
.debug_frame 0: { *(.debug_frame) }
|
|
.debug_str 0: { *(.debug_str) }
|
|
.debug_loc 0: { *(.debug_loc) }
|
|
.debug_macinfo 0: { *(.debug_macinfo) }
|
|
.debug_weaknames 0: { *(.debug_weaknames) }
|
|
.debug_funcnames 0: { *(.debug_funcnames) }
|
|
.debug_typenames 0: { *(.debug_typenames) }
|
|
.debug_varnames 0: { *(.debug_varnames) }
|
|
|
|
/* These must appear regardless of . */
|
|
.gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
|
|
.gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
|
|
}
|