[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

version, 2007/08/20 18:38:12 version, 2007/10/09 13:37:55
Line 630  NENTRY(sigcode)
Line 630  NENTRY(sigcode)
 _C_LABEL(esigcode):  _C_LABEL(esigcode):
 /*  /*
  * void lgdt(struct region_descriptor *rdp);  
  * Load a new GDT pointer (and do any necessary cleanup).  
  * XXX It's somewhat questionable whether reloading all the segment registers  
  * is necessary, since the actual descriptor data is not changed except by  
  * process creation and exit, both of which clean up via task switches.  OTOH,  
  * this only happens at run time when the GDT is resized.  
         /* Reload the descriptor table. */  
         movl    4(%esp),%eax  
         lgdt    (%eax)  
         /* Flush the prefetch queue. */  
         jmp     1f  
 1:      /* Reload "stale" selectors. */  
         movl    $GSEL(GDATA_SEL, SEL_KPL),%eax  
         movw    %ax,%ds  
         movw    %ax,%es  
         movw    %ax,%gs  
         movw    %ax,%ss  
         movl    $GSEL(GCPU_SEL, SEL_KPL),%eax  
         movw    %ax,%fs  
         /* Reload code selector by doing intersegment return. */  
         popl    %eax  
         pushl   $GSEL(GCODE_SEL, SEL_KPL)  
         pushl   %eax  
  * void x86_flush()  
  * Flush instruction pipelines by doing an intersegment (far) return.  
         popl    %eax  
         pushl   $GSEL(GCODE_SEL, SEL_KPL)  
         pushl   %eax  
  * int setjmp(label_t *)   * int setjmp(label_t *)
  *   *
  * Used primarily by DDB.   * Used primarily by DDB.
Line 1005  ENTRY(sse2_copy_page)
Line 964  ENTRY(sse2_copy_page)
         popl    %ebx          popl    %ebx
         popl    %ebp          popl    %ebp
         ret          ret
    * void sse2_zero_page(void *pg)
    * Zero a page without polluting the cache.
           pushl   %ebp
           movl    %esp,%ebp
           movl    8(%esp), %edx
           movl    $PAGE_SIZE, %ecx
           xorl    %eax, %eax
           .align  16
           movnti  %eax, 0(%edx)
           movnti  %eax, 4(%edx)
           movnti  %eax, 8(%edx)
           movnti  %eax, 12(%edx)
           movnti  %eax, 16(%edx)
           movnti  %eax, 20(%edx)
           movnti  %eax, 24(%edx)
           movnti  %eax, 28(%edx)
           subl    $32, %ecx
           leal    32(%edx), %edx
           jnz     1b
           pop     %ebp
    * 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
           popl    %edi
           popl    %esi
           popl    %ebx
           popl    %ebp

Removed from v.  
changed lines
  Added in v.

CVSweb <webmaster@jp.NetBSD.org>