[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.118 and 1.119

version 1.118, 2016/05/14 06:49:34 version 1.119, 2016/05/14 08:34:00
Line 168  __KERNEL_RCSID(0, "$NetBSD$");
Line 168  __KERNEL_RCSID(0, "$NetBSD$");
 #endif /* XEN */  #endif /* XEN */
 #define RELOC(x)        _RELOC(_C_LABEL(x))  #define RELOC(x)        _RELOC(_C_LABEL(x))
   
   /* 32bit version of PG_NX */
   #define PG_NX32 0x80000000
   
 #ifndef PAE  #ifndef PAE
 #define PROC0_PDIR_OFF  0  #define PROC0_PDIR_OFF  0
 #else  #else
Line 234  __KERNEL_RCSID(0, "$NetBSD$");
Line 237  __KERNEL_RCSID(0, "$NetBSD$");
  */   */
         .data          .data
   
           .globl  _C_LABEL(nox_flag)
         .globl  _C_LABEL(cputype)          .globl  _C_LABEL(cputype)
         .globl  _C_LABEL(cpuid_level)          .globl  _C_LABEL(cpuid_level)
         .globl  _C_LABEL(esym)          .globl  _C_LABEL(esym)
Line 279  LABEL(lapic_tpr)
Line 283  LABEL(lapic_tpr)
         .long 0          .long 0
 END(lapic_tpr)  END(lapic_tpr)
 #endif  #endif
   
           .type   _C_LABEL(nox_flag), @object
   LABEL(nox_flag)         .long   0       /* 32bit NOX flag, set if supported */
   END(nox_flag)
         .type   _C_LABEL(cputype), @object          .type   _C_LABEL(cputype), @object
 LABEL(cputype)          .long   0       /* are we 80486, Pentium, or.. */  LABEL(cputype)          .long   0       /* are we 80486, Pentium, or.. */
 END(cputype)  END(cputype)
Line 550  try586: /* Use the `cpuid' instruction. 
Line 558  try586: /* Use the `cpuid' instruction. 
          */           */
         movl    $_RELOC(tmpstk),%esp          movl    $_RELOC(tmpstk),%esp
   
           /*
            * Retrieve the NX/XD flag. We use the 32bit version of PG_NX.
            */
           movl    $0x80000001,%eax
           cpuid
           andl    $CPUID_NOX,%edx
           jz      no_NOX
           movl    $PG_NX32,RELOC(nox_flag)
   no_NOX:
   
 /*  /*
  * There are two different layouts possible, depending on whether PAE is   * There are two different layouts possible, depending on whether PAE is
  * enabled or not.   * enabled or not.
Line 737  try586: /* Use the `cpuid' instruction. 
Line 755  try586: /* Use the `cpuid' instruction. 
         movl    %eax,%cr3          movl    %eax,%cr3
   
         /*          /*
          * 2. Enable paging and the rest of it.           * 2. Set NOX in EFER, if available.
            */
           movl    RELOC(nox_flag),%ebx
           cmpl    $0,%ebx
           je      skip_NOX
           movl    $MSR_EFER,%ecx
           rdmsr
           xorl    %eax,%eax
           orl     $(EFER_NXE),%eax
           wrmsr
   skip_NOX:
   
           /*
            * 3. Enable paging and the rest of it.
          */           */
         movl    %cr0,%eax          movl    %cr0,%eax
         orl     $(CR0_PE|CR0_PG|CR0_NE|CR0_TS|CR0_MP|CR0_WP|CR0_AM),%eax          orl     $(CR0_PE|CR0_PG|CR0_NE|CR0_TS|CR0_MP|CR0_WP|CR0_AM),%eax

Legend:
Removed from v.1.118  
changed lines
  Added in v.1.119

CVSweb <webmaster@jp.NetBSD.org>