summaryrefslogtreecommitdiff
path: root/src/arch/i386/init/ldscript.lb
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/i386/init/ldscript.lb')
-rw-r--r--src/arch/i386/init/ldscript.lb62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/arch/i386/init/ldscript.lb b/src/arch/i386/init/ldscript.lb
new file mode 100644
index 0000000000..1af399cf81
--- /dev/null
+++ b/src/arch/i386/init/ldscript.lb
@@ -0,0 +1,62 @@
+/*
+ * Memory map:
+ *
+ * _RAMBASE
+ * : data segment
+ * : bss segment
+ * : heap
+ * : stack
+ * _ROMBASE
+ * : linuxbios text
+ * : readonly text
+ */
+/*
+ * Bootstrap code for the STPC Consumer
+ * Copyright (c) 1999 by Net Insight AB. All Rights Reserved.
+ *
+ */
+
+/*
+ * Written by Johan Rydberg, based on work by Daniel Kahlin.
+ * Rewritten by Eric Biederman
+ */
+/*
+ * We use ELF as output format. So that we can
+ * debug the code in some form.
+ */
+OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
+OUTPUT_ARCH(i386)
+
+ENTRY(_start)
+
+TARGET(binary)
+INPUT(linuxbios_payload)
+SECTIONS
+{
+ . = _ROMBASE;
+ /* This section might be better named .setup */
+ .rom . : {
+ _rom = .;
+ *(.rom.text);
+ *(.rom.data);
+ . = ALIGN(16);
+ _erom = .;
+ }
+ _lrom = LOADADDR(.rom);
+ _elrom = LOADADDR(.rom) + SIZEOF(.rom);
+
+ .payload . : {
+ _payload = . ;
+ linuxbios_payload(*)
+ _epayload = . ;
+ }
+ _iseg = _RAMBASE;
+ _eiseg = _iseg + SIZEOF(.payload);
+ _liseg = _payload;
+ _eliseg = _epayload;
+
+ /DISCARD/ : {
+ *(.comment)
+ *(.note)
+ }
+}