[BACK]Return to locore.S CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / i386 / i386

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/i386/i386/locore.S between version 1.138 and 1.139

version 1.138, 2016/10/16 10:51:31 version 1.139, 2016/11/11 11:00:38
Line 847  begin:
Line 847  begin:
         pushl   $0      /* init386() expects a 64 bits paddr_t with PAE */          pushl   $0      /* init386() expects a 64 bits paddr_t with PAE */
 #endif  #endif
         pushl   %eax          pushl   %eax
         call    _C_LABEL(init386)       /* wire 386 chip for unix operation */          call    _C_LABEL(init386)
         addl    $PDE_SIZE,%esp          /* pop paddr_t */          addl    $PDE_SIZE,%esp          /* pop paddr_t */
         addl    $NGDT*8,%esp            /* pop temporary gdt */          addl    $NGDT*8,%esp            /* pop temporary gdt */
   
Line 876  begin:
Line 876  begin:
         popfl          popfl
   
         cld          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. */          /* Clear BSS. */
         xorl    %eax,%eax          xorl    %eax,%eax
         movl    $RELOC(__bss_start),%edi          movl    $RELOC(__bss_start),%edi
         movl    $RELOC(_end),%ecx          movl    $RELOC(_end),%ecx
         subl    %edi,%ecx          subl    %edi,%ecx
         rep stosb          rep
           stosb
   
         /* Copy the necessary stuff from start_info structure. */          /* Copy the necessary stuff from start_info structure. */
         /* We need to copy shared_info early, so that sti/cli work */          /* We need to copy shared_info early, so that sti/cli work */
         movl    $RELOC(start_info_union),%edi          movl    $RELOC(start_info_union),%edi
         movl    $128,%ecx          movl    $128,%ecx
         rep movsl          rep
           movsl
   
         /* Clear segment registers; always null in proc0. */          /* Clear segment registers. */
         xorl    %eax,%eax          xorl    %eax,%eax
         movw    %ax,%fs          movw    %ax,%fs
         movw    %ax,%gs          movw    %ax,%gs
         decl    %eax  
         movl    %eax,RELOC(cpuid_level)  
   
         xorl    %eax,%eax          xorl    %eax,%eax
         cpuid          cpuid
         movl    %eax,RELOC(cpuid_level)          movl    %eax,RELOC(cpuid_level)
   
         /*          /*
          * Use a temp page. We'll re- add it to uvm(9) once we're           * Use a temporary GDT page. We'll re-add it to uvm(9) once we're done
          * done using it.           * using it.
          */           */
         movl    $RELOC(tmpgdt), %eax          movl    $RELOC(tmpgdt),%eax
         pushl   %eax            /* start of temporary gdt */          pushl   %eax            /* start of temporary gdt */
         call    _C_LABEL(initgdt)          call    _C_LABEL(initgdt)
         addl    $4,%esp          addl    $4,%esp
Line 915  begin:
Line 920  begin:
         call    xen_pmap_bootstrap          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    %eax,%esi
         movl    %esi, _C_LABEL(lwp0uarea)          movl    %esi,_C_LABEL(lwp0uarea)
   
         /* Set up bootstrap stack. */  
         leal    (USPACE-FRAMESIZE)(%eax),%esp          leal    (USPACE-FRAMESIZE)(%eax),%esp
         xorl    %ebp,%ebp               /* mark end of frames */          xorl    %ebp,%ebp               /* mark end of frames */
   
         addl    $USPACE, %esi          /* Set first_avail after the UAREA. */
         subl    $KERNBASE, %esi         /* init386 wants a physical address */          addl    $USPACE,%esi
           subl    $KERNBASE,%esi          /* init386 wants a physical address */
   
 #ifdef PAE  #ifdef PAE
         pushl   $0      /* init386() expects a 64 bits paddr_t with PAE */          pushl   $0      /* init386() expects a 64 bits paddr_t with PAE */
 #endif  #endif
         pushl   %esi          pushl   %esi
         call    _C_LABEL(init386)       /* wire 386 chip for unix operation */          call    _C_LABEL(init386)
         addl    $PDE_SIZE,%esp          /* pop paddr_t */          addl    $PDE_SIZE,%esp          /* pop paddr_t */
         call    _C_LABEL(main)          call    _C_LABEL(main)
 #endif /* XEN */  #endif /* XEN */

Legend:
Removed from v.1.138  
changed lines
  Added in v.1.139

CVSweb <webmaster@jp.NetBSD.org>