[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.75 and 1.76

version 1.75, 2008/06/01 18:37:12 version 1.76, 2008/06/02 14:41:41
Line 1227  END(npx586bug1)
Line 1227  END(npx586bug1)
 #endif /* NNPX > 0 */  #endif /* NNPX > 0 */
   
 /*  /*
  * void sse2_zero_page(void *pg)   * void sse2_idlezero_page(void *pg)
  *   *
  * Zero a page without polluting the cache.   * Zero a page without polluting the cache.  Preemption must be
    * disabled by the caller. Abort if a preemption is pending.
  */   */
 ENTRY(sse2_zero_page)  ENTRY(sse2_idlezero_page)
         pushl   %ebp          pushl   %ebp
         movl    %esp,%ebp          movl    %esp,%ebp
         movl    8(%esp), %edx          movl    8(%esp), %edx
         movl    $(PAGE_SIZE/64), %ecx          movl    $(PAGE_SIZE/32), %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 1247  ENTRY(sse2_zero_page)
Line 1250  ENTRY(sse2_zero_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)
         movnti  %eax, 32(%edx)          addl    $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
 END(sse2_zero_page)  2:
   
 /*  
  * 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_copy_page)  END(sse2_idlezero_page)

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

CVSweb <webmaster@jp.NetBSD.org>