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…
	
	Add table
		
		Reference in a new issue