From c60a3551c2dba29006f5d7917308281e47fa5fef Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Mon, 15 Aug 2011 12:02:59 -0400 Subject: [PATCH] Separate more clearly bootloader from xv6 by renaming multiboot.S to entry.S etc. Maybe the string boot shouldn't appear in xv6 code? --- Makefile | 20 ++++++++++---------- multiboot.S => entry.S | 0 bootother.S => entryother.S | 2 +- main.c | 22 +++++++++++----------- 4 files changed, 22 insertions(+), 22 deletions(-) rename multiboot.S => entry.S (100%) rename bootother.S => entryother.S (97%) diff --git a/Makefile b/Makefile index bd4fb4c..a497992 100644 --- a/Makefile +++ b/Makefile @@ -97,11 +97,11 @@ bootblock: bootasm.S bootmain.c $(OBJCOPY) -S -O binary -j .text bootblock.o bootblock ./sign.pl bootblock -bootother: bootother.S - $(CC) $(CFLAGS) -fno-pic -nostdinc -I. -c bootother.S - $(LD) $(LDFLAGS) -N -e start -Ttext 0x7000 -o bootblockother.o bootother.o - $(OBJCOPY) -S -O binary -j .text bootblockother.o bootother - $(OBJDUMP) -S bootblockother.o > bootother.asm +entryother: entryother.S + $(CC) $(CFLAGS) -fno-pic -nostdinc -I. -c entryother.S + $(LD) $(LDFLAGS) -N -e start -Ttext 0x7000 -o bootblockother.o entryother.o + $(OBJCOPY) -S -O binary -j .text bootblockother.o entryother + $(OBJDUMP) -S bootblockother.o > entryother.asm initcode: initcode.S $(CC) $(CFLAGS) -nostdinc -I. -c initcode.S @@ -109,8 +109,8 @@ initcode: initcode.S $(OBJCOPY) -S -O binary initcode.out initcode $(OBJDUMP) -S initcode.o > initcode.asm -kernel: $(OBJS) multiboot.o data.o bootother initcode - $(LD) $(LDFLAGS) -T kernel.ld -e multiboot_entry -o kernel multiboot.o data.o $(OBJS) -b binary initcode bootother +kernel: $(OBJS) entry.o data.o entryother initcode + $(LD) $(LDFLAGS) -T kernel.ld -e multiboot_entry -o kernel entry.o data.o $(OBJS) -b binary initcode entryother $(OBJDUMP) -S kernel > kernel.asm $(OBJDUMP) -t kernel | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > kernel.sym @@ -121,12 +121,12 @@ kernel: $(OBJS) multiboot.o data.o bootother initcode # great for testing the kernel on real hardware without # needing a scratch disk. MEMFSOBJS = $(filter-out ide.o,$(OBJS)) memide.o -kernelmemfs: $(MEMFSOBJS) multiboot.o data.o bootother initcode fs.img - $(LD) $(LDFLAGS) -Ttext 0x100000 -e main -o kernelmemfs multiboot.o data.o $(MEMFSOBJS) -b binary initcode bootother fs.img +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 $(OBJDUMP) -S kernelmemfs > kernelmemfs.asm $(OBJDUMP) -t kernelmemfs | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > kernelmemfs.sym -tags: $(OBJS) bootother.S _init +tags: $(OBJS) entryother.S _init etags *.S *.c vectors.S: vectors.pl diff --git a/multiboot.S b/entry.S similarity index 100% rename from multiboot.S rename to entry.S diff --git a/bootother.S b/entryother.S similarity index 97% rename from bootother.S rename to entryother.S index 56edac2..4f8e3ba 100644 --- a/bootother.S +++ b/entryother.S @@ -58,7 +58,7 @@ start32: orl $(CR0_PE|CR0_PG|CR0_WP), %eax movl %eax, %cr0 - # Switch to the stack allocated by bootothers() + # Switch to the stack allocated by entryothers() movl (start-4), %esp # Call mpboot() call *(start-8) diff --git a/main.c b/main.c index 570ae52..69ceee6 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ #include "proc.h" #include "x86.h" -static void bootothers(void); +static void enterothers(void); static void mpmain(void) __attribute__((noreturn)); extern pde_t *kpgdir; @@ -33,14 +33,14 @@ main(void) ideinit(); // disk if(!ismp) timerinit(); // uniprocessor timer - bootothers(); // start other processors (must come before kinit; must use boot_alloc) + enterothers(); // start other processors (must come before kinit; must use boot_alloc) kinit(); // initialize memory allocator userinit(); // first user process (must come after kinit) // Finish setting up this processor in mpmain. mpmain(); } -// Other CPUs jump here from bootother.S. +// Other CPUs jump here from entryother.S. static void mpboot(void) { @@ -56,7 +56,7 @@ mpmain(void) { cprintf("cpu%d: starting\n", cpu->id); idtinit(); // load idt register - xchg(&cpu->booted, 1); // tell bootothers() we're up + xchg(&cpu->booted, 1); // tell enterothers() we're up scheduler(); // start running processes } @@ -64,24 +64,24 @@ pde_t bootpgdir[]; // Start the non-boot processors. static void -bootothers(void) +enterothers(void) { - extern uchar _binary_bootother_start[], _binary_bootother_size[]; + extern uchar _binary_entryother_start[], _binary_entryother_size[]; uchar *code; struct cpu *c; char *stack; // Write bootstrap code to unused memory at 0x7000. - // The linker has placed the image of bootother.S in - // _binary_bootother_start. + // The linker has placed the image of entryother.S in + // _binary_entryother_start. code = p2v(0x7000); - memmove(code, _binary_bootother_start, (uint)_binary_bootother_size); + memmove(code, _binary_entryother_start, (uint)_binary_entryother_size); for(c = cpus; c < cpus+ncpu; c++){ if(c == cpus+cpunum()) // We've started already. continue; - // Tell bootother.S what stack to use, the address of mpboot and pgdir; + // Tell entryother.S what stack to use, the address of mpboot and pgdir; // We cannot use kpgdir yet, because the AP processor is running in low // memory, so we use bootpgdir for the APs too. kalloc can return addresses // above 4Mbyte (the machine may have much more physical memory than 4Mbyte), which @@ -101,7 +101,7 @@ bootothers(void) } } -// Boot page table used in multiboot.S and bootother.S. +// Boot page table used in multiboot.S and entryother.S. // Page directories (and page tables), must start on a page boundary, // hence the "__aligned__" attribute. Also, because of restrictions // related to linking and static initializers, we use "x + PTE_P"