Ensure multiboot is in the beginning of .text
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 24 May 2013 22:11:54 +0000 (15:11 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 24 May 2013 22:11:54 +0000 (15:11 -0700)
The multiboot header needs to be in the first 8K.  It is currently,
since we placed it in the beginning of entry.S, and that is the first
thing passed to ld.  This change ensures it will always remain in the
beginning (regardless of future changes or ld tricks).

kern/arch/i686/entry.S
kern/arch/i686/kernel.ld

index 66d1ab2..62e9996 100644 (file)
 # entry point
 ###################################################################
 
-.text
-
 # The Multiboot header
+.section .multiboot
 .align 4
 .long MULTIBOOT_HEADER_MAGIC
 .long MULTIBOOT_HEADER_FLAGS
 .long CHECKSUM
 
+.section .text
 .globl         _start
 _start:
        movw    $0x1234,0x472                   # warm boot
index 03b5d9a..139c266 100644 (file)
@@ -10,7 +10,7 @@ SECTIONS
        /* Link the kernel for 0xC01000C0, but load it at 0x001000C0) */
 
        .text 0xC01000C0 : AT(0x001000C0) {
-               *(.text .stub .text.* .gnu.linkonce.t.*)
+               *(.multiboot .text .stub .text.* .gnu.linkonce.t.*)
        }
 
        PROVIDE(etext = .);     /* Define the 'etext' symbol to this value */