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.
This commit is contained in:
parent
68b5872716
commit
2fc6c35b2f
2 changed files with 8 additions and 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();
|
||||
}
|
||||
|
||||
|
|
13
entry.S
13
entry.S
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue