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