[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/09/03 16:47:23 version, 2007/10/02 18:27:18
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.

Removed from v.  
changed lines
  Added in v.

CVSweb <webmaster@jp.NetBSD.org>