[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 and 1.73

version, 2008/09/18 04:33:27 version 1.73, 2008/05/11 14:44:54
Line 648  try586: /* Use the `cpuid' instruction. 
Line 648  try586: /* Use the `cpuid' instruction. 
         movl    %cr0,%eax               # get control word          movl    %cr0,%eax               # get control word
                                         # enable paging & NPX emulation                                          # enable paging & NPX emulation
         orl     $(CR0_PE|CR0_PG|CR0_NE|CR0_TS|CR0_EM|CR0_MP),%eax          orl     $(CR0_PE|CR0_PG|CR0_NE|CR0_TS|CR0_EM|CR0_MP),%eax
         movl    %eax,%cr0               # and page NOW!          movl    %eax,%cr0               # and let's page NOW!
         pushl   $begin                  # jump to high mem          pushl   $begin                  # jump to high mem
         ret          ret
Line 927  ENTRY(cpu_switchto)
Line 927  ENTRY(cpu_switchto)
 #if defined(DIAGNOSTIC) && !defined(XEN)  #if defined(DIAGNOSTIC) && !defined(XEN)
         cmpl    $IPL_SCHED,CPUVAR(ILEVEL)          cmpl    $IPL_SCHED,CPUVAR(ILEVEL)
         jbe     0f          jbe     0f
         pushl   CPUVAR(ILEVEL)  
         pushl   $.Lstr          pushl   $.Lstr
         call    _C_LABEL(panic)          call    _C_LABEL(panic)
         addl    $8,%esp          addl    $4,%esp
 .Lstr:  .string "cpu_switchto: switching above IPL_SCHED (%d)\0"  .Lstr:  .string "cpu_switcho: switching above IPL_SCHED\0"
 0:  0:
 #endif  #endif
Line 1227  END(npx586bug1)
Line 1226  END(npx586bug1)
 #endif /* NNPX > 0 */  #endif /* NNPX > 0 */
 /*  /*
  * void sse2_idlezero_page(void *pg)   * void sse2_zero_page(void *pg)
  *   *
  * Zero a page without polluting the cache.  Preemption must be   * Zero a page without polluting the cache.
  * disabled by the caller. Abort if a preemption is pending.  
  */   */
 ENTRY(sse2_idlezero_page)  ENTRY(sse2_zero_page)
         pushl   %ebp          pushl   %ebp
         movl    %esp,%ebp          movl    %esp,%ebp
         movl    8(%esp), %edx          movl    8(%esp), %edx
         movl    $(PAGE_SIZE/32), %ecx          movl    $PAGE_SIZE, %ecx
         xorl    %eax, %eax          xorl    %eax, %eax
         .align  16          .align  16
 1:  1:
         cmpl    $0, CPUVAR(RESCHED)  
         jnz     2f  
         movnti  %eax, 0(%edx)          movnti  %eax, 0(%edx)
         movnti  %eax, 4(%edx)          movnti  %eax, 4(%edx)
         movnti  %eax, 8(%edx)          movnti  %eax, 8(%edx)
Line 1250  ENTRY(sse2_idlezero_page)
Line 1246  ENTRY(sse2_idlezero_page)
         movnti  %eax, 20(%edx)          movnti  %eax, 20(%edx)
         movnti  %eax, 24(%edx)          movnti  %eax, 24(%edx)
         movnti  %eax, 28(%edx)          movnti  %eax, 28(%edx)
         addl    $32, %edx          subl    $32, %ecx
         decl    %ecx          leal    32(%edx), %edx
         jnz     1b          jnz     1b
         sfence          sfence
         incl    %eax  
         pop     %ebp          pop     %ebp
         ret          ret
 2:  END(sse2_zero_page)
    * void sse2_copy_page(void *src, void *dst)
    * Copy a page without polluting the cache.
           pushl   %ebp
           pushl   %ebx
           pushl   %esi
           pushl   %edi
           movl    20(%esp), %esi
           movl    24(%esp), %edi
           movl    $PAGE_SIZE, %ebp
           .align  16
           movl    0(%esi), %eax
           movl    4(%esi), %ebx
           movl    8(%esi), %ecx
           movl    12(%esi), %edx
           movnti  %eax, 0(%edi)
           movnti  %ebx, 4(%edi)
           movnti  %ecx, 8(%edi)
           movnti  %edx, 12(%edi)
           subl    $16, %ebp
           leal    16(%esi), %esi
           leal    16(%edi), %edi
           jnz     1b
         sfence          sfence
           popl    %edi
           popl    %esi
           popl    %ebx
         popl    %ebp          popl    %ebp
         ret          ret
 END(sse2_idlezero_page)  END(sse2_copy_page)

Removed from v.  
changed lines
  Added in v.1.73

CVSweb <webmaster@jp.NetBSD.org>