--- /dev/null
+/*
+ * setup.ld
+ *
+ * Linker script for the i386 setup code
+ */
+OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
+OUTPUT_ARCH(i386)
+ENTRY(_start)
+
+SECTIONS
+{
+       . = 0;
+       .bstext         : { *(.bstext) }
+       .bsdata         : { *(.bsdata) }
+
+       . = 497;
+       .header         : { *(.header) }
+       .inittext       : { *(.inittext) }
+       .initdata       : { *(.initdata) }
+       .text           : { *(.text*) }
+
+       . = ALIGN(16);
+       .rodata         : { *(.rodata*) }
+
+       .videocards     : {
+               video_cards = .;
+               *(.videocards)
+               video_cards_end = .;
+       }
+
+       . = ALIGN(16);
+       .data           : { *(.data*) }
+
+       .signature      : {
+               setup_sig = .;
+               LONG(0x5a5aaa55)
+       }
+
+
+       . = ALIGN(16);
+       .bss            :
+       {
+               __bss_start = .;
+               *(.bss)
+               __bss_end = .;
+       }
+       . = ALIGN(16);
+       _end = .;
+
+       /DISCARD/ : { *(.note*) }
+
+       . = ASSERT(_end <= 0x8000, "Setup too big!");
+       . = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
+}