]> hydra-www.ietfng.org Git - xv6-public/commitdiff
Separate more clearly bootloader from xv6 by renaming multiboot.S to entry.S etc.
authorFrans Kaashoek <kaashoek@26-4-190.dynamic.csail.mit.edu>
Mon, 15 Aug 2011 16:02:59 +0000 (12:02 -0400)
committerFrans Kaashoek <kaashoek@26-4-190.dynamic.csail.mit.edu>
Mon, 15 Aug 2011 16:02:59 +0000 (12:02 -0400)
Maybe the string boot shouldn't appear in xv6 code?

Makefile
entry.S [moved from multiboot.S with 100% similarity]
entryother.S [moved from bootother.S with 97% similarity]
main.c

index bd4fb4cc7d6974d29dc015ae68936e3b7071a872..a49799257e89a99843f0ffb179df7f4458a35345 100644 (file)
--- 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
similarity index 100%
rename from multiboot.S
rename to entry.S
similarity index 97%
rename from bootother.S
rename to entryother.S
index 56edac2dbf312b19059fd0e79deff859f9af4c22..4f8e3bacf58e6177a6e1182b510df4cd145756d8 100644 (file)
@@ -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 570ae52b1d953db6185a0afdb2296211ae89f2a4..69ceee6d1088f8317b36c94e53a240a4a2f8e574 100644 (file)
--- 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"