diff options
author | Austin Clements <[email protected]> | 2011-09-04 15:51:46 -0400 |
---|---|---|
committer | Austin Clements <[email protected]> | 2011-09-04 15:51:46 -0400 |
commit | 2fc6c35b2fd64a15d7c4cc54c9e8733c3632039d (patch) | |
tree | 0e208790a58190b2f8daa57b365e3e72f20e84df | |
parent | 68b58727166bbb339f4790ec779a5a16772557f6 (diff) | |
download | xv6-labs-2fc6c35b2fd64a15d7c4cc54c9e8733c3632039d.tar.gz xv6-labs-2fc6c35b2fd64a15d7c4cc54c9e8733c3632039d.tar.bz2 xv6-labs-2fc6c35b2fd64a15d7c4cc54c9e8733c3632039d.zip |
Make the ELF entry point a physical address
This way, the bootloader doesn't have to translate the entry point.
This also makes xv6 multiboot-compliant and follows the convention
used by Linux.
-rw-r--r-- | bootmain.c | 2 | ||||
-rw-r--r-- | entry.S | 13 |
2 files changed, 8 insertions, 7 deletions
@@ -43,7 +43,7 @@ bootmain(void) // Call the entry point from the ELF header. // Does not return! - entry = (void(*)(void))(elf->entry - KERNBASE); + entry = (void(*)(void))(elf->entry); entry(); } @@ -25,15 +25,16 @@ .globl multiboot_header multiboot_header: #define magic 0x1badb002 - #define flags (1<<16 | 1<<0) + #define flags 0 .long magic .long flags .long (-magic-flags) - .long multiboot_header # beginning of image - .long multiboot_header - .long edata - .long end - .long entry + +# By convention, the _start symbol specifies the ELF entry point. +# Since we haven't set up virtual memory yet, our entry point is +# the physical address of 'entry'. +.globl _start +_start = V2P_WO(entry) # Entering xv6 on boot processor. Machine is mostly set up. .globl entry |