[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.72.2.1 and 1.75

version 1.72.2.1, 2008/06/23 04:30:26 version 1.75, 2008/06/01 18:37:12
Line 1227  END(npx586bug1)
Line 1227  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/64), %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 1247  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          movnti  %eax, 32(%edx)
           movnti  %eax, 36(%edx)
           movnti  %eax, 40(%edx)
           movnti  %eax, 44(%edx)
           movnti  %eax, 48(%edx)
           movnti  %eax, 52(%edx)
           movnti  %eax, 56(%edx)
           movnti  %eax, 60(%edx)
           addl    $64, %edx
         decl    %ecx          decl    %ecx
         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.
    */
   ENTRY(sse2_copy_page)
           pushl   %ebp
           pushl   %ebx
           pushl   %esi
           pushl   %edi
           movl    20(%esp), %esi
           movl    24(%esp), %edi
           xorl    %ebp, %ebp
           .align  16
   1:
           movl    0(%esi,%ebp), %eax
           movl    4(%esi,%ebp), %ebx
           movl    8(%esi,%ebp), %ecx
           movl    12(%esi,%ebp), %edx
           movnti  %eax, 0(%edi,%ebp)
           movnti  %ebx, 4(%edi,%ebp)
           movnti  %ecx, 8(%edi,%ebp)
           movnti  %edx, 12(%edi,%ebp)
           movl    16(%esi,%ebp), %eax
           movl    20(%esi,%ebp), %ebx
           movl    24(%esi,%ebp), %ecx
           movl    28(%esi,%ebp), %edx
           movnti  %eax, 16(%edi,%ebp)
           movnti  %ebx, 20(%edi,%ebp)
           movnti  %ecx, 24(%edi,%ebp)
           movnti  %edx, 28(%edi,%ebp)
           addl    $32, %ebp
           cmpl    $PAGE_SIZE, %ebp
           jne     1b
         sfence          sfence
           popl    %edi
           popl    %esi
           popl    %ebx
         popl    %ebp          popl    %ebp
         ret          ret
 END(sse2_idlezero_page)  END(sse2_copy_page)

Legend:
Removed from v.1.72.2.1  
changed lines
  Added in v.1.75

CVSweb <webmaster@jp.NetBSD.org>