[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.50.2.1 and 1.50.2.2

version 1.50.2.1, 2007/09/23 18:28:16 version 1.50.2.2, 2007/09/24 10:56:48
Line 179  _C_LABEL(cpu):  .long 0 # are we 80486, 
Line 179  _C_LABEL(cpu):  .long 0 # are we 80486, 
 _C_LABEL(atdevbase):    .long   0       # location of start of iomem in virtual  _C_LABEL(atdevbase):    .long   0       # location of start of iomem in virtual
 _C_LABEL(proc0uarea):   .long   0  _C_LABEL(proc0uarea):   .long   0
 _C_LABEL(PDPpaddr):     .long   0       # paddr of PDP, for libkvm  _C_LABEL(PDPpaddr):     .long   0       # paddr of PDP, for libkvm
   _C_LABEL(tablesize):    .long   0
   
         .space 512          .space 512
 tmpstk:  tmpstk:
Line 424  try586: /* Use the `cpuid' instruction. 
Line 425  try586: /* Use the `cpuid' instruction. 
 /*  /*
  * Virtual address space of kernel:   * Virtual address space of kernel:
  *   *
  * text | data | bss | [syms] | page dir | proc0 kstack   * text | data | bss | [syms] | page dir | proc0 kstack | L1 ptp
  *                            0          1       2      3   *                            0          1       2      3
  */   */
   
Line 432  try586: /* Use the `cpuid' instruction. 
Line 433  try586: /* Use the `cpuid' instruction. 
 #define PROC0_STK_OFF   (PROC0_PDIR_OFF + PAGE_SIZE)  #define PROC0_STK_OFF   (PROC0_PDIR_OFF + PAGE_SIZE)
 #define PROC0_PTP1_OFF  (PROC0_STK_OFF + UPAGES * PAGE_SIZE)  #define PROC0_PTP1_OFF  (PROC0_STK_OFF + UPAGES * PAGE_SIZE)
   
 #define TABLESIZE       ((NKL2_KIMG_ENTRIES + 1 + UPAGES) * PAGE_SIZE)  
   
 /*  /*
  * fillkpt   * fillkpt
  *      eax = pte (page frame | control | status)   *      eax = pte (page frame | control | status)
Line 460  try586: /* Use the `cpuid' instruction. 
Line 459  try586: /* Use the `cpuid' instruction. 
 1:  1:
 #endif  #endif
   
         /* Clear tables */          /* Compute sizes */
         movl    %edi,%esi                       # edi = esym ? esym : end          movl    %edi,%esi                       # edi = esym ? esym : end
         addl    $PGOFSET,%esi                   # page align up          addl    $PGOFSET,%esi                   # page align up
         andl    $~PGOFSET,%esi          andl    $~PGOFSET,%esi
   
           movl    %esi,%eax
           addl    $-L2_FRAME,%eax
           shrl    $L2_SHIFT,%eax
           movl    %eax,RELOC(nkptp)+1*4
   
           addl    $(1+UPAGES),%eax
           shll    $PGSHIFT,%eax
           movl    %eax,RELOC(tablesize)
   
           /* Clear tables */
         movl    %esi,%edi          movl    %esi,%edi
         xorl    %eax,%eax          xorl    %eax,%eax
         cld          cld
         movl    $TABLESIZE,%ecx          movl    RELOC(tablesize),%ecx
         shrl    $2,%ecx          shrl    $2,%ecx
         rep          rep
         stosl          stosl
Line 504  try586: /* Use the `cpuid' instruction. 
Line 513  try586: /* Use the `cpuid' instruction. 
   
         /* Map the data, BSS, and bootstrap tables read-write. */          /* Map the data, BSS, and bootstrap tables read-write. */
         leal    (PG_V|PG_KW)(%edx),%eax          leal    (PG_V|PG_KW)(%edx),%eax
         movl    $TABLESIZE,%ecx          movl    RELOC(tablesize),%ecx
         addl    %esi,%ecx                               # end of tables          addl    %esi,%ecx                               # end of tables
         subl    %edx,%ecx                               # subtract end of text          subl    %edx,%ecx                               # subtract end of text
         shrl    $PGSHIFT,%ecx          shrl    $PGSHIFT,%ecx
Line 522  try586: /* Use the `cpuid' instruction. 
Line 531  try586: /* Use the `cpuid' instruction. 
         leal    (PROC0_PDIR_OFF)(%esi),%ebx          leal    (PROC0_PDIR_OFF)(%esi),%ebx
         leal    (PROC0_PTP1_OFF)(%esi),%eax          leal    (PROC0_PTP1_OFF)(%esi),%eax
         orl     $(PG_V|PG_KW), %eax          orl     $(PG_V|PG_KW), %eax
         movl    $NKL2_KIMG_ENTRIES,%ecx          movl    RELOC(nkptp)+1*4,%ecx
         fillkpt          fillkpt
   
         /* Set up top level entries for actual kernel mapping */          /* Set up top level entries for actual kernel mapping */
         leal    (PROC0_PDIR_OFF + L2_SLOT_KERNBASE*4)(%esi),%ebx          leal    (PROC0_PDIR_OFF + L2_SLOT_KERNBASE*4)(%esi),%ebx
         leal    (PROC0_PTP1_OFF)(%esi),%eax          leal    (PROC0_PTP1_OFF)(%esi),%eax
         orl     $(PG_V|PG_KW), %eax          orl     $(PG_V|PG_KW), %eax
         movl    $NKL2_KIMG_ENTRIES,%ecx          movl    RELOC(nkptp)+1*4,%ecx
         fillkpt          fillkpt
   
         /* Install a PDE recursively mapping page directory as a page table! */          /* Install a PDE recursively mapping page directory as a page table! */
Line 566  begin:
Line 575  begin:
          * There's no need anymore for the identity mapping in low           * There's no need anymore for the identity mapping in low
          * memory, remove it.           * memory, remove it.
          */           */
         movl    $NKL2_KIMG_ENTRIES,%ecx          movl    _C_LABEL(nkptp)+1*4,%ecx
         leal    (PROC0_PDIR_OFF)(%esi),%ebx     # old, phys  address of PDIR          leal    (PROC0_PDIR_OFF)(%esi),%ebx     # old, phys  address of PDIR
         addl    $(KERNBASE), %ebx       # new, virtual address of PDIR          addl    $(KERNBASE), %ebx       # new, virtual address of PDIR
 1:      movl    $0,(%ebx)  1:      movl    $0,(%ebx)
Line 574  begin:
Line 583  begin:
         loop    1b          loop    1b
   
         /* Relocate atdevbase. */          /* Relocate atdevbase. */
         movl    $(TABLESIZE+KERNBASE),%edx          movl    $KERNBASE,%edx
           addl    _C_LABEL(tablesize),%edx
         addl    %esi,%edx          addl    %esi,%edx
         movl    %edx,_C_LABEL(atdevbase)          movl    %edx,_C_LABEL(atdevbase)
   
Line 598  begin:
Line 608  begin:
         call    _C_LABEL(initgdt)          call    _C_LABEL(initgdt)
         addl    $4,%esp          addl    $4,%esp
   
         movl    $TABLESIZE,%eax          movl    _C_LABEL(tablesize),%eax
         addl    %esi,%eax               # skip past stack and page tables          addl    %esi,%eax               # skip past stack and page tables
   
         pushl   %eax          pushl   %eax

Legend:
Removed from v.1.50.2.1  
changed lines
  Added in v.1.50.2.2

CVSweb <webmaster@jp.NetBSD.org>