Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/i386/i386 KNF and simplify Xen, and reduce the diff...



details:   https://anonhg.NetBSD.org/src/rev/11cfc2d974c8
branches:  trunk
changeset: 348845:11cfc2d974c8
user:      maxv <maxv%NetBSD.org@localhost>
date:      Fri Nov 11 11:00:38 2016 +0000

description:
KNF and simplify Xen, and reduce the diff with amd64 a little

diffstat:

 sys/arch/i386/i386/locore.S |  47 ++++++++++++++++++++++++--------------------
 1 files changed, 26 insertions(+), 21 deletions(-)

diffs (113 lines):

diff -r f9a12c3920d2 -r 11cfc2d974c8 sys/arch/i386/i386/locore.S
--- a/sys/arch/i386/i386/locore.S       Fri Nov 11 10:50:16 2016 +0000
+++ b/sys/arch/i386/i386/locore.S       Fri Nov 11 11:00:38 2016 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: locore.S,v 1.138 2016/10/16 10:51:31 maxv Exp $        */
+/*     $NetBSD: locore.S,v 1.139 2016/11/11 11:00:38 maxv Exp $        */
 
 /*
  * Copyright-o-rama!
@@ -128,7 +128,7 @@
  */
 
 #include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.138 2016/10/16 10:51:31 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.139 2016/11/11 11:00:38 maxv Exp $");
 
 #include "opt_compat_oldboot.h"
 #include "opt_copy_symtab.h"
@@ -847,7 +847,7 @@
        pushl   $0      /* init386() expects a 64 bits paddr_t with PAE */
 #endif
        pushl   %eax
-       call    _C_LABEL(init386)       /* wire 386 chip for unix operation */
+       call    _C_LABEL(init386)
        addl    $PDE_SIZE,%esp          /* pop paddr_t */
        addl    $NGDT*8,%esp            /* pop temporary gdt */
 
@@ -876,38 +876,43 @@
        popfl
 
        cld
-       movl    %esp, %ebx              /* save start of available space */
-       movl    $_RELOC(tmpstk),%esp    /* bootstrap stack end location */
+
+       /*
+        * Xen info:
+        * - %esp -> stack, *theoretically* the last used page by Xen bootstrap
+        */
+       movl    %esp,%ebx
+       movl    $_RELOC(tmpstk),%esp
 
        /* Clear BSS. */
        xorl    %eax,%eax
        movl    $RELOC(__bss_start),%edi
        movl    $RELOC(_end),%ecx
        subl    %edi,%ecx
-       rep stosb
+       rep
+       stosb
 
        /* Copy the necessary stuff from start_info structure. */
        /* We need to copy shared_info early, so that sti/cli work */
        movl    $RELOC(start_info_union),%edi
        movl    $128,%ecx
-       rep movsl
+       rep
+       movsl
 
-       /* Clear segment registers; always null in proc0. */
+       /* Clear segment registers. */
        xorl    %eax,%eax
        movw    %ax,%fs
        movw    %ax,%gs
-       decl    %eax
-       movl    %eax,RELOC(cpuid_level)
 
        xorl    %eax,%eax
        cpuid
        movl    %eax,RELOC(cpuid_level)
 
        /*
-        * Use a temp page. We'll re- add it to uvm(9) once we're
-        * done using it.
+        * Use a temporary GDT page. We'll re-add it to uvm(9) once we're done
+        * using it.
         */
-       movl    $RELOC(tmpgdt), %eax
+       movl    $RELOC(tmpgdt),%eax
        pushl   %eax            /* start of temporary gdt */
        call    _C_LABEL(initgdt)
        addl    $4,%esp
@@ -915,23 +920,23 @@
        call    xen_pmap_bootstrap
 
        /*
-        * First avail returned by xen_pmap_bootstrap in %eax
+        * The first VA available is returned by xen_pmap_bootstrap in %eax. We
+        * use it as the UAREA, and set up the stack here.
         */
-       movl    %eax, %esi;
-       movl    %esi, _C_LABEL(lwp0uarea)
-
-       /* Set up bootstrap stack. */
+       movl    %eax,%esi
+       movl    %esi,_C_LABEL(lwp0uarea)
        leal    (USPACE-FRAMESIZE)(%eax),%esp
        xorl    %ebp,%ebp               /* mark end of frames */
 
-       addl    $USPACE, %esi
-       subl    $KERNBASE, %esi         /* init386 wants a physical address */
+       /* Set first_avail after the UAREA. */
+       addl    $USPACE,%esi
+       subl    $KERNBASE,%esi          /* init386 wants a physical address */
 
 #ifdef PAE
        pushl   $0      /* init386() expects a 64 bits paddr_t with PAE */
 #endif
        pushl   %esi
-       call    _C_LABEL(init386)       /* wire 386 chip for unix operation */
+       call    _C_LABEL(init386)
        addl    $PDE_SIZE,%esp          /* pop paddr_t */
        call    _C_LABEL(main)
 #endif /* XEN */



Home | Main Index | Thread Index | Old Index