diff options
| author | Austin Clements <amdragon@mit.edu> | 2011-09-02 14:51:55 -0400 | 
|---|---|---|
| committer | Austin Clements <amdragon@mit.edu> | 2011-09-02 14:51:55 -0400 | 
| commit | dd4438b4fe934eef3f631238d45b3681a3abdd4d (patch) | |
| tree | 4b885aa386da63f1de44446ef2df577ba0211dcd | |
| parent | ce6dd9de27a926e77e275de0287ee36fce93ce7f (diff) | |
| download | xv6-labs-dd4438b4fe934eef3f631238d45b3681a3abdd4d.tar.gz xv6-labs-dd4438b4fe934eef3f631238d45b3681a3abdd4d.tar.bz2 xv6-labs-dd4438b4fe934eef3f631238d45b3681a3abdd4d.zip | |
Nuke data.S, since we do have a custom linker script.
| -rw-r--r-- | Makefile | 8 | ||||
| -rw-r--r-- | data.S | 26 | ||||
| -rw-r--r-- | kernel.ld | 8 | ||||
| -rw-r--r-- | vm.c | 2 | 
4 files changed, 13 insertions, 31 deletions
| @@ -109,8 +109,8 @@ initcode: initcode.S  	$(OBJCOPY) -S -O binary initcode.out initcode  	$(OBJDUMP) -S initcode.o > initcode.asm -kernel: $(OBJS) entry.o data.o entryother initcode -	$(LD) $(LDFLAGS) -T kernel.ld -e entry -o kernel entry.o data.o $(OBJS) -b binary initcode entryother +kernel: $(OBJS) entry.o entryother initcode +	$(LD) $(LDFLAGS) -T kernel.ld -e entry -o kernel entry.o $(OBJS) -b binary initcode entryother  	$(OBJDUMP) -S kernel > kernel.asm  	$(OBJDUMP) -t kernel | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > kernel.sym @@ -121,8 +121,8 @@ kernel: $(OBJS) entry.o data.o entryother initcode  # great for testing the kernel on real hardware without  # needing a scratch disk.  MEMFSOBJS = $(filter-out ide.o,$(OBJS)) memide.o -kernelmemfs: $(MEMFSOBJS) entry.o data.o entryother initcode fs.img -	$(LD) $(LDFLAGS) -Ttext 0x100000 -e main -o kernelmemfs entry.o data.o $(MEMFSOBJS) -b binary initcode entryother fs.img +kernelmemfs: $(MEMFSOBJS) entry.o entryother initcode fs.img +	$(LD) $(LDFLAGS) -Ttext 0x100000 -e main -o kernelmemfs entry.o  $(MEMFSOBJS) -b binary initcode entryother fs.img  	$(OBJDUMP) -S kernelmemfs > kernelmemfs.asm  	$(OBJDUMP) -t kernelmemfs | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > kernelmemfs.sym @@ -1,26 +0,0 @@ -// The kernel layout is: -// -//     text -//     rodata -//     data -//     bss -// -// Conventionally, Unix linkers provide pseudo-symbols -// etext, edata, and end, at the end of the text, data, and bss. -// For the kernel mapping, we need the address at the beginning -// of the data section, but that's not one of the conventional -// symbols, because the convention started before there was a -// read-only rodata section between text and data. -// -// To get the address of the data section, we define a symbol -// named data and make sure this is the first object passed to -// the linker, so that it will be the first symbol in the data section. -// -// Alternative approaches would be to parse our own ELF header -// or to write a linker script, but this is simplest. - -.data -.align 4096 -.globl data -data: -  .word 1 @@ -41,6 +41,14 @@ SECTIONS  	/* Adjust the address for the data segment to the next page */  	. = ALIGN(0x1000); +	/* Conventionally, Unix linkers provide pseudo-symbols +	 * etext, edata, and end, at the end of the text, data, and bss. +	 * For the kernel mapping, we need the address at the beginning +	 * of the data section, but that's not one of the conventional +	 * symbols, because the convention started before there was a +	 * read-only rodata section between text and data. */ +	PROVIDE(data = .); +  	/* The data segment */  	.data : {  		*(.data) @@ -7,7 +7,7 @@  #include "proc.h"  #include "elf.h" -extern char data[];  // defined in data.S +extern char data[];  // defined by kernel.ld  pde_t *kpgdir;  // for use in scheduler()  struct segdesc gdt[NSEGS]; | 
